4. 枚举流程第一步:设备连接与复位(Reset)信号的时序与电气特性
USB 枚举的起点始于物理层的连接与复位。当设备插入主机(或集线器)的下行端口时,主机通过检测 D+/D- 线上的电平变化来感知设备的存在,并随后发起总线复位(Reset)信号。复位信号是设备进入默认地址(Address 0)并准备接收控制传输的先决条件。本节将深入分析连接检测的电气机制、复位信号的时序规范,以及常见故障的排查要点。
4.1 设备连接检测:上拉电阻与电平变化
USB 总线采用差分信号对(D+ 和 D-)进行数据传输。在空闲状态(Idle)下,主机/集线器的下行端口会在 D+ 和 D- 上各接一个 15kΩ 的下拉电阻(Rd),将总线电平拉低。设备端则根据其速度等级,在 D+ 或 D- 线上接一个 1.5kΩ 的上拉电阻(Rp):
- 全速/高速设备:上拉电阻接在 D+ 线上。
- 低速设备:上拉电阻接在 D- 线上。
当设备插入时,上拉电阻与主机端的下拉电阻形成分压,使对应的数据线电压从 0V 抬升至约 3.0V(对于 3.3V 系统)。主机集线器通过监测 D+ 或 D- 线的单端电压(SE0 状态的反面)来检测设备连接。
4.2 复位(Reset)信号的时序规范
主机检测到设备连接后,会立即驱动总线进入复位状态。复位信号的本质是主机将 D+ 和 D- 同时拉低(SE0,Single-Ended Zero)并持续一段规定的时间。设备在复位期间必须复位其内部状态机,并将 USB 地址重置为 0。
下表列出了 USB 2.0 规范中复位信号的关键时序参数:
| 参数 | 符号 | 最小值 | 最大值 | 单位 | 说明 |
|---|---|---|---|---|---|
| 复位持续时间 | TRST | 10 | 20 | ms | 主机必须驱动 SE0 至少 10ms,但不超过 20ms。 |
| 复位恢复时间 | TRSTREC | 10 | — | ms | 复位结束后,主机必须等待至少 10ms 才能开始发送帧起始包(SOF)或进行设备寻址。 |
| 高速 Chirp 检测窗口 | TWDRST | 2.5 | — | μs | 高速设备在复位期间检测 Chirp K 信号的窗口。 |
4.3 复位信号的电气特性与波形分析
复位信号在电气层面表现为 D+ 和 D- 线同时被拉低至接近 GND 电平(通常低于 0.8V)。在示波器上观察,复位波形应呈现为一个干净、平坦的低电平脉冲,无毛刺或振铃。
下图展示了从设备插入到复位结束的完整信号流程:
4.4 高速握手:Chirp J/K 信号
对于高速(High-Speed, 480 Mbps)设备,复位过程还包含一个特殊的“Chirp”握手阶段。当主机开始复位时,高速设备会通过发送 Chirp K 信号来宣告其高速能力,主机随后以 Chirp J/K 序列进行响应,最终完成速度协商。
高速握手流程如下:
- 设备发送 Chirp K:在复位开始后的 2.5μs ~ 5ms 内,设备将 D+ 线驱动为高、D- 线驱动为低(K 状态),持续 1ms ~ 7ms。
- 主机响应 Chirp J/K:主机检测到设备 Chirp K 后,交替驱动 D+/D- 线产生 J/K 序列(每个状态持续 40μs ~ 60μs),共 3 ~ 8 个周期。
- 速度协商完成:设备检测到主机的 Chirp 序列后,双方切换至高速模式,并断开设备端的上拉电阻。
4.5 复位故障排查清单
当枚举日志显示设备在第一步即失败时(例如日志中只有 "RESET" 事件而无后续 "GET_DESCRIPTOR"),应按照以下清单进行排查:
| 故障现象 | 可能原因 | 验证方法 | 解决方案 |
|---|---|---|---|
| 无连接检测 | VBUS 未供电、上拉电阻缺失、线缆断路 | 万用表测量 VBUS (5V) 和 D+/D- 电压 | 更换线缆、检查设备电源电路 |
| 复位时间过短 | 主机控制器驱动能力不足、集线器故障 | 示波器捕获复位脉冲宽度 | 更换 USB 端口或集线器 |
| 复位后无响应 | 设备晶振未起振、固件未初始化 | 测量设备晶振波形、检查复位引脚 | 检查设备硬件复位电路和固件启动代码 |
| 高速 Chirp 失败 | 设备高速 PHY 异常、主机不支持高速 | 分析仪查看 Chirp 序列完整性 | 强制设备降级为全速模式测试 |
4.6 复位信号与枚举日志的联合验证
在实际排查中,将示波器波形与 USB 分析仪日志结合分析是最有效的方法。以下是一个典型的联合验证流程:
通过上述流程,工程师可以快速区分故障是发生在物理层(电气特性不达标)还是协议层(固件未正确响应复位事件),从而大幅缩短排查时间。