USB 协议基础:规范、版本、电气特性与连接器
大家好,我是老周。做嵌入式这行十几年了,从USB 1.1用到现在的USB4,可以说见证了USB从“低速鼠标接口”到“全能扩展总线”的整个过程。
今天第一章节,咱们聊聊USB协议的基础。这部分虽然比较理论,但却是后续抓包分析的基础。说白了,你得先知道USB“说”的是什么“语言”,才能读懂抓包软件里那些乱七八糟的波形和事务。
1.1 USB 规范与标准化组织
USB的全称是Universal Serial Bus,通用串行总线。这个名字很直观,就是想让各种设备用一种统一的总线方式连接。
制定USB标准的组织叫USB-IF(USB Implementers Forum,USB实施者论坛)。我的习惯是,遇到不确定的协议细节,直接去USB-IF官网查官方规范文档,那比任何二手资料都靠谱。那些规范PDF动辄几千页,咱们实战用到的核心部分其实很集中。
核心要点:USB是Host(主机)主导的总线。所有通信都由Host发起,Device(设备)只能被动响应。这一点和I2C、SPI不一样,你想想看,USB鼠标从来不会自己主动给电脑发数据,都是电脑轮询它。
1.2 版本历史与速率
USB版本迭代,主要干了三件事:提速、提功率、换接口。我个人认为,理解速率是第一位的,因为抓包数据分析时,帧长度和传输速度直接挂钩。
| USB 版本 | 官方命名 | 最大速率 | 编码方式 |
|---|---|---|---|
| USB 1.0 / 1.1 | Low-Speed / Full-Speed | 1.5 Mbps / 12 Mbps | NRZI + 位填充 |
| USB 2.0 | High-Speed | 480 Mbps | NRZI + 位填充 |
| USB 3.x | SuperSpeed / SuperSpeed+ | 5 Gbps / 10 Gbps / 20 Gbps | 8b/10b / 128b/132b |
| USB4 | USB4 Gen 2×2 / Gen 3×2 | 40 Gbps | 基于Thunderbolt 3协议 |
我的小经验:USB 2.0 High-Speed虽然标称480 Mbps,但实际有效数据传输速率受协议开销影响,通常能跑到350-400 Mbps就算调得不错了。我在做硬盘盒项目时就为这个上限纠结了很久。
1.3 电气特性
电气特性这部分,咱们抓包时经常要确认信号质量。我踩过坑,所以分享给你们。
电压与电流:
- VBus:标准的VBUS是5V,允许有±5%的波动。有些便携设备在长线上电压会跌到4.5V以下,这时候就容易掉线。
- 电流:USB 2.0默认最大500mA,USB 3.0是900mA。Type-C PD(Power Delivery)协议则能把电压拉到20V、电流到5A。
信号电平:USB使用差分信号传输(D+和D-两根线)。这样说吧,D+和D-之间的电压差代表逻辑“1”或“0”。
- Low-Speed / Full-Speed:信号幅度约3.3V,摆率较慢。
- High-Speed:信号幅度只有400mV左右(更小的摆幅意味着更高速)。为什么这样?为了减少电磁干扰,保证480Mbps下的信号完整性。
避坑指南:我曾经遇到过一批USB设备在特定主机上无法识别,抓包发现D+线上的终端电阻焊接虚焊,导致信号反射严重。很多启动枚举失败的问题都可以靠检查D+、D-的波形来解决。
1.4 连接器类型
连接器是USB最“百花齐放”的部分。早期接口种类繁多,Type-C出现后终于一统江湖。
- Type-A:标准长方形,Host端最常见。我建议初学者买个弯头延长线,方便接入示波器探头。
- Type-B:正方形,常用于打印机、外置硬盘等大型设备。
- Mini USB:2.0时代的主流小型接口,现在基本淘汰。
- Micro USB:虽然薄,但插拔寿命有限,很多手机用久了就会接触不良。
- Type-C:支持正反插、最高240W供电、支持DP/HDMI视频输出。它的CC(Configuration Channel,配置通道)引脚负责协商电源和角色,这也是它智能的地方。
记住这一点:抓包分析时,接头松动是信号异常的常见来源之一。很多“CRC错误”或“数据包丢失”其实只是物理连接不稳定。我习惯在长测试前先把连接器插拔几次,确保接触正常。
1.5 USB 系统拓扑
USB采用星形拓扑结构,以Host为中心,通过Hub扩展连接多个设备。拓扑层次最多7层(包括根Hub)。
上图展示了一个典型的USB拓扑。总线拓扑啥意思?说白了,就是一颗星星。Host在中间,Hub和Device挂在他周围。每个数据包都先走Host到Hub,再由Hub转发给对应Device。抓包时,你看到的很多“标识符”关系都跟这个层次有关——比如SOF(Start of Frame,帧起始包)就是在Root Hub生成的。
1.6 为何关注这些基础
很多工程师觉得知道速率就够了,但实际并非如此。我在做USB视频采集卡调试时,遇到画面撕裂问题。抓包后发现是Full-Speed设备占用了USB总线带宽,影响了High-Speed设备的等时传输。如果不懂速率、电气和拓扑的映射关系,这个问题排查起来会非常痛苦。
嗯,这一节的内容就到这里。咱们把根基打牢,后面分析和调试才能胸有成竹。