1. USB协议概述:从诞生到生态
大家好,我是老张。做硬件这行十几年了,USB协议算是我打交道最多的接口之一。今天咱们聊聊USB的来龙去脉,以及它背后的整个生态系统。
说实话,USB刚出来那会儿,我还在上学。那时候接个鼠标、键盘,还得关机、插口、重启,麻烦得很。USB的出现,说白了就是解决这个痛点——让外设连接变得像插电一样简单。
1.1 USB的诞生背景与发展历程
1994年,Intel、微软、IBM等几家公司坐在一起,觉得PC外设接口太乱了。串口、并口、PS/2、游戏口...每个接口都有自己的协议,用户插错口是常事。于是他们决定搞一个通用的串行总线——Universal Serial Bus。
关键时间节点:
- 1996年:USB 1.0发布,速率1.5 Mbps(低速)和12 Mbps(全速)。说实话,当时没多少人用,因为Windows 95不支持。
- 1998年:USB 1.1发布,iMac率先取消串口和并口,全部用USB。我记得那时候买了个USB鼠标,插上就能用,那种感觉——嗯,真香。
- 2000年:USB 2.0发布,速率480 Mbps(高速)。我当年做的一个项目,用USB 2.0传输视频数据,带宽刚刚够。
- 2008年:USB 3.0发布,速率5 Gbps(超高速)。线缆多了两根差分对,蓝色接口成了标志。
- 2013年:USB 3.1发布,速率10 Gbps。Type-C接口也在这时候开始推广。
- 2019年:USB 4.0发布,速率40 Gbps,基于Thunderbolt 3协议。
核心要点:USB的每一次升级,速率都是翻倍甚至翻几倍。但协议兼容性始终是底线——USB 4.0的Hub依然能识别USB 1.1的键盘。
1.2 USB 2.0/3.x/4.0/Type-C物理层差异
物理层这块,我踩过不少坑。咱们一个一个说。
USB 2.0物理层
USB 2.0用4根线:VBUS(电源)、GND(地)、D+和D-(数据差分对)。速率480 Mbps,半双工。什么意思?就是同一时刻只能发或收,不能同时。
我在项目中遇到过一个问题:D+和D-走线长度差了5mm,结果眼图闭合了。嗯,差分对等长很重要,尤其是高速模式。
USB 3.x物理层
USB 3.0在2.0的基础上,增加了两组差分对:SSTX+/-(发送)和SSRX+/-(接收)。一共9根线(加上地线)。全双工,可以同时收发。
| 版本 | 速率 | 编码方式 | 线缆数量 |
|---|---|---|---|
| USB 2.0 | 480 Mbps | NRZI + 位填充 | 4 |
| USB 3.0 | 5 Gbps | 8b/10b | 9 |
| USB 3.1 | 10 Gbps | 128b/132b | 9 |
| USB 3.2 | 20 Gbps(双通道) | 128b/132b | 9 |
避坑指南:我曾经因为USB 3.0的SSTX和SSRX接反了,折腾了两天才找到原因。记住:Host的TX接Device的RX,反之亦然。
USB 4.0物理层
USB 4.0基于Thunderbolt 3,使用Type-C接口。速率40 Gbps,支持PCIe和DisplayPort隧道传输。说白了,它不只是USB,还是一个通用数据通道。
物理层上,USB 4.0使用双通道,每个通道20 Gbps。编码方式用了更高效的RS-FEC(里德-所罗门前向纠错),抗干扰能力更强。
Type-C物理层
Type-C接口有24个引脚,支持正反插。CC引脚是关键——用于检测插入方向、协商供电和协议模式。
你想想看,一个接口要同时支持USB 2.0/3.x/4.0、DisplayPort、HDMI、PD充电...这复杂度,啧啧。我刚开始做Type-C项目时,光CC逻辑就看了三遍规范。
注意:Type-C不等于USB 3.x或4.0。Type-C只是一个接口形状,里面跑的协议可以是USB 2.0、3.0、4.0,甚至是DisplayPort Alt Mode。别搞混了。
1.3 USB生态系统
USB能成功,靠的不是协议本身,而是整个生态系统。咱们拆开来看。
Host(主机)
Host是USB总线的主控者。PC、笔记本、手机(OTG模式)都可以是Host。Host内部有Host Controller(主控器),负责管理总线上的所有事务。
我习惯把Host比作一个项目经理——它决定什么时候跟哪个Device通信,发什么数据,收什么数据。Device不能主动说话,只能等Host问它。
Device(设备)
Device就是各种外设:鼠标、键盘、U盘、摄像头、打印机...每个Device都有一个设备描述符,告诉Host「我是谁、我能干什么」。
Device分为几种类型:
- 人机交互设备(HID):鼠标、键盘,延迟敏感
- 大容量存储(Mass Storage):U盘、移动硬盘,吞吐量敏感
- 通信设备(CDC):Modem、串口转换器
- 视频设备(UVC):摄像头
- 音频设备(UAC):麦克风、音箱
Hub(集线器)
Hub用来扩展USB端口。一个Host最多可以接127个Device(包括Hub本身)。Hub负责转发Host的请求,同时管理下游端口的连接和断开。
我记得有一次调试一个USB Hub,下游设备插上后枚举失败。查了半天,发现是Hub的电源管理出了问题——它没给下游设备供电。嗯,有时候最基础的东西反而最容易忽略。
Cable(线缆)
线缆这东西,看着简单,其实门道很多。USB 2.0线最长5米,USB 3.0线最长3米。超过这个长度,信号衰减严重,眼图就闭合了。
我建议大家在选线缆时注意几点:
- 屏蔽层:好的线缆有编织屏蔽+铝箔屏蔽
- 线径:AWG 24以上的线径适合长距离
- 阻抗:90Ω差分阻抗,这个很重要
一句话总结:USB生态就是Host管、Device干、Hub扩、Cable连。四者缺一不可。
1.4 USB协议栈知识体系
下面这张图是我自己画的,把USB协议栈的层次结构梳理了一下。你看完应该能对整个体系有个直观认识。
这张图里,从上到下依次是:应用层、设备层、事务层、包层、物理层。LTSSM状态机位于物理层,是USB 3.x/4.0的核心——它管理链路的连接、休眠、唤醒等状态切换。
我个人习惯把LTSSM比作一个交通警察——它决定链路什么时候跑、什么时候停、什么时候转弯。后面我们会花大量篇幅讲这个,别急。
1.5 写在后面
USB协议看起来复杂,但拆开来看,每一层都有清晰的职责。你只要理解了Host和Device怎么对话、数据怎么打包、物理信号怎么传输,剩下的就是细节了。
嗯,这一章就到这里。记住:USB生态的核心是兼容性,不管版本怎么变,老设备插上新接口,该认还得认。
公众号:蓝海资料掘金营,微信deep3321