2. USB物理层与电气特性
USB物理层定义了主机与设备之间最底层的连接规范,包括线缆定义、信号传输方式以及电源管理机制。理解这些基础是进行USB Host驱动开发和设备枚举调试的前提。本章将深入剖析USB线缆的每一根信号线、差分信号的传输原理,以及挂起/唤醒的电气实现。
2.1 USB线缆定义与引脚功能
标准USB线缆(以USB 2.0为例)内部包含4根导线:VBUS、D+、D-和GND。它们各自承担着供电与数据传输的核心职责。
| 引脚编号 | 信号名称 | 线缆颜色(标准) | 功能描述 |
|---|---|---|---|
| 1 | VBUS | 红色 | 主机向设备供电,典型电压为+5V,最大电流由端口类型决定(如USB 2.0为500mA,USB 3.0为900mA)。 |
| 2 | D- | 白色 | 差分数据线负极。在高速/全速模式下,与D+共同传输差分信号;在低速模式下,D-用于信号传输。 |
| 3 | D+ | 绿色 | 差分数据线正极。在高速/全速模式下,与D-共同传输差分信号;在低速模式下,D+用于信号传输。 |
| 4 | GND | 黑色 | 电源地线,为VBUS提供回流路径,同时也是信号参考地。 |
实战提示:在嵌入式Linux开发板上,VBUS通常由GPIO控制的电源开关(如TPS20xx系列)提供。驱动开发时,需要确保在枚举前正确使能VBUS,否则设备无法上电,导致枚举失败。
2.2 差分信号原理
USB 2.0使用差分信号(Differential Signaling)在D+和D-两条线上传输数据。与单端信号相比,差分信号具有更强的抗共模噪声能力和更低的电磁干扰(EMI)。
差分信号的核心思想是:逻辑状态由D+与D-之间的电压差决定,而非单根线对地的绝对电压。
- 逻辑“1”(J状态): D+ > D-,电压差为正(典型值约+400mV)。
- 逻辑“0”(K状态): D+ < D-,电压差为负(典型值约-400mV)。
- SE0(单端0): D+ 和 D- 同时被拉低至GND(低于0.8V),用于复位或包结束(EOP)信号。
关键指标:USB 2.0高速模式(480 Mbps)下,差分信号摆幅为±400mV,信号上升/下降时间约为500ps。驱动开发者在调试眼图时,需要关注信号质量是否满足USB-IF规范。
2.3 电源管理与挂起唤醒机制
USB规范要求所有设备必须支持挂起(Suspend)和远程唤醒(Remote Wakeup)功能,以降低功耗。挂起状态是USB电源管理的核心。
2.3.1 挂起(Suspend)
当总线空闲超过3ms时,主机控制器(Host Controller)会强制将D+和D-线都拉低至GND(SE0状态),并持续至少10ms,通知设备进入挂起状态。设备在挂起状态下,从VBUS吸取的电流不得超过2.5mA(低功耗设备)或2.5mA(高功耗设备,但需符合配置描述符中的声明)。
2.3.2 唤醒(Resume / Remote Wakeup)
唤醒有两种方式:
- 主机唤醒(Host Resume):主机主动在总线上产生K状态(D+ > D-)持续20ms,然后恢复帧起始包(SOF)。
- 设备远程唤醒(Remote Wakeup):设备通过将D+或D-线驱动为K状态(持续1~15ms),请求主机恢复总线活动。主机检测到后,会接管并完成唤醒过程。
驱动开发注意:在嵌入式Linux中,USB设备的挂起/唤醒通常由PM(电源管理)框架管理。驱动需要实现
suspend() 和 resume() 回调函数,并在设备描述符中正确设置 bMaxPower 字段,否则系统可能无法正确进入或退出低功耗状态。
2.4 电气特性参数速查表
以下表格汇总了USB 2.0在低速(1.5 Mbps)、全速(12 Mbps)和高速(480 Mbps)模式下的关键电气参数,供驱动开发和硬件调试时参考。
| 参数 | 低速 (LS) | 全速 (FS) | 高速 (HS) |
|---|---|---|---|
| 数据速率 | 1.5 Mbps | 12 Mbps | 480 Mbps |
| 差分信号摆幅 | ±1.5V ~ ±3.6V | ±1.5V ~ ±3.6V | ±400mV |
| 上升/下降时间 | 75 ~ 300 ns | 4 ~ 20 ns | 500 ps (典型) |
| 终端电阻 | D-上拉 1.5kΩ | D+上拉 1.5kΩ | D+/D-各45Ω对地 |
| 驱动电流 | 8 mA | 8 mA | 17.78 mA |
| 挂起电流 | ≤ 2.5 mA (低功耗设备) / ≤ 2.5 mA (高功耗设备,需配置) | ||
实战要点:在嵌入式Linux中,通过读取
/sys/kernel/debug/usb/usbmon 可以捕获USB总线上的电气事件(如复位、挂起)。结合逻辑分析仪抓取D+/D-波形,可以快速定位枚举失败或电源管理异常问题。