基于STM32Cube USB设备库应用的几个常见问题

分享到:

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

继续阅读
欧盟“搓搓手”:就决定是你了,苹果!

由于涉嫌非法迫使智能手机制造商安装其应用程序,Google 将面临来自欧盟的 43 亿巨额罚单。然而欧盟才刚「搞」完 Google,现在又准备将矛头转向苹果了。

意法半导体独立式USB Type-C输电控制器,让设备快速、轻松地升级到Type-C

2018年7月20日,中国——意法半导体推出STUSB4500独立式USB Type-C 输电控制器。集供电和充电为一体的标准USB-C接口兼具便利性和环境效益。如今STUSB4500将把这些优势延伸到到各类消费、工业和医疗产品。

意法半导体推出STM32 USB TCPM软件,简化USB-PD 3.0输电协议的迁移

提供内设端口控制器的双芯片方案,已获得完全认证。为帮助工程师在新开发产品或在原有产品设计中引入最新的USB Power Delivery充电功能和多用途的USB Type-C™连接器,意法半导体新推出一款支持STM32 *通用微控制器的Type-C 端口管理(TCPM)软件。

意法半导体高能效单片三相三路电流检测BLDC驱动器:延长便携设备和物联网产品续航时间

中国,2018年5月2日——意法半导体推出业界首款同时适用于单电阻采样和三电阻采样的低电压无刷电机驱动器STSPIN233。该电机驱动器纤巧紧凑,仅为3mm x 3mm的封装内集成有200mΩ的 1.3Arms功率级。不仅如此,STSPIN233的待机电流也创下业内最低功耗记录,能达到低于80nA。

意法半导体STM32软件包,让简单的物联网产品具有亚马逊的Alexa技术

2018年4月2日,中国——意法半导体的X-CUBE-AVS软件包让亚马逊的Alexa语音服务(AVS)能够运行在STM32*微控制器上,使具有云智能功能(自动语音识别和自然语言理解)的高级会话用户界面出现在简单的物联网设备上,例如,智能家电、家庭自动化设备和办公设备。