USB 概述
简介
支持的芯片[ RTL8721Dx ][ RTL8730E ][ RTL8721F ]
USB(Universal Serial Bus)是一种通用的串行总线接口,用于连接主机和外部设备。
USB 技术规范可以从网站 http://www.usb.org/developers 获取。
特性
兼容性:兼容 USB2.0 高速(High-speed 480 Mbps)和全速(Full-speed 12 Mbps)模式
支持以下 USB 主机解决方案:
CDC ACM:支持数据双向透传,适用于串口通信、数据采集及自定义通信协议等应用
CDC ECM:可挂载以太网模组作为网络接口(NIC),或作为桥接器实现模组与路由器的网络通信
MSC:支持大容量存储设备(如 U 盘、读卡器),适用于智能音箱、数据记录及 OTA 固件升级等应用
UAC:支持 Type-C 耳机等数字音频设备,提供音频输出与音量控制功能
UVC:支持 USB 摄像头,支持 MJPEG、H264、YUV 格式图像截取和视频流转发,适用于智能门锁、安防监控及图像采集等应用
支持多种类型的复合主机:
CDC ACM + CDC ECM:支持 4G 蜂窝模组,适用于物联网网关及移动热点等应用
HID + UAC:同时支持人机交互与音频播放,实现按键线控与音频播放的一体化控制
Vendor (自定义类):支持非标准主机类的定制化开发,满足特殊应用场景的个性化需求
支持以下 USB 设备解决方案:
CDC ACM:支持数据双向透传,适用于串口通信、数据采集及自定义通信协议等应用
HID:模拟键盘、鼠标等 HID 外设,实现丰富的人机交互控制
MSC:支持 SD 卡、Flash 作为存储媒介, 实现数据存储功能
UAC:作为 USB 音频设备端,接收并处理音频流
支持多种类型的复合设备 (Composite Device):
CDC ACM + HID:同时支持透传通信与交互控制
CDC ACM + MSC:同时支持透传通信与数据存储
CDC ACM + UAC:同时支持透传通信与音频播放
HID + UAC:同时支持交互控制与音频录放
Vendor:支持非标准设备类的定制化开发,满足特殊应用场景的个性化需求
高级特性:
双角色切换(DRD):支持 USB 主机和设备双角色动态切换
设备模式高度可定制:支持描述符全定制,包括 VID/PID、字符串描述符及端点映射
主机模式灵活枚举:支持自定义设备匹配策略(如基于 VID/PID 或 Class/Protocol 匹配)、描述符自动解析及自适应速度协商
核心驱动参数可配置:允许开发者灵活配置速度模式、数据缓存 (DFIFO) 深度(仅限专用 FIFO 模式),以及 USB ISR 与核心线程的调度优先级
备注
RTL8721Dx 仅支持全速设备模式
硬件配置
支持设备模式
支持 USB 2.0 全速(12 Mbps)模式
支持 DMA 传输模式
设备模式下的端点配置如下:
EP0:INOUT,仅用于控制传输
EP1:IN
EP2:OUT
EP3:IN
EP4:OUT
EP5:INOUT
备注
其中,最多仅支持一个周期性 IN 端点。
共享缓存模式,缓存深度(单位 DWORD)配置如下:
总缓存:最大 768
共享接收缓存:最大 472
共享非周期性发送缓存:最大 32
专用周期性发送缓存:最大 256
备注
DMA 模式下,缓存需要为 DMA 寄存器预留 8 个 DWORD。
支持主机、设备和 OTG 模式
支持 USB 2.0 高速(480 Mbps)和全速(12 Mbps)模式
支持 DMA 传输模式
设备模式下的端点配置如下:
EP0:INOUT
EP1:IN
EP2:OUT
EP3:IN
EP4:OUT
EP5:INOUT
其中,EP0 仅用于控制传输,仅支持一个周期性 IN 端点。
主机模式下支持 8 个物理通道
共享缓存模式,缓存深度(单位 DWORD)配置如下:
总缓存:最大 1024
主机模式下
共享接收缓存:最大 512
共享非周期性发送缓存:最大 256
共享周期性发送缓存:最大 256
设备模式下
共享接收缓存:最大 512
共享非周期性发送缓存:最大 256
专用周期性发送缓存:最大 256
备注
DMA 模式下,缓存需要为 DMA 寄存器预留 8 个 DWORD。
内置 UTMI+ PHY
主机模式下支持连接 hub
主机模式下支持自动 ping
支持主机和设备模式
支持 USB 2.0 高速(480 Mbps)和全速(12 Mbps)模式
支持 DMA 传输模式
设备模式下的端点配置如下:
EP0:INOUT
EP1:IN
EP2:INOUT
EP3:INOUT
EP4:IN
EP5:OUT
EP6:INOUT
EP7:OUT
主机模式下支持 12 个物理通道
共享缓存模式,缓存深度(单位 DWORD)配置如下:
总缓存:最大 1024
主机模式下
共享接收缓存:最大 1024
共享非周期性发送缓存:最大 1024
共享周期性发送缓存:最大 1024
设备模式下
共享接收缓存:最大 1024
6 个专用发送缓存,最大深度分别为:
Tx FIFO 0: 32
Tx FIFO 1: 16
Tx FIFO 2: 256
Tx FIFO 3: 32
Tx FIFO 4: 256
Tx FIFO 5: 128
内置 UTMI+ PHY
主机模式下支持连接 hub
主机模式下支持自动 ping
软件协议栈概述
软件架构
协议栈架构如图所示:
各软件模块的功能如下:
USB 硬件抽象层: 实现电源管理、PHY 参数校准等 SoC 相关的硬件驱动,为上层 USB 核心驱动提供统一的硬件抽象层接口
USB 主机/设备核心驱动:包含 USB IP 相关的硬件驱动、主机/设备控制器驱动、总线枚举和传输调度等核心控制逻辑,为上层 USB 主机/设备类驱动提供统一的核心驱动接口
USB 主机/设备类驱动: 兼容 USB2.0 规范的主机/设备类驱动,基于类驱动 API,开发者可快速实现基于标准类的 USB 解决方案
USB 主机/设备解决方案示例: 为开发者提供 USB 主机/设备解决方案的设计参考
USB 硬件抽象层驱动
硬件抽象层驱动提供了 SoC 相关的 USB 电源管理、中断处理和 PHY 校准接口,并定义了上层 USB 核心驱动所需的系统常量。
备注
硬件抽象层默认编入 USB 主机/设备/DRD 核心库文件,不允许开发者修改
USB PHY 校准数据在 SoC 出厂前确定,原则上不需要开发者修改,如遇疑似校准导致的兼容性问题(如枚举失败、反复断线重连),请联系 Realtek FAE
USB 设备核心驱动
USB 主机核心驱动
文件目录结构
USB 路径别名
为简化描述,下文使用如下路径别名。
别名 |
指代路径 |
|---|---|
|
{SDK}/component/soc/amebaxxx/fwlib/include |
|
{SDK}/component/usb |
|
{SDK}/component/usb/device |
|
{SDK}/component/usb/host |
|
{SDK}/component/example/usb |
|
{SDK}/component/soc/amebaxxx/project/project_xxx/lib/application |
USB 硬件抽象层
路径 |
说明 |
|
USB硬件抽象层API定义头文件 |
USB 核心驱动
路径 |
说明 |
|
USB通用核心驱动API定义头文件 |
|
USB设备核心驱动API定义头文件 |
|
USB设备核心驱动库文件,用于设备类驱动和应用开发 |
路径 |
说明 |
|
USB通用核心驱动API定义头文件 |
|
USB设备核心驱动API定义头文件 |
|
USB主机核心驱动API定义头文件 |
|
USB综合核心驱动库文件,用于DRD类驱动和应用开发 |
|
USB设备核心驱动库文件,用于设备类驱动和应用开发 |
|
USB主机核心驱动库文件,用于主机类驱动和应用开发 |
路径 |
说明 |
|
USB通用核心驱动API定义头文件 |
|
USB设备核心驱动API定义头文件 |
|
USB主机核心驱动API定义头文件 |
|
USB综合核心驱动库文件,用于DRD类驱动和应用开发 |
|
USB设备核心驱动库文件,用于设备类驱动和应用开发 |
|
USB主机核心驱动库文件,用于主机类驱动和应用开发 |
USB 类驱动
路径 |
说明 |
|
CDC ACM设备类驱动 |
|
复合功能设备类驱动 |
|
HID设备类驱动 |
|
INIC设备类驱动(非标) |
|
MSC设备类驱动 |
|
UAC设备类驱动 |
|
CDC ACM主机类驱动 |
|
CDC ECM主机类驱动 |
|
MSC主机类驱动 |
|
UVC主机类驱动 |
USB 解决方案示例
路径 |
说明 |
|
基于CDC ACM的透传设备解决方案示例 |
|
基于CDC ACM和HID的复合功能设备解决方案示例 |
|
基于CDC ACM和UAC的复合功能设备解决方案示例 |
|
基于HID和UAC的复合功能设备解决方案示例 |
|
HID设备解决方案示例 |
|
INIC设备解决方案示例 |
|
基于MSC的存储设备解决方案示例 |
|
基于UAC的音频设备解决方案示例 |
|
基于CDC ACM的透传主机解决方案示例 |
|
基于CDC ECM的网络通信主机解决方案示例 |
|
基于MSC的存储主机解决方案示例 |
|
基于UVC的多媒体主机解决方案示例 |
|
基于CDC ECM的网络通信bridge解决方案示例 |
|
基于MSC主机和MSC设备的DRD解决方案示例 |
Host 解决方案,参考 Host 解决方案
Device 解决方案,参考 Device 解决方案
USB 认证
USB 认证一般指 USB-IF 认证,即通过 USB-IF 官方的电气、协议和功能测试,确保设备符合 USB 规范, 以保障设备间的互操作性、安全性和可靠性,认证通过后即可合法使用 USB 标志(如 USB Logo)。
USB-IF 认证非强制性过程,但以下情况必须对 USB 产品进行认证:
产品需要使用 USB 标志
产品宣传资料中宣称符合 USB 规范或提及 USB 认证
关于 USB-IF 认证的具体流程和要求,请查阅 https://www.usb.org 相关文档或联系 USB-IF 授权测试实验室。
与 USB 设备相关的其它认证还有:
在欧美市场销售 USB 设备需要通过 FCC、CE 等认证,否则可能面临法律风险
车载 USB 设备需要通过 ISO 26262 车载电子系统的功能安全认证
为确保 USB 设备与 Windows 系统兼容,或需要在产品包装和宣传材料中使用“Certified for Windows”徽标,需要通过 Windows 徽标认证
苹果专用 USB 设备需要通过 MFi 认证
电气一致性测试
概述
USB 电气一致性测试旨在验证 USB 设备、主机或集线器的电气特性是否符合 USB-IF 规范要求,以确保系统的稳定性与互操作性。测试范围涵盖信号质量、电源管理、时序参数等关键电气性能指标。
官方测试规范请参考:https://www.usb.org/usb2
使用范围
本测试方案适用于 Ameba 系列全平台(包括 Linux、RTOS、Zephyr 等)。验证产品是否满足 USB CTS (Compliance Test Suite) 标准,可使用以下的测试固件与指令集。
技术支持
如在测试过程中遇到问题,请联系 技术支持 获取专业协助。
测试固件
请按照以下步骤获取并部署测试固件:
下载固件:从下方的固件下载地址获取最新的测试固件文件。
烧写固件:参考 Flash 烧写指南 ,将固件刷入设备以更新至测试版本
测试指令
本节测试指令基于 Agilent 5485xA 示波器编写。若使用其他型号的设备进行电气特性验证,请参考下表说明,获取适用的命令。
类型 |
命令 |
描述 |
|---|---|---|
RESET |
reboot |
重启测试版 所有测试用例执行前的必要步骤,旨在清除残留状态,确保系统处于确定的初始环境。 |
INIT |
usbd init |
USB Device 初始化 在重启后执行,负责加载驱动程序并配置 USB 设备环境,为后续测试建立基础。 |
DEINIT |
usbd deinit |
释放 USB Device 资源。 销毁已分配的句柄、内存及中断资源,使设备完全回归到未初始化状态。 |
类型 |
命令 |
描述 |
|---|---|---|
RESET |
reboot |
重启测试版 所有测试用例执行前的必要步骤,确保系统处于已知初始状态。 |
INIT |
usbh init |
USB host 初始化 在重启后执行,用于加载驱动并配置 USB 主机环境,为后续测试做准备。 |
DEINIT |
usbh deinit |
释放 USB Host 资源。 销毁已初始化的句柄、内存及中断资源,使 Host 回归未初始化状态。 |
TEST_J |
usbh tmod 1 |
持续驱动 J 状态。 用于测量数据线在未被动态驱动时的静态电压电平。 |
TEST_K |
usbh tmod 2 |
持续驱动 K 状态。 用于测量数据线在未被动态驱动时的静态电压电平。 |
TEST_SE0_NAK |
usbh tmod 3 |
SE0 与 NAK 握手测试。 验证设备在端点 0 (EP0) 通信期间能否稳定维持高速模式,确保不会因信号异常误触发复位。 |
TEST_PACKET |
usbh tmod 4 |
特定测试包循环发送。 用于评估物理层信号质量,包括眼图张开度、抖动 (Jitter)、上升/下降时间等关键指标。 |
SUSPEND |
usbh suspend |
进入挂起模式。 USB Host 停止总线活动。 |
RESUME |
usbh resume |
恢复运行模式。 USB Host 发送唤醒信号,通知设备恢复正常通信。 |
SINGLE_STEP_GET_DEV_DESC |
usbh xfer <value> |
分阶段验证设备描述符获取流程。 <value> 取值范围:1~2 <1> Setup 阶段与标准请求验证。 <2> Data/Status 阶段的数据传输验证。 |