STM32
直播中

吴湛

9年用户 947经验值
擅长:可编程逻辑
私信 关注
[问答]

请问STM32F105如何实现USB BULK传输?

请问STM32F105如何实现USB BULK传输?

回帖(1)

高文利

2021-11-23 11:20:26
由于项目需要,需要USB来传输,之前试的HID模式是已经调通,HID基于中断传输,一毫秒侦测一次,每次的传输量为64字节,一般传输量小的可以采用这种模式,实时性也高,并且开发上位机也方便,不用自己再搞驱动什么的,但是满足不了我的需求,后面查资料开始采用bulk模式




  • 基于CUBEMX配置USB工程

1.1:时钟
   我的芯片采用外部8M的晶振,超频到72M,配置USB时钟48M






1.2:USB配置
USB的模式选择device模式,作为从机。







然后选择Middleware-USB_DEVICE,选择模式为CDC。
USB2.0标准下定义了很多子类,有音频类,CDC类,HID,打印,大容量存储类,HUB,智能卡等等,USB CDC类的通信部分主要包含三部分:枚举过程、虚拟操作和数据通信。CDC具体研究的话,可以查看USB官网资料,以及ST关于CDC的介绍







  PID和VID是USB设备的唯一识别码,默认的CUBEMX生成的,插入电脑会显示ST Virtual Port,ST官网对应的也有相关的驱动。用户可以根据自己选择定义PID和VID,以及修改描述符,驱动的话自己开发。
   然后生成工程代码。




  • 工程代码修改

2.1:u***d_desc.c 设备描述符的修改
配置如下
        





2.2:u***d_cdc.c 修改配置信息
   USB的配置信息有很多包括配置描述符 接口描述符、端点描述符等等,但属于其配置信息, 其位于u***d_cdc.c文件中,对应有三处


  • USBD_CDC_CfgHSDesc[USB_CDC_CONFIG_DESC_SIZ]
  • USBD_CDC_CfgFSDesc[USB_CDC_CONFIG_DESC_SIZ]
  • USBD_CDC_OtherSpeedCfgDesc[USB_CDC_CONFIG_DESC_SIZ]

配置信息采用数组来存储。HS代表的是high speed高速USB的配置信息,FS代表full speed信息,然后还有other speed,我目前采用的是F105的芯片,支持full speed而不支持high speed。






如果怕出什么问题,可以将三个配置信息默认配置一样。
数组的长度对应做下修改
USB_CDC_CONFIG_DESC_SIZ  长度为32
#define USB_CDC_CONFIG_DESC_SIZ                     32U
2.3:u***d_cdc.c USB初始化以及发送和接收
2.3.1 USB初始换函数


  • CDC_IN_EP  对应的发送数据的端点

         0x81U  /* EP1 for data IN */


  • CDC_OUT_EP 对应接收数据的端点

         0x01U  /* EP1 for data OUT */


  • CDC_CMD_EP  对应的CDC 命令端点

          0x82U   /* EP2 for CDC commands */枚举工程中会用到
        











    • USB发送函数




                        USBD_LL_Transmit(&hU***DeviceFS, CDC_IN_EP,USBD_RXBuffer2,USBD_RxCnt2);
                         函数定义在u***d_conf.c文件中。
                        









    • USB接收函数




      接收函数的话会在中断里面调用。
   




网上看到好多使用双缓冲用来接收的用来提高速度。
定义两个数组用来接收
uint8_t USBD_RXBuffer1[CDC_DATA_FS_MAX_PACKET_SIZE];
uint8_t USBD_RXBuffer2[CDC_DATA_FS_MAX_PACKET_SIZE];
uint8_t  BufFlag = 0x01;        //用于判断两个缓冲区是否有数据

具体速度有没有提高,没怎么试过
2.4:MAIN函数
  Main函数主要实现的就是,接收PC端发送的数据,然后同样的数据在发送的PC端。
        




      
举报

更多回帖

发帖
×
20
完善资料,
赚取积分