USB Host Serial 示例
源码位置: samples/subsys/usb/host/cherryusb_serial 查看源码
功能说明
演示如何使用 CherryUSB 在 ARCS 和 VenusA 芯片上实现 USB Host Serial 功能,与 USB 串口设备通信。
示例支持以下 USB 串口设备驱动:
标准 CDC ACM,例如 Arduino 和部分 USB 转串口设备
CH340/CH341
FTDI FT232
Silicon Labs CP210x
设备枚举成功后,示例会打开串口并配置为 115200 8N1,然后执行 1024 字节串口回环测试:发送 0x00–0xFF 循环递增的数据,接收后逐字节校验。
支持平台
开发板 |
芯片系列 |
状态 |
|---|---|---|
|
ARCS |
支持 |
|
VenusA |
支持 |
VenusA 平台使用独立的 USB 时钟寄存器配置。当前适配只修改了示例层,没有修改 CherryUSB 核心、MUSB Host 驱动或 SoC 底层驱动。
硬件连接
USB Host 硬件要求
开发板的 USB Type-C 接口默认作为 Device 使用。作为 Host 使用时,需要完成对应的 Host 硬件配置:
VBUS 直接供电 5 V,给外部 USB 串口设备供电
CC1 和 CC2 分别通过 22 KΩ 电阻上拉到 VBUS
使用支持数据通信的 USB 线
将 USB 串口设备连接到开发板的 USB Host Type-C 接口。
回环测试设备
将 USB 串口设备的 TX 和 RX 短接,使发送数据能够回到接收端。也可以在设备的另一端运行串口回环程序。
示例流程
初始化 USB Host 控制器和 PHY
等待 USB 串口设备插入
枚举设备并匹配 CDC ACM、CH340、FTDI 或 CP210x 驱动
注册串口设备节点:CDC ACM 通常为
/dev/ttyACM0,USB 转串口芯片通常为/dev/ttyUSB0配置串口为 115200 8N1
发送、接收并校验 1024 字节递增测试数据
打印回环测试结果,并在设备断开后清理资源
编译
# ARCS EVB
./build.sh -S samples/subsys/usb/host/cherryusb_serial \
-B build/cherryusb_serial -DBOARD=arcs_evb
# VenusA RD EVB
./build.sh -S samples/subsys/usb/host/cherryusb_serial \
-B build/cherryusb_serial_venusa -DBOARD=venusa_rd_evb
也可以使用 SDK 文档中的通用 sample build 命令编译。
烧录
# ARCS EVB
./tools/burn/cskburn -C arcs -s /dev/ttyACM0 -b 3000000 0x0 \
build/cherryusb_serial/arcs.bin
# VenusA RD EVB
./tools/burn/cskburn -C venusa -s /dev/ttyACM1 -b 3000000 0x0 \
build/cherryusb_serial_venusa/arcs.bin
烧录串口和日志串口可以根据实际设备号调整。VenusA 使用 -C venusa,ARCS 使用 -C arcs。
验证方法
完成 USB Host 硬件配置。
将 USB 串口设备的 TX 和 RX 短接。
编译并烧录对应平台的固件。
通过调试串口以 921600 波特率查看日志。
插入 USB 串口设备,等待设备枚举和回环测试完成。
最终成功标志:
[SUCCESS] All 1024 bytes verified correctly! (0 errors)
========================================
Serial Loopback Test: SUCCESS ✓
========================================
典型日志流程如下:
[INIT] Configuring USB PHY for Host mode...
[INIT] USB Host PHY configured:
- IDDIG = 0 (Host mode)
- Clock enabled
- 16-bit data bus
[INFO] USB Host initialized, waiting for device...
[I/usbh_core] New device found,idVendor:0403,idProduct:6001,bcdDevice:0600
[I/usbh_core] Enumeration success, start loading class driver
[I/usbh_core] Loading ftdi class driver on interface 0
[I/usbh_serial] Register Serial Class: /dev/ttyUSB0 (ftdi)
[INFO] Serial device opened successfully
[INFO] Configuring serial port: 115200 8N1
[TX] Sent 1024 bytes, total: 1024/1024
[RX] Received ... total: 1024/1024
[SUCCESS] All 1024 bytes verified correctly! (0 errors)
不同平台、USB 串口芯片和固件版本的 VID/PID、设备节点、USB 事件顺序以及数据包大小可能不同。
配置说明
prj.conf 默认启用以下 USB 串口驱动:
CONFIG_CHERRYUSB_HOST_CDC_ACM=y
CONFIG_CHERRYUSB_HOST_CH34X=y
CONFIG_CHERRYUSB_HOST_FTDI=y
CONFIG_CHERRYUSB_HOST_CP210X=y
如果只需要支持一种设备,可以关闭其他驱动以减小固件大小。所有驱动通过 CONFIG_USBHOST_SERIAL 提供统一的串口抽象层。
核心 API
API |
说明 |
|---|---|
|
初始化 USB Host 协议栈 |
|
打开 USB 串口设备 |
|
关闭 USB 串口设备 |
|
配置串口参数 |
|
非阻塞发送数据 |
|
非阻塞接收数据 |
|
设备连接后启动测试线程 |
|
设备断开后停止测试线程 |
注意事项
USB Host 模式必须能够提供 VBUS 5 V,否则外部 USB 设备可能无法枚举。
回环测试必须将 TX 和 RX 短接,或使用软件回环程序。
示例使用非阻塞收发,发送和接收可能分成多个数据包完成。
如果日志停留在
Please connect USB Serial device,请检查 VBUS、CC 上拉、电缆、设备供电和 USB 接口连接。VenusA 平台已验证固件能够编译、烧录并启动 USB Host;插入具体 USB 串口设备后的枚举和回环结果需要以实际外设日志为准。