简介:简单总结基于STM32Cube USB设备库应用的几个常见问题,如如何让大容量存储类驱动支持多个逻辑盘【LUN】?USB设备库是否可以任意运行在FULL SPEED或HIGH SPEED模式?等
1、如何动态地修改设备描述符或字符串描述符?
在文件usbd_desc.c里,与设备和字符串相关的描述符可以通过GetDescriptor的回调函数进行动态调整。
2、如何让大容量存储类驱动支持多个逻辑盘【LUN】?
在文件usbd_msc_storage_xxx.c中修改STORAGE_LUN_NBR。【xxx代表使用的存储介质】
STORAGE_Inquirydata数组里包含了每个LUN的标准查询数据【inquiry data】。
比如用到2个LUN。
constint8_t STORAGE_Inquirydata[] = {
/*LUN 0 */
0x00,
0x80,
0x02,
0x02,
(USBD_STD_INQUIRY_LENGTH- 5),
0x00,
0x00,
0x00,
'S','T', 'M', ' ', ' ', ' ', ' ', ' ', /* Manufacturer:
8bytes */
'm','i', 'c', 'r', 'o', 'S', 'D', ' ', /* Product:
16Bytes */
'F','l', 'a', 's', 'h', ' ', ' ', ' ',
'1','.', '0' ,'0', /* Version: 4 Bytes */
/*LUN 1 */
0x00,
0x80,
0x02,
0x02,
(USBD_STD_INQUIRY_LENGTH- 5),
0x00,
0x00,
0x00,
'S','T', 'M', ' ', ' ', ' ', ' ', ' ', /* Manufacturer:8 bytes */
'N','a', 'n', 'd', ' ', ' ', ' ', ' ', /* Product:16 Bytes */
'F','l', 'a', 's', 'h', ' ', ' ', ' ',
'1','.', '0' ,'0', /* Version: 4 Bytes */
};
3、端点的地址在哪里定义?
端点地址一般在各个类驱动的头文件里定义。
比如MSC类的端点定义就在 usbd_msc.h定义如下:
#define MSC_EPIN_ADDR 0x81 //For Endpoint 1 IN
#defineMSC_EPOUT_ADDR 0x01 // For Endpoint 1 OUT
4、USB设备库是否可以任意运行在FULL SPEED或HIGH SPEED模式?
是的,该库支持USB OTG FS和USBOTG HS模式。其中,USB OTG FS内核仅支持FS模式,USB OTG HS内核既支持FS模式也支持HS模式。
用户通过如下宏选择合适的USB核:
"USE_USB_HS"// USB High Speed (HS) Core
"USE_USB_FS"// USB Full Speed (FS) Core
"USE_USB_HS"and "USE_USB_HS_IN_FS" // USBHigh Speed (HS) Core in FS mode
5、如何在USB设备类驱动里面修改或增加端点?
a.使用USBD_LL_OpenEP()进行端点的初始化。
b.在usb_conf.c里为新定义的端点配置发送或接收FIFO。
以STM32F2、STM32F4等支持OTG功能的MCU为例。
用到HAL_PCD_SetRxFiFo()和HAL_PCD_SetTxFiFo()配置TX/RX的FIFO。
注意配置TX和RX FIFO的大小时不得超过对应的USB核所拥有的全部FIFO.
USBOTG FS core的FIFO 为320 x 32 bits(1.25 Kbytes)
USBOTG HS core的FIFO 为1024 x 32bits (4 Kbytes)
对于仅支持FS核的STM32F0,STM32L0, STM32F1 and STM32F3系列,
使用HAL_PCD_PMA_Config() 进行PMA的配置。
6. USB设备库与实时操作系统兼容吗?
是的,该USB 设备库可以配合RTOS使用。其中CMSIS RTOS的封装器实现对OS内核的抽象。
关于STM32CUBE USB设备库应用介绍的更多细节,请查看ST官方提供的使用手册UM1734。
上一篇:基于STM32F103的贴片机控制系统的设计与实现
下一篇:STM32再学习——启动流程分析
推荐阅读最新更新时间:2024-11-17 11:10
设计资源 培训 开发板 精华推荐
- #第六届立创电赛#语音识别+实时时钟+智能夜灯+音乐频谱
- 使用 NXP Semiconductors 的 TDA8933 的参考设计
- esp32_vision_v3.2_gc9a01_rel
- EB5510,使用 SPT5510、16 位、高速数模转换器的评估板
- 具有基本抑制功能的 LF18CDT-TR 1.8V 低压降稳压器的典型应用
- DC971A,使用 LTC3811EUHF 高速双、多相降压 DC-DC 控制器的演示板
- 使用 Analog Devices 的 LT1579CGN-5 的参考设计
- AKD4127-A,AK4127 数字采样率转换器评估板
- AD8145-EVALZ,用于 AD8145 高速、三路差分接收器和比较器的评估板
- LTC3615EUF-1 双路 3A 同步降压型 DC/DC 转换器用于软启动电路的典型应用