1. USB协议概述:从1.0到4,高速是怎么来的

大家好,我是你们的USB协议讲师。做了十几年嵌入式,我可以说跟USB打了半辈子交道。从最早的USB 1.1鼠标,到现在的USB4硬盘盒,这个协议一路演变,说实话变化非常大。

这章咱们先不急着抠细节。先把USB的发展脉络捋清楚,搞明白高速(High Speed)到底是个什么位置的角色。底子打好了,后面学解码参数才不费劲。

1.1 USB发展简史

USB的出现,说白了就是为了干掉那一堆又大又乱的串口、并口、PS/2口。1996年USB 1.0刚出来的时候,速率只有1.5Mbps,叫Low Speed。当时主要给键盘鼠标用。嗯,确实很慢,但至少能热插拔了,这在当时可是个大进步。

1998年USB 1.1来了,把速率提到了12Mbps,叫Full Speed。我记得最早做嵌入式项目时,还在用USB 1.1传数据。那时候一个U盘拷个几MB的文件都得等半天,但你已经觉得很方便了——毕竟不用装驱动嘛。

关键转折点:USB 2.0 —— 2000年发布的USB 2.0把速率一下子拉到480Mbps,命名为High Speed(高速)。这个版本彻底改变了USB的命运。打印机、扫描仪、外置硬盘、视频采集卡……都开始用USB了。

USB 2.0向下兼容1.1和1.0,也就是说你插一个全速设备到2.0口上,它会自动降速。这个兼容设计我非常欣赏,但它也带来了一些麻烦——后面讲枚举流程时会提到。

2008年USB 3.0推出,速率飙到5Gbps,叫SuperSpeed。3.0加了额外的物理通道,所以插头里的针脚多了好几根。你在项目中看到蓝色舌头的USB口,那就是3.0。

再往后USB 3.1(10Gbps)、USB 3.2(20Gbps),命名上折腾了好几轮。我个人习惯直接看速率,不看版本号——厂商的命名实在太乱。2019年USB4发布,基于Thunderbolt 3协议,速率最高40Gbps。到了这个阶段,USB已经不光传数据了,还能同时传视频和供电。

一个实用的识别方法: USB 2.0接口内部通常是黑色或白色的塑料舌片,USB 3.0是蓝色的,USB 3.1是蓝绿色或红色的。USB4 Type-C接口则是全功能的,不只看颜色,还得看协议支持。

1.2 什么是USB高速(High Speed)

高速模式在USB 2.0规范里正式定义,速率480Mbps。注意,这是原始比特率。去掉协议开销后,实际有效吞吐量大约在280Mbps~320Mbps之间,具体取决于传输类型和帧结构。

为什么会差这么多?因为USB是主机轮询的协议,每一帧都有开销。高速模式下帧周期是125µs(微帧),比全速的1ms短很多。所以虽然开销比例差不多,但高速的延迟和吞吐表现都比全速好得多。

编码方式上,高速用的是NRZI(Non Return to Zero Inverted)加上位填充。NRZI是一种差分编码,遇到0就翻转电平,遇到1保持不变。为了避免长时间没有电平跳变导致时钟失锁,协议规定连续6个1之后必须插入一个0——这就是位填充。

避坑指南: 我在项目中遇到过USB高速信号质量不过关的问题。线缆稍微长一点,或者PCB走线没控好阻抗,高速信号就容易出现眼图闭合。我曾经帮一个客户排查过,他们用了一根2米长的劣质USB线接高速摄像头,结果一直枚举失败。换成1.5米的屏蔽线,问题立刻解决。高速模式下,线缆质量真的不是玄学。

物理层差异方面,高速模式对端接电阻的要求和全速/低速不一样。高速模式下,D+和D-线上各需要45Ω的下拉电阻到地,而全速/低速需要15kΩ的下拉。这也是为什么USB 2.0的PHY芯片会比1.1的复杂很多。

1.3 高速 vs 全速 vs 低速:一表看懂

下面这个表格,我建议你收藏。做项目选型时经常要用到。

参数 Low Speed(低速) Full Speed(全速) High Speed(高速)
规范版本 USB 1.0 USB 1.1 USB 2.0
标称速率 1.5 Mbps 12 Mbps 480 Mbps
实际吞吐(约) 0.9 MB/s 7 MB/s 280~320 Mbps
帧周期 1 ms 1 ms 125 µs(微帧)
编码方式 NRZI + 位填充 NRZI + 位填充 NRZI + 位填充
信号电压 3.3V 差分 3.3V 差分 400mV 差分
终端电阻 D+ 15kΩ 下拉 D- 15kΩ 下拉 D+/D- 45Ω 下拉
推荐线缆长度 ≤ 5m ≤ 5m ≤ 5m(实际建议3m以内)
典型设备 鼠标、键盘 音频、HID、打印机 U盘、硬盘、摄像头

你看,高速和全速虽然编码方式一样,但信号电压从3.3V降到了400mV。为什么?因为频率上去了,高摆幅的信号在高速下会产生很大的EMI和功耗。所以高速PHY用低压差分信号来降低干扰。这也是为什么高速线缆的屏蔽要求比全速高很多。

选型时我的建议: 如果你的设备只需要传几KB的控制数据(比如一个传感器),用全速就够了,没必要上高速。高速PHY的功耗和BOM成本都比全速高。但如果你要做U盘、摄像头或者数据采集卡,直接上高速,别犹豫。

搞清楚了这三种速率的定位,你就能明白为什么USB协议栈里要对它们分开处理。高速的帧结构、事务格式、握手协议都和全速/低速不一样。后面几章会深入到字节级别去拆解这些差异。

USB协议发展历程与速率演进 USB 1.0/1.1 1996 / 1998 1.5M / 12M USB 2.0 2000 ✦ High Speed 480Mbps ★ USB 3.0 2008 5Gbps (SuperSpeed) USB 3.1 / 3.2 2013 / 2017 10G / 20Gbps USB4 2019 40Gbps ▎USB高速(High Speed)在协议演进中的位置 USB 2.0 High Speed(480Mbps)是USB协议发展的分水岭。 它首次将消费级外设总线带入了百兆以上时代,后续USB 3.x和USB4 都是在高速协议基础上的扩展与提速。高速帧结构和事务处理机制 是理解整个USB协议栈的核心基础。

这张图把USB从1.0到USB4的演进路线画出来了。你可以清楚看到,高速(480Mbps)正好卡在中间位置——它比全速快了40倍,而它后面的3.0又比它快了10倍。但说实话,从协议复杂度来看,高速到超高速的变化,比全速到高速的变化小得多。USB 3.0虽然速率高,但它是在高速协议外面加了一套独立的超高速通道,并不是把高速协议改掉了。

所以,学好高速协议,就等于吃透了USB协议的核心。后面3.x和USB4的那些扩展,理解起来会顺手很多。

嗯,这一章的内容就是这些。把USB的版本脉络和三种速率的差异搞清楚,咱们就可以往下深入了。