这个例子介绍一下 STM32L552的USB功能的使用,在这里,STM32L552做USB Device,RK3399做USB Host 首先在cubemx里面选上USB外设与USB的协议栈
然后USB外设那里选择USB作为Device
然后在USB协议栈里面需要选择使用何种协议,这里笔者用的是CDC,然后要配置一下PID与VID。注意,对于某些平台,它识别USB外设的时候只认PID VID,这时PID VID就有用,而某些平台它使用的是USB的标识符(比如CDC-ACM或者RNDIS这些),这时PID VID就没用。
另外注意要打开USB的中断功能,不然RK3399端无法识别到设备描述符 此外需要配置一下L552 USB的TX RXbuffer大小
在上一节的基础上生成工程,这里可以先编译一下,然后下载到STM32L552板子上面。将STM32L552的USB Type-C与RK3399板子的USB口连接,如果在RK3399的Linux内核里面已经配置了USB转串口的驱动,这时RK3399板子上面可以发现如下信息
在/dev下面可以看到ttyUSB设备,这说明设备已经正常识别
然后在STM32L552的工程里面添加一下用户代码,主要就是USB上面 通信的数据,协议那些,这里只用最简单的示例 void StartDefaultTask(void *argument) { /*USER CODE BEGIN StartDefaultTask */ intret; chartest_string[]="hello,this is STM32L552n"; /*Infinite loop */ for(;;) { osDelay(500); memcpy(UserTxBufferFS,test_string,sizeof(test_string)); CDC_Transmit_FS(UserTxBufferFS,sizeof(test_string)); } /*USER CODE END StartDefaultTask */ } 然后选择进入硬件调试模式,将UserTxBufferFS UserRxBufferFS两个数组添加到观察窗口 而在RK3399端,可以通过echo cat方式发送接收数据
可以发现,当RK3399发送数据的时候,UserRxBufferFS里面会收到相应的数据,而RK3399也可以收到L552通过CDC_Transmit_FS这个API发送的数据。
|