2、USB基础概念:USB总线架构、主机与设备角色、传输速率、线缆与连接器

USB(Universal Serial Bus,通用串行总线)自1996年问世以来,已经从最初替代串口/并口的低速外设总线,演变为覆盖存储、音视频、网络、充电、调试等几乎所有外设互联场景的通用I/O标准。理解USB的基础概念,是后续学习HID(人机接口设备)和CDC(通信设备类)协议的前提。本节将围绕USB的拓扑结构、角色分工、速率演进以及物理层连接四个维度展开,帮助读者建立完整的USB系统视图。

USB 2.0 总线拓扑与角色关系 USB 主机 (Host) Root Hub / 主机控制器 根集线器 (Root Hub) 集线器 (Hub) 外部供电 集线器 (Hub) 总线供电 HID 键盘 全速 12Mbps CDC 串口 全速 12Mbps U 盘 高速 480Mbps 摄像头 高速 480Mbps 功能设备 直连主机 传输速率等级 低速 1.5 Mbps 全速 12 Mbps 高速 480 Mbps 超高速 5/10/20 Gbps 信号/数据流 控制/枚举 直连/级联

2.1 USB总线架构:分层拓扑与传输模型

核心原理:USB采用星型分层拓扑(Tiered Star Topology),这与PCIe的树状结构或以太网的网状结构有本质区别。整个总线系统中,主机(Host)是唯一的通信发起者,所有数据传输(包括设备到主机的数据)都必须由主机发起事务(Transaction)。物理上,主机通过根集线器(Root Hub)引出总线,最多支持7层拓扑(含根集线器层),每层之间通过集线器(Hub)扩展,最多可连接127个设备(含集线器本身,地址0用于枚举)。

逻辑上,USB通信模型分为三层:总线接口层(物理层)负责电气信号与位同步;设备层(协议层)负责解析包结构、事务处理、端点(Endpoint)寻址;功能层(应用层)由各类设备类(Class)规范定义,如HID、CDC、Mass Storage等。主机侧对应有USB主机控制器(Host Controller)、USB驱动(USBD)和类驱动(Class Driver)。

判断方法:在系统层面,可以通过以下方式识别拓扑:

  • 在Linux下使用 lsusb -t 查看设备树,输出会以 /: Bus 01.Port 1: Dev 1 的形式展示层级关系。
  • 在Windows设备管理器中,选择“按连接查看设备”,可以看到USB根集线器下的层级结构。
  • 通过USB分析仪(如Beagle USB 480)抓取总线流量,观察SOF(帧起始包)和SETUP事务,可以精确还原拓扑。
经验提醒:在设计USB产品时,务必注意层数限制。如果设备级联超过7层,主机将无法枚举新设备。常见错误是在嵌入式系统中将多个Hub串接,导致深层设备无法识别。建议在PCB设计阶段就规划好Hub的级联深度。

2.2 主机与设备角色:谁控制总线?

核心原理:USB是主从架构(Master-Slave),主机(Host)扮演主设备角色,外设(Device)扮演从设备角色。主机负责:

  1. 总线调度:主机控制器以1ms(全/低速)或125μs(高速微帧)为周期生成帧(Frame)或微帧(Microframe),并在帧起始时发送SOF包。
  2. 枚举管理:设备插入后,主机通过复位总线、分配地址(1-127)、读取设备描述符(Device Descriptor)完成枚举。
  3. 电源管理:主机控制VBUS(5V电源)的通断,支持挂起(Suspend)和远程唤醒(Remote Wakeup)。
  4. 错误处理:主机重试失败的事务,并记录错误统计。

设备角色相对被动,但必须实现端点(Endpoint)作为通信的基本单元。端点0(默认控制端点)必须存在,用于枚举和控制传输。设备不能主动向主机发送数据,只能响应主机的IN令牌包()或OUT令牌包。

操作流程(设备枚举过程):

1. 设备插入,Hub检测到D+/D-线上的上拉电阻(全速/高速设备上拉D+,低速设备上拉D-)。
2. Hub向主机报告端口状态变化事件。
3. 主机向Hub发送"Get Port Status"请求,确认设备连接。
4. 主机向Hub发送"Set Port Feature"(PORT_RESET),复位端口。
5. 复位完成后,设备以默认地址0响应,主机发送"Get Descriptor"(Device Descriptor)。
6. 主机分配唯一地址(Set Address),之后设备切换到新地址通信。
7. 主机继续读取配置描述符(Configuration Descriptor)、接口描述符(Interface Descriptor)、端点描述符(Endpoint Descriptor)。
8. 主机加载对应的类驱动(如HID、CDC),完成配置(Set Configuration),设备进入工作状态。

案例拆解:假设一个USB鼠标(HID类)插入PC。初始现象是鼠标灯亮但无响应。通过USB分析仪抓包发现,主机在步骤5后未收到设备描述符。分析原因是设备固件中描述符数组定义错误,导致返回的数据长度不匹配(主机请求64字节,设备只返回8字节且CRC错误)。修复方法:检查描述符的 bLength 字段是否与实际发送长度一致,并确保端点0的最大包长(bMaxPacketSize0)设置为8/16/32/64字节之一(全速设备通常为64)。

风险提示:不要试图让设备“主动”发送数据。即使设备有紧急数据要上报(如键盘按键),也必须等待主机发送IN令牌包。如果主机轮询间隔过长(如HID设备默认轮询10ms),会导致输入延迟。设计时需在描述符中合理设置 bInterval 字段。

