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 IF 标准主机类驱动:
CDC ACM:可用于数据透传
CDC ECM:可识别 CDC ECM 设备进行基本通信,或作为桥接器支持 CDC ECM 设备与路由器之间进行网络通信
MSC:支持将 U 盘等大容量存储设备挂载到 FatFS 文件系统,实现文件的读写
UVC:可连接摄像头,支持 MJPEG、H264、YUV 格式图像截取和视频流转发
支持以下 USB IF 标准设备类驱动:
CDC ACM:可用于数据透传或作为虚拟串口
HID:可作为 USB 键盘、鼠标等设备,实现人机交互功能
MSC:支持 SD 卡或 SRAM 作为存储媒介, 实现数据存储
UAC:作为 USB 音频的设备,支持音频录放
支持以下 USB 复合设备类驱动:
CDC ACM + HID
CDC ACM + UAC
HID + UAC
支持 USB 主机和设备双角色动态切换
提供参考设计用于开发者定制 USB 主机和设备
支持设备描述符全定制
VID 和 PID
字符串描述符
端点映射
主机/设备核心驱动参数可配置
速度模式
DFIFO 深度(仅适用于专用 FIFO 模式)
核心 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 主机/设备解决方案的设计参考
硬件抽象层驱动架构
硬件抽象层驱动提供了 SoC 相关的 USB 电源管理、中断处理和 PHY 校准接口,并定义了上层 USB 核心驱动所需的系统常量。
备注
硬件抽象层默认编入 USB 主机/设备/DRD 核心库文件,不允许开发者修改
USB PHY 校准数据在 SoC 出厂前确定,原则上不需要开发者修改,如遇疑似校准导致的兼容性问题(如枚举失败、反复断线重连),请联系 Realtek FAE
设备驱动软件架构
主机驱动软件架构
路径宏定义
USB 路径宏定义
名字 |
路径说明 |
|---|---|
|
{SDK}/component/soc/amebaxxx/fwlib/include |
|
{SDK}/component/usb |
|
{SDK}/component/usb/device |
|
{SDK}/component/usb/host |
|
{SDK}/component/example/usb |
|
{SDK}/amebaxxx_gcc_project/project_xxx/asdk/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 阶段的数据传输验证。 |