USB设备驱动开发与主机控制器原理与实战 - 第1节

1.1 USB 发展历史与版本演进

通用串行总线(Universal Serial Bus,USB)自 1996 年正式发布 1.0 规范以来,已成为电子设备最主流的有线连接标准。其设计初衷是统一外围设备接口、支持热插拔、提供总线供电,并简化 PC 与设备之间的连接拓扑。

1.1.1 发展历史里程碑

年份事件关键意义
1995Intel、Microsoft、IBM 等七家公司成立 USB 实施者论坛(USB-IF)标准制定组织成立
1996USB 1.0 规范发布低速 1.5 Mbps + 全速 12 Mbps
1998iMac 率先取消串口/并口,全面采用 USBUSB 成为消费电子标配
2000USB 2.0 规范发布高速 480 Mbps,兼容 1.x
2008USB 3.0 规范发布SuperSpeed 5 Gbps,新增独立物理通道
2013USB 3.1 规范发布SuperSpeed+ 10 Gbps,Type-C 接口引入
2017USB 3.2 规范发布双通道 20 Gbps,统一命名体系
2019USB4 规范发布基于 Thunderbolt 3,40 Gbps,隧道协议

1.1.2 USB 版本演进对比

版本信号速率编码方式供电能力接口形态
USB 1.0/1.11.5 Mbps / 12 MbpsNRZI + 位填充5V / 500 mAType-A, Type-B
USB 2.0480 MbpsNRZI + 位填充5V / 500 mAType-A, Type-B, Mini, Micro
USB 3.05 Gbps8b/10b5V / 900 mAType-A, Type-B, Micro-B
USB 3.1 Gen210 Gbps128b/132b5V / 900 mAType-C 为主
USB 3.2 2x220 Gbps128b/132b5V / 1.5 AType-C 强制
USB4 Gen3x240 Gbps128b/132b5V / 3 A (PD)Type-C 强制
开发者提示:USB 3.x 与 USB 2.0 在物理层上完全独立,USB 3.0 新增了差分数据对 SSTX+/SSTX- 和 SSRX+/SSRX-,与原有的 D+/D- 并行工作。驱动开发中需要分别处理两套收发器。

1.1.3 USB 版本演进关系图

USB 版本演进时间线 USB 1.0 1996 USB 2.0 2000 USB 3.0 2008 USB 3.1 2013 USB4 2019 速率演进 1.5/12 Mbps 480 Mbps 5 Gbps 10 Gbps 40 Gbps

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 系统拓扑结构图

USB 系统拓扑结构 Host (主机控制器) Root Hub Hub 1 Hub 2 Device A Device B Device C Device D 最多 7 层 Hub 级联,总设备数 ≤ 127(含 Hub) 主机是唯一事务发起者,设备被动响应

1.2.3 设备枚举流程

  1. 连接检测:Hub 检测到 D+/D- 电平变化,报告主机。
  2. 复位:主机通过 Hub 对端口发送复位信号(SE0 状态持续 10 ms)。
  3. 分配地址:主机通过控制传输发送 SET_ADDRESS 请求,分配唯一 7 位地址。
  4. 读取描述符:主机读取设备描述符、配置描述符、接口描述符和端点描述符。
  5. 配置设备:主机发送 SET_CONFIGURATION 请求,设备进入配置状态。
  6. 加载驱动:主机根据 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-AUSB 3.0 Type-AUSB Type-C
1VBUS (5V)VBUSVBUS
2D-D-D- / SBU1
3D+D+D+ / SBU2
4GNDGNDGND
5—SSTX-SSTX- / CC1
6—SSTX+SSTX+ / CC2
7—GNDGND
8—SSRX-SSRX-
9—SSRX+SSRX+
Type-C 关键特性:支持正反插(CC 引脚检测方向)、支持 USB PD 协商(最高 240W)、支持 Alternate Mode(DP/HDMI/Thunderbolt 复用高速通道)。驱动开发中需处理 CC 逻辑和角色切换(DRP)。

1.3.4 USB 信号编码与电气特性对比

USB 2.0 vs USB 3.x 物理层对比 USB 2.0 物理层 信号线:D+, D-(差分半双工) 编码:NRZI + 位填充 速率:1.5 / 12 / 480 Mbps 终端:设备 1.5kΩ 上拉,主机 15kΩ 下拉 供电:5V / 500 mA 拓扑:半双工,主机轮询 电缆:4 芯(VBUS, D+, D-, GND) USB 3.x 物理层 信号线:SSTX+, SSTX-, SSRX+, SSRX- 编码:8b/10b 或 128b/132b 速率:5 / 10 / 20 Gbps 终端:差分 100Ω,共模 30Ω 供电:5V / 900 mA ~ 5A (PD) 拓扑:全双工,独立收发通道 电缆:9 芯以上(含超高速差分对)

1.3.5 电气特性关键参数

参数USB 2.0 低速USB 2.0 全速USB 2.0 高速USB 3.0
数据速率1.5 Mbps12 Mbps480 Mbps5 Gbps
差分摆幅3.3V3.3V400 mV1.0V
上升时间75~300 ns4~20 ns500 ps100 ps
电缆最大长度3 m5 m5 m3 m
终端电阻设备 D+ 上拉 1.5kΩ设备 D- 上拉 1.5kΩ设备 D+ 上拉 1.5kΩ差分 100Ω
硬件设计注意:USB 高速模式(480 Mbps)对信号完整性要求较高,PCB 走线需控制差分阻抗 90Ω ±15%,等长误差 ≤ 5 mm。驱动开发中若遇到高速设备枚举失败,应优先检查 D+/D- 走线质量和终端匹配。