2.3 传输速率:从低速到超高速的演进

核心原理:USB协议定义了多个速率等级,不同速率对应不同的电气特性和编码方式。理解速率等级对选择线缆、设计PCB以及调试信号完整性至关重要。

速率等级 信号速率 编码方式 典型应用 线缆要求
低速 (LS) 1.5 Mbps NRZI + 位填充 鼠标、键盘、游戏手柄 非屏蔽双绞线,最长3m
全速 (FS) 12 Mbps NRZI + 位填充 HID设备、CDC串口、音频 非屏蔽双绞线,最长5m
高速 (HS) 480 Mbps NRZI + 位填充 + 电流驱动 U盘、摄像头、USB网卡 屏蔽双绞线,最长5m
超高速 (SS) 5/10/20 Gbps 8b/10b (Gen1) / 128b/132b (Gen2/3) SSD、视频采集、扩展坞 双差分对屏蔽线,最长3m

判断方法:在硬件调试中,可以通过测量D+/D-线上的信号幅度和边沿速率来判断设备工作速率。全速设备D+线上有1.5kΩ上拉电阻,高速设备在复位期间会通过电流模式(D+上拉约10mA)与主机握手。使用示波器观察:全速信号摆幅约3.3V,边沿约4-20ns;高速信号摆幅约400mV(差分),边沿约500ps。

实战场景:某产品使用USB 2.0高速接口传输视频流,但实测带宽只有约200Mbps。分析发现,虽然设备枚举为高速,但实际传输使用了批量传输(Bulk)且端点缓冲区过小(512字节),导致频繁NAK重试。优化方案:增大端点FIFO至3个包(3x512字节),并调整批量传输的突发长度,最终带宽提升至380Mbps。

关键结论:速率等级不仅影响带宽,还影响线缆阻抗(90Ω±15%差分阻抗)、连接器引脚(高速需要额外屏蔽)以及电源能力(高速设备通常需要500mA)。设计时不要混用低速/全速线缆传输高速信号,否则会引起误码。

2.4 线缆与连接器:物理层的可靠性设计

核心原理:USB线缆包含4根主要导线(VBUS、GND、D+、D-)和可选屏蔽层。超高速USB增加了一对SSTX差分线和一对SSRX差分线。连接器类型繁多,包括Type-A、Type-B、Mini-A/B、Micro-A/B以及Type-C。Type-C因支持正反插、大电流(最高5A)和交替模式(DP/HDMI),已成为现代设备的主流选择。

关键电气参数:

  • VBUS:标准电压5V±5%,USB 2.0最大电流500mA,USB 3.0/3.1为900mA,Type-C PD可协商至20V/5A。
  • D+/D-:差分对,特性阻抗90Ω±15%,全速/低速设备通过上拉电阻(1.5kΩ/1.5kΩ)识别速率。
  • 屏蔽层:高速信号必须使用屏蔽线缆,屏蔽层单端接地(主机侧),避免地环路。
  • 线缆长度:全速/低速最长5m,高速最长5m(但建议不超过3m以保证信号质量),超高速最长3m。

操作流程(线缆选型与验证):

1. 根据产品速率选择线缆等级:USB 2.0全速可选用28AWG/26AWG,高速建议24AWG/26AWG。
2. 检查连接器是否通过USB-IF认证,避免使用劣质连接器导致接触不良。
3. 使用TDR(时域反射计)测量差分阻抗,确保90Ω±10%。
4. 进行眼图测试:高速信号眼高≥400mV,眼宽≥0.6UI(单位间隔)。
5. 验证压降:在满载电流下,VBUS压降≤125mV(从主机端口到设备端)。

案例拆解:某工业设备使用USB Type-C接口,但连接后经常出现“设备无法识别”。初始现象是设备在特定线缆下工作正常,换线后失败。通过排查发现,问题不在线缆本身,而是Type-C连接器的CC(Configuration Channel)引脚处理不当。该设备未实现CC逻辑,导致主机无法检测到设备连接。解决方案:在设备端增加5.1kΩ下拉电阻(作为UFP,即Upstream Facing Port),并正确连接CC1/CC2引脚。修复后,设备在所有标准Type-C线缆下均能稳定枚举。

常见误区:不要认为Type-C连接器一定支持USB 3.0或PD快充。Type-C仅定义了物理接口形态,实际支持的协议由设备实现决定。很多Type-C线缆只支持USB 2.0(只有D+/D-,没有SSTX/SSRX),购买时需仔细查看规格。

2.5 总结复盘:基础概念的工程映射

本节内容看似基础,但直接关系到后续HID和CDC设备的开发成败。以下是需要牢记的要点:

  • 拓扑约束:USB是星型拓扑,设备不能像I2C那样并联在总线上,必须通过Hub扩展。
  • 角色不可逆:主机永远主动发起传输,设备只能被动响应。OTG(On-The-Go)设备可以切换角色,但同一时刻只能有一个主机。
  • 速率匹配:高速Hub向下兼容全速/低速设备,但混合速率会降低总线效率(高速总线上的全速设备会占用更多带宽)。
  • 物理层是根因:很多“枚举失败”问题最终都归结于线缆阻抗不匹配、连接器虚焊或VBUS压降过大。建议在原理图设计阶段就加入ESD保护器件(如USBLC6-2)和共模电感。