USB设备

USB 控制器驱动包括设备驱动和主机驱动,我们只启用设备驱动。 它有两层:硬件访问层(HAL)和RT-Thread的适配层。
HAL 提供用于访问 USB 控制器外围设备的寄存器的基本 API。 有关详细信息,请参阅 USB HAL 的 API 文档。
适配层提供对 RT-Thread 驱动框架的支持。 用户可以使用 RT-Thread POSIX 驱动程序接口对 USB 设备进行编程。 请参阅 RT-Thread 驱动程序的 API 文档。
主要功能包括:

  • Mstorage 存储支持

  • VCOM 支持

  • 支持复合设备

  • 最多 8 个端点

备注

只有SF32LB58X系列支持USB 2.0 high speed mode, SF32LB55X/SF32LB56X仅支持USB full/low speed.

驱动配置

硬件驱动程序可以用作 mstorage、ecm、hid、vcom。 可以使用menuconfig 工具为每个项目选择函数及其外设,通常保存在C 头文件中。 默认情况下,配置保存为 rtconfig.h

以下示例显示在一个项目头文件中定义的标志,该项目使用 MSTORAGE 和 VCOM。 为 BSP 选择配置的步骤:

  • 在项目下的命令中输入“menuconfig”

  • 选择“RTOS —>”

  • 选择“On-chip Peripheral Driver—>”

  • 选择“Enable USB Device”启用USB驱动,定义宏BSP_USING_USBD

#define BSP_USING_USBD

为操作系统选择配置的步骤(在 menuconfig 主菜单中):

  • 选择“RTOS”—>

  • 选择“RT-Thread Components—>”

  • 选择“Device Driver—>”

  • 选择“Using USB —>”

  • 选择“Enable USB device” 启用 USB 设备模式,定义 RT_USING_USB_DEVICE

  • 启用“Enable composite device”

  • 启用“Enable to use device as CDC device” 使能将设备用作CDC设备 USB可以用作CDC VCOM设备,定义RT_USB_DEVICE_CDC

  • 启用“Enable to use device as Mass Storage device” 启用将设备用作大容量存储设备 USB 可以用作 mstorage 设备,定义 RT_USB_DEVICE_MSTORAGE

  • “msc class disk name” 输入存储设备,通常我们使用flash,所以输入mtd设备名如”flash1”

#define RT_USING_USB_DEVICE
#define RT_USBD_THREAD_STACK_SZ 4096
#define USB_VENDOR_ID 0x0FFE
#define USB_PRODUCT_ID 0x0001
#define RT_USB_DEVICE_COMPOSITE
#define RT_USB_DEVICE_CDC
#define RT_USB_DEVICE_NONE
#define RT_USB_DEVICE_MSTORAGE
#define RT_VCOM_TASK_STK_SIZE 512
#define RT_VCOM_SERNO "32021919830108"
#define RT_VCOM_SER_LEN 14
#define RT_VCOM_TX_TIMEOUT 1000
#define RT_USB_MSTORAGE_DISK_NAME "flash1"

配置完成后,用户需要在所有需要访问驱动程序的源代码中包含头文件。

使用USB设备

在上述配置中,插入USB接口,PC上可以识别出USB 硬盘和一个USB串口,使用方式和其他USB硬盘/串口一致。