2. USB物理层信号:D+、D-差分信号、上拉/下拉电阻、低速/全速/高速识别机制
USB物理层是枚举过程的基石。主机与设备之间的每一次通信,包括复位、设备描述符请求、地址分配,都依赖于D+和D-两条数据线上的差分信号传输。本节将深入剖析差分信号的电气特性、终端电阻网络以及速度识别机制,这些是理解枚举故障(如设备无法识别、速度协商失败)的关键前提。
2.1 差分信号:D+与D-的电气基础
USB使用半双工差分信号进行数据传输。与单端信号(如UART的TX/RX对地电平)不同,差分信号通过D+与D-之间的电压差来传递逻辑状态,具有更强的抗共模干扰能力。
核心定义: 逻辑“1”(J状态)和逻辑“0”(K状态)由D+与D-的电压差决定。在低速/全速模式下,差分“1”定义为D+ > D-(至少200mV压差),差分“0”定义为D- > D+。
排查提示: 使用示波器测量D+和D-对地波形时,应同时观察两条线的相对电平。如果发现D+和D-波形完全一致(共模噪声),则差分接收器无法解析数据,枚举将立即失败。
下表总结了低速、全速、高速三种模式下的关键电气参数:
| 参数 | 低速 (LS) 1.5 Mbps | 全速 (FS) 12 Mbps | 高速 (HS) 480 Mbps |
|---|---|---|---|
| 信号摆幅 | 0 ~ 3.3V | 0 ~ 3.3V | 400mV(差分摆幅) |
| 终端匹配 | 上拉至3.3V | 上拉至3.3V | 终端匹配电阻(45Ω对地) |
| J状态(空闲) | D-高,D+低 | D+高,D-低 | D+高,D-低(与FS相同) |
| K状态 | D+高,D-低 | D-高,D+低 | D-高,D+低 |
2.2 上拉/下拉电阻网络:速度识别的物理基础
USB总线上的速度识别不依赖软件握手,而是通过物理层电阻网络在设备连接瞬间完成。主机端(Host)在D+和D-上各有一个15kΩ下拉电阻到地;设备端则根据自身速度等级,在对应的数据线上连接一个1.5kΩ上拉电阻到3.3V。
关键故障点: 如果设备的上拉电阻虚焊或阻值偏差超过±5%,主机将无法正确检测到设备连接,导致枚举无法启动。这是最常见的硬件级枚举故障之一。
速度识别机制如下:
- 低速设备: 上拉电阻接在D-线上。主机检测到D-被拉高,D+为低,判定为低速设备。
- 全速设备: 上拉电阻接在D+线上。主机检测到D+被拉高,D-为低,判定为全速设备。
- 高速设备: 初始阶段表现为全速设备(D+上拉),但在复位期间会通过Chirp J/K序列进行高速握手,成功后切换为高速模式并断开上拉电阻。
| 速度模式 | 设备上拉电阻位置 | 主机下拉电阻 | 空闲总线电平 |
|---|---|---|---|
| 低速 (LS) | D- 线 (1.5kΩ → 3.3V) | D+ 和 D- 各 15kΩ → GND | D- = 高, D+ = 低 |
| 全速 (FS) | D+ 线 (1.5kΩ → 3.3V) | D+ 和 D- 各 15kΩ → GND | D+ = 高, D- = 低 |
| 高速 (HS) | 初始 D+ 上拉,握手后断开 | D+ 和 D- 各 45Ω → GND(终端匹配) | D+ = 高, D- = 低(与FS相同) |
2.3 高速握手协议:Chirp J/K 序列
高速设备在物理层上以全速设备身份启动,但会在主机发送的复位信号期间发起高速握手。这一过程称为Chirp J/K 序列,是高速模式识别的关键步骤。
- 主机复位: 主机将D+和D-同时拉低至少10ms(SE0状态)。
- 设备Chirp K: 高速设备检测到复位后,在D+线上发送一个持续1ms~7ms的K状态(D-高,D+低)。
- 主机Chirp J/K: 如果主机支持高速,它会在检测到设备Chirp K后,交替发送J和K状态(每个约40μs~60μs),持续至少100μs。
- 速度确认: 设备检测到主机的Chirp序列后,断开D+上的上拉电阻,切换到高速模式(电流驱动模式,终端匹配45Ω对地)。
故障排查要点: 如果主机不支持高速,它不会响应Chirp K,设备将保持在全速模式。如果设备Chirp K信号幅度不足(低于100mV)或持续时间过短,主机可能无法识别,导致枚举失败。
2.4 常见物理层故障与排查方法
物理层信号问题在USB枚举故障中占比极高。以下表格总结了最常见的故障现象及其根因:
| 故障现象 | 可能原因 | 排查手段 |
|---|---|---|
| 主机检测不到设备连接 | 上拉电阻虚焊、阻值偏差、D+/D-短路 | 测量D+或D-对地电压(空闲时应为3.0V左右) |
| 设备被识别为错误速度 | 上拉电阻接错线(如全速设备误接D-) | 检查PCB布局,确认1.5kΩ电阻连接位置 |
| 高速设备只能工作在FS模式 | Chirp K信号幅度不足、主机不支持HS | 用示波器捕获复位期间的Chirp K波形 |
| 枚举过程中断(CRC错误) | 信号反射、电缆过长、终端匹配不良 | 检查电缆长度(HS建议≤3m),测量信号眼图 |
| 设备反复复位 | D+/D-差分对不等长、共模噪声过大 | 检查PCB差分走线等长(误差≤5mm) |
实战建议: 在调试USB物理层时,建议使用差分探头(或两个单端探头配合数学运算)观察D+和D-的差分电压。单端测量只能看到对地电平,无法准确判断差分信号质量。对于高速信号,还需要关注信号的眼图张开度,确保满足USB-IF的电气规范。