USB设备驱动开发与主机控制器原理与实战 - 第1节
1.1 USB 发展历史与版本演进
通用串行总线(Universal Serial Bus,USB)自 1996 年正式发布 1.0 规范以来,已成为电子设备最主流的有线连接标准。其设计初衷是统一外围设备接口、支持热插拔、提供总线供电,并简化 PC 与设备之间的连接拓扑。
1.1.1 发展历史里程碑
| 年份 | 事件 | 关键意义 |
|---|---|---|
| 1995 | Intel、Microsoft、IBM 等七家公司成立 USB 实施者论坛(USB-IF) | 标准制定组织成立 |
| 1996 | USB 1.0 规范发布 | 低速 1.5 Mbps + 全速 12 Mbps |
| 1998 | iMac 率先取消串口/并口,全面采用 USB | USB 成为消费电子标配 |
| 2000 | USB 2.0 规范发布 | 高速 480 Mbps,兼容 1.x |
| 2008 | USB 3.0 规范发布 | SuperSpeed 5 Gbps,新增独立物理通道 |
| 2013 | USB 3.1 规范发布 | SuperSpeed+ 10 Gbps,Type-C 接口引入 |
| 2017 | USB 3.2 规范发布 | 双通道 20 Gbps,统一命名体系 |
| 2019 | USB4 规范发布 | 基于 Thunderbolt 3,40 Gbps,隧道协议 |
1.1.2 USB 版本演进对比
| 版本 | 信号速率 | 编码方式 | 供电能力 | 接口形态 |
|---|---|---|---|---|
| USB 1.0/1.1 | 1.5 Mbps / 12 Mbps | NRZI + 位填充 | 5V / 500 mA | Type-A, Type-B |
| USB 2.0 | 480 Mbps | NRZI + 位填充 | 5V / 500 mA | Type-A, Type-B, Mini, Micro |
| USB 3.0 | 5 Gbps | 8b/10b | 5V / 900 mA | Type-A, Type-B, Micro-B |
| USB 3.1 Gen2 | 10 Gbps | 128b/132b | 5V / 900 mA | Type-C 为主 |
| USB 3.2 2x2 | 20 Gbps | 128b/132b | 5V / 1.5 A | Type-C 强制 |
| USB4 Gen3x2 | 40 Gbps | 128b/132b | 5V / 3 A (PD) | Type-C 强制 |
开发者提示:USB 3.x 与 USB 2.0 在物理层上完全独立,USB 3.0 新增了差分数据对 SSTX+/SSTX- 和 SSRX+/SSRX-,与原有的 D+/D- 并行工作。驱动开发中需要分别处理两套收发器。
1.1.3 USB 版本演进关系图
1.2 USB 系统拓扑结构
USB 采用 星形-菊花链混合拓扑,由主机控制器(Host Controller)作为唯一主节点,通过根集线器(Root Hub)向下扩展,最多支持 127 个设备(含集线器)。
1.2.1 拓扑层次与角色
- Host(主机):唯一的主控方,负责调度所有传输事务,管理总线枚举、电源分配和带宽分配。
- Hub(集线器):中继节点,负责信号再生、连接检测、电源管理和下游端口控制。
- Device(设备):功能节点,包含接口(Interface)、端点(Endpoint)和管道(Pipe)等逻辑单元。
关键概念:USB 总线是 轮询式 总线,所有传输由主机发起,设备不能主动发送数据。这与 I²C 或 SPI 的主从模式类似,但 USB 支持更复杂的管道和事务调度。
1.2.2 USB 系统拓扑结构图
1.2.3 设备枚举流程
- 连接检测:Hub 检测到 D+/D- 电平变化,报告主机。
- 复位:主机通过 Hub 对端口发送复位信号(SE0 状态持续 10 ms)。
- 分配地址:主机通过控制传输发送 SET_ADDRESS 请求,分配唯一 7 位地址。
- 读取描述符:主机读取设备描述符、配置描述符、接口描述符和端点描述符。
- 配置设备:主机发送 SET_CONFIGURATION 请求,设备进入配置状态。
- 加载驱动:主机根据 bInterfaceClass/SubClass/Protocol 匹配内核驱动。
驱动开发注意:枚举阶段使用 默认管道(Default Pipe),即端点 0(控制端点)。所有 USB 设备必须实现端点 0,且最大包长在设备描述符中声明。驱动加载后,驱动通过非控制端点进行数据传输。
1.3 USB 物理层与电气特性
USB 物理层定义了信号电平、编码方式、连接器引脚和电缆规范。不同版本在物理层上有显著差异,尤其是 USB 3.x 引入了独立的超高速差分对。
1.3.1 USB 2.0 物理层
- 差分信号:D+ 和 D- 两条数据线,半双工传输。
- 编码:NRZI(Non-Return-to-Zero Inverted) + 位填充(Bit Stuffing),每 6 个连续 1 插入一个 0。
- 电平:低速/全速 3.3V 逻辑,高速 400 mV 摆幅。
- 终端匹配:设备端 D+ 或 D- 上拉 1.5kΩ 电阻标识速度;主机端 15kΩ 下拉电阻。
1.3.2 USB 3.x 物理层
- 独立差分对:SSTX+/SSTX-(发送)、SSRX+/SSRX-(接收),全双工。
- 编码:8b/10b(USB 3.0)或 128b/132b(USB 3.1+),内嵌时钟。
- 终端匹配:差分阻抗 100Ω,共模阻抗 30Ω。
- 供电:VBUS 5V,USB 3.0 最大 900 mA,USB 3.2 最大 1.5 A,USB PD 可达 5A。
1.3.3 USB 连接器引脚定义
| 引脚 | USB 2.0 Type-A | USB 3.0 Type-A | USB Type-C |
|---|---|---|---|
| 1 | VBUS (5V) | VBUS | VBUS |
| 2 | D- | D- | D- / SBU1 |
| 3 | D+ | D+ | D+ / SBU2 |
| 4 | GND | GND | GND |
| 5 | — | SSTX- | SSTX- / CC1 |
| 6 | — | SSTX+ | SSTX+ / CC2 |
| 7 | — | GND | GND |
| 8 | — | SSRX- | SSRX- |
| 9 | — | SSRX+ | SSRX+ |
Type-C 关键特性:支持正反插(CC 引脚检测方向)、支持 USB PD 协商(最高 240W)、支持 Alternate Mode(DP/HDMI/Thunderbolt 复用高速通道)。驱动开发中需处理 CC 逻辑和角色切换(DRP)。
1.3.4 USB 信号编码与电气特性对比
1.3.5 电气特性关键参数
| 参数 | USB 2.0 低速 | USB 2.0 全速 | USB 2.0 高速 | USB 3.0 |
|---|---|---|---|---|
| 数据速率 | 1.5 Mbps | 12 Mbps | 480 Mbps | 5 Gbps |
| 差分摆幅 | 3.3V | 3.3V | 400 mV | 1.0V |
| 上升时间 | 75~300 ns | 4~20 ns | 500 ps | 100 ps |
| 电缆最大长度 | 3 m | 5 m | 5 m | 3 m |
| 终端电阻 | 设备 D+ 上拉 1.5kΩ | 设备 D- 上拉 1.5kΩ | 设备 D+ 上拉 1.5kΩ | 差分 100Ω |
硬件设计注意:USB 高速模式(480 Mbps)对信号完整性要求较高,PCB 走线需控制差分阻抗 90Ω ±15%,等长误差 ≤ 5 mm。驱动开发中若遇到高速设备枚举失败,应优先检查 D+/D- 走线质量和终端匹配。