2. USB系统架构:主机、设备、集线器(Hub)的角色,USB拓扑结构,物理层与协议层的关系

2.1 USB拓扑结构:分层星型模型

USB采用分层星型(Tiered Star)拓扑结构,这是理解枚举流程和故障定位的基础。整个系统由一个主机(Host)、若干集线器(Hub)和多个设备(Device)构成,最多支持7层(Tier)深度,包括根集线器所在的第1层。

关键约束:USB 2.0规范规定最大层数为7层(Tier 1 ~ Tier 7),最大端点数为32个(16个IN + 16个OUT),最大电缆长度为5米/段。超过这些限制将导致枚举失败或信号完整性崩溃。
USB分层星型拓扑结构图 USB 分层星型拓扑结构(Tiered Star Topology) 主机(Host) 根集线器(Root Hub) 集线器1(Hub) 设备A(Device) 集线器2(Hub) 设备B(Device) 设备C(Device) 设备D(Device) 说明: 最大层数 = 7层(含根集线器) 每段电缆最大长度 = 5米 Tier 1 Tier 2 Tier 3 Tier 4 Tier 5

2.2 主机(Host)的角色与职责

USB主机是总线的主控者,通常由主机控制器(Host Controller)和根集线器(Root Hub)组成。在枚举过程中,主机承担以下核心职责:

  • 总线调度:主机控制器负责生成帧/微帧起始包(SOF),并按照周期性(中断/同步)和非周期性(控制/批量)传输类型分配总线时间。
  • 枚举驱动:主机软件栈(USB Core + HCD)在检测到设备连接后,发起复位、分配地址、读取描述符、配置设备等枚举序列。
  • 电源管理:主机通过根集线器监控端口电源,检测过流、挂起、唤醒等事件。
  • 错误恢复:当设备无响应、CRC错误或协议违规时,主机负责重试或终止传输。
USB主机控制器类型对比
控制器类型 规范版本 传输速率 常见硬件
UHCI USB 1.1 1.5 / 12 Mbps Intel/PIIX4
OHCI USB 1.1 1.5 / 12 Mbps 非Intel平台
EHCI USB 2.0 480 Mbps 高速主机
xHCI USB 3.x 5/10/20 Gbps 现代平台

2.3 集线器(Hub)的角色与职责

集线器是USB拓扑中的中继节点,负责端口扩展、信号中继、电源管理和状态报告。集线器在枚举故障中经常成为瓶颈,其关键功能包括:

  • 端口状态管理:每个下游端口独立监控连接/断开、复位、挂起、过流等状态,并通过中断端点向主机报告状态变化。
  • 信号中继与重驱动:对高速/全速信号进行波形整形和重定时,补偿电缆和PCB走线损耗。
  • 速度协商:在复位过程中,集线器通过检测D+/D-线上的终端电阻状态,确定设备的工作速度(LS/FS/HS)。
  • 电源开关与过流保护:集线器可以逐端口控制电源开关,并在过流时自动断开端口并通知主机。
常见枚举故障点:集线器端口电源不足(过流触发)、信号中继器损坏导致眼图闭合、速度协商错误(D+上拉电阻检测失败)、中断端点报告延迟导致主机无法及时获取端口状态变化。
USB集线器内部功能框图 USB 集线器(Hub)内部功能框图 上行端口(Upstream Port) 集线器控制器(Hub Controller) 中继器(Repeater) 电源管理 端口状态寄存器 下游端口 1 下游端口 2 下游端口 3 集线器通过中断端点向主机报告端口状态变化(连接/断开/过流),主机轮询该端点获取状态位图。

2.4 设备(Device)的角色与职责

USB设备是总线上的从设备(Slave),不能主动发起事务,只能响应主机的请求。设备在枚举过程中的关键行为包括:

  • 上拉电阻检测:设备在D+(全速/高速)或D-(低速)线上连接1.5kΩ上拉电阻,主机/集线器通过检测该电阻识别设备连接。
  • 描述符提供:设备必须正确实现并返回设备描述符(Device Descriptor)、配置描述符(Configuration Descriptor)、接口描述符(Interface Descriptor)、端点描述符(Endpoint Descriptor)等。
  • 控制传输响应:设备通过默认端点0(控制端点)响应主机的标准请求(GET_DESCRIPTOR、SET_ADDRESS、SET_CONFIGURATION等)。
  • 电源配置:设备根据配置描述符中的bMaxPower字段声明所需总线电流(单位2mA),主机根据该值决定是否供电。
