2、USB基础概念:USB总线架构、主机与设备角色、传输速率、线缆与连接器
USB(Universal Serial Bus,通用串行总线)自1996年问世以来,已经从最初替代串口/并口的低速外设总线,演变为覆盖存储、音视频、网络、充电、调试等几乎所有外设互联场景的通用I/O标准。理解USB的基础概念,是后续学习HID(人机接口设备)和CDC(通信设备类)协议的前提。本节将围绕USB的拓扑结构、角色分工、速率演进以及物理层连接四个维度展开,帮助读者建立完整的USB系统视图。
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事务,可以精确还原拓扑。
2.2 主机与设备角色:谁控制总线?
核心原理:USB是主从架构(Master-Slave),主机(Host)扮演主设备角色,外设(Device)扮演从设备角色。主机负责:
- 总线调度:主机控制器以1ms(全/低速)或125μs(高速微帧)为周期生成帧(Frame)或微帧(Microframe),并在帧起始时发送SOF包。
- 枚举管理:设备插入后,主机通过复位总线、分配地址(1-127)、读取设备描述符(Device Descriptor)完成枚举。
- 电源管理:主机控制VBUS(5V电源)的通断,支持挂起(Suspend)和远程唤醒(Remote Wakeup)。
- 错误处理:主机重试失败的事务,并记录错误统计。
设备角色相对被动,但必须实现端点(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)。
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。
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线缆下均能稳定枚举。
2.5 总结复盘:基础概念的工程映射
本节内容看似基础,但直接关系到后续HID和CDC设备的开发成败。以下是需要牢记的要点:
- 拓扑约束:USB是星型拓扑,设备不能像I2C那样并联在总线上,必须通过Hub扩展。
- 角色不可逆:主机永远主动发起传输,设备只能被动响应。OTG(On-The-Go)设备可以切换角色,但同一时刻只能有一个主机。
- 速率匹配:高速Hub向下兼容全速/低速设备,但混合速率会降低总线效率(高速总线上的全速设备会占用更多带宽)。
- 物理层是根因:很多“枚举失败”问题最终都归结于线缆阻抗不匹配、连接器虚焊或VBUS压降过大。建议在原理图设计阶段就加入ESD保护器件(如USBLC6-2)和共模电感。