支持的芯片
USB 概述
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 和 slave 模式
设备模式下的端点配置如下:
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 和 slave 模式
设备模式下的端点配置如下:
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 和 slave 模式
设备模式下的端点配置如下:
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 硬件抽象层
路径 |
说明 |
|
USB硬件抽象层API定义头文件, 具体参考 USB硬件抽象层 |
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主机类驱动 |
Host 类驱动,参考 Host 类驱动
Device 类驱动,参考 Device 类驱动
USB 解决方案示例
路径 |
说明 |
|
基于CDC ACM的透传主机解决方案示例 |
|
基于CDC ECM的网络通信主机解决方案示例 |
|
基于MSC的存储主机解决方案示例 |
|
基于UVC的多媒体主机解决方案示例 |
|
基于CDC ECM的网络通信bridge解决方案示例 |
|
基于CDC ACM的透传设备解决方案示例 |
|
基于CDC ACM和HID的复合功能设备解决方案示例 |
|
基于CDC ACM和UAC的复合功能设备解决方案示例 |
|
基于HID和UAC的复合功能设备解决方案示例 |
|
HID设备解决方案示例 |
|
INIC设备解决方案示例 |
|
基于MSC的存储设备解决方案示例 |
|
基于UAC的音频设备解决方案示例 |
|
基于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 认证