枚举故障排查提示:如果设备在连接后主机无法获取设备描述符,首先检查D+/D-上拉电阻是否正确连接(全速设备D+上拉,低速设备D-上拉)。高速设备在复位后需要从全速切换到高速,若切换失败则回退到全速模式。

2.5 物理层与协议层的关系

USB协议栈分为物理层(Physical Layer)、数据链路层(Data Link Layer)和协议层(Protocol Layer)。理解这三层的关系对于定位枚举故障至关重要。

USB协议栈分层与枚举故障对应关系
层次 主要功能 关键信号/机制 常见枚举故障
物理层 差分信号传输、电气特性 D+/D-电平、终端电阻、眼图 信号幅度不足、上升沿过缓、共模噪声
数据链路层 包封装、同步、位填充、CRC SYNC、SOP/EOP、NRZI编码 CRC错误、位填充违规、包长度错误
协议层 事务处理、请求/响应、描述符解析 Setup/Data/Status阶段、标准请求 描述符格式错误、地址冲突、配置失败
USB协议栈分层与数据流 USB 协议栈分层与数据流 协议层(Protocol Layer) 标准请求 · 描述符解析 · 事务处理(Setup/Data/Status) 数据链路层(Data Link Layer) 包封装 · SYNC/SOP/EOP · 位填充 · CRC5/CRC16 物理层(Physical Layer) 差分信号 · NRZI编码 · 终端电阻 · 眼图 · 电气特性 数据流方向: 主机 → 协议层 → 数据链路层 → 物理层 → 电缆 → 设备 反向同理(设备 → 主机) 常见故障分层: 物理层:信号完整性 数据链路层:CRC/包格式 协议层:描述符/请求

2.6 物理层关键电气特性

物理层是枚举成功的基础,以下电气参数直接影响主机能否正确识别设备:

  • 差分信号电平:全速/低速模式下,D+和D-的差分摆幅为0~3.3V(单端),高速模式下为400mV(差分)。
  • 终端电阻:设备端D+或D-上拉1.5kΩ至3.3V;主机/集线器端D+和D-各下拉15kΩ至GND。
  • 上电时序:设备连接后,VBUS必须在100ms内稳定在4.75V~5.25V,否则主机可能不识别。
  • 复位时序:主机驱动复位信号(SE0)至少持续10ms(全速/低速)或50ms(高速TDR),设备必须在复位结束后响应。
物理层排查清单:
1. 使用示波器测量D+/D-波形,检查差分摆幅是否达标。
2. 验证设备端上拉电阻是否焊接正确(1.5kΩ ±5%)。
3. 检查VBUS电压是否在4.75V~5.25V范围内,纹波是否小于100mV。
4. 测量复位信号持续时间,确保满足规范要求。

2.7 协议层关键机制:控制传输与标准请求

协议层定义了主机与设备之间的通信规则。枚举过程中最关键的传输类型是控制传输(Control Transfer),它由三个阶段组成:

  1. Setup阶段:主机向设备发送8字节的标准请求(bmRequestType、bRequest、wValue、wIndex、wLength)。
  2. Data阶段(可选):主机读取或写入数据,方向由bmRequestType决定。
  3. Status阶段:设备返回握手包(ACK/NAK/STALL)确认操作完成。

枚举过程中主机发送的标准请求包括:

枚举相关标准请求
请求名称 bRequest值 功能 枚举阶段
GET_DESCRIPTOR 0x06 读取设备/配置/字符串描述符 获取描述符
SET_ADDRESS 0x05 分配唯一地址(1~127) 地址分配
SET_CONFIGURATION 0x09 选择并激活配置 配置设备
GET_CONFIGURATION 0x08 读取当前配置值 验证配置
GET_STATUS 0x00 读取设备/端点状态 故障诊断
协议层故障排查技巧:使用USB分析仪(如Beagle USB、Ellisys)捕获枚举过程中的控制传输。重点关注:
- 设备是否在SET_ADDRESS后正确响应ACK?
- 设备描述符的前8字节(bLength、bDescriptorType、bcdUSB等)是否与预期一致?
- 配置描述符的总长度(wTotalLength)是否与实际返回的数据长度匹配?

2.8 本章小结

USB系统架构采用分层星型拓扑,主机通过根集线器管理最多7层设备。集线器负责端口扩展、信号中继和电源管理,设备通过上拉电阻和描述符响应主机请求。物理层保证信号完整性,数据链路层确保包格式正确,协议层实现标准请求和描述符解析。理解这三层的关系是枚举故障排查的基础——故障可能发生在任何一层,排查时需要逐层验证。