1. USB 协议概述:从诞生到 Type-C 的演进之路
大家好,欢迎来到这门课的第一章。咱们今天不聊枯燥的寄存器配置,先聊聊 USB 这个协议本身是怎么一路走到今天的。我做了十几年固件,从 USB 1.1 时代就开始跟它打交道,说实话,看着它从 12 Mbps 发展到 40 Gbps,还是挺感慨的。
USB 的全称是 Universal Serial Bus,中文叫通用串行总线。但你别被「串行」两个字骗了,觉得它慢。现在的 USB4,速度已经能跟雷电接口掰手腕了。
1.1 USB 的发展历史:三个关键节点
USB 标准的演进,说白了就是一部「速度与兼容」的博弈史。我把它分成三个阶段来讲:
| 阶段 | 代表版本 | 速率 | 核心变化 |
|---|---|---|---|
| 奠基期 | USB 1.0 / 1.1 | 1.5 Mbps / 12 Mbps | 取代串口并口,统一外设接口 |
| 普及期 | USB 2.0 | 480 Mbps | 引入微帧、高速模式,成为绝对主流 |
| 爆发期 | USB 3.x / USB4 | 5 Gbps ~ 40 Gbps | 全双工、双总线、Type-C 物理层统一 |
嗯,这里有个细节我想强调一下。USB 1.0 其实是个「半成品」,1996 年发布时连 Host Controller 的规范都没定死。真正可用的产品是 1998 年的 USB 1.1,那时候我还在学校,第一次用上 USB 鼠标,感觉比 PS/2 口方便太多了。
1.2 USB 2.0 标准:半双工的巅峰
USB 2.0 发布于 2000 年,把速率从 12 Mbps 直接拉到 480 Mbps。你想想看,40 倍的提升,这在当时简直是飞跃。
但有个问题——USB 2.0 是半双工的。什么意思?就是同一时刻只能有一方在发数据。主机发设备收,或者设备发主机收,不能同时进行。这一点跟后面的 USB 3.0 有本质区别。
USB 2.0 定义了三种速率模式:
- 低速(Low Speed): 1.5 Mbps,用于鼠标、键盘等 HID 设备
- 全速(Full Speed): 12 Mbps,用于音频、HID 等中等带宽设备
- 高速(High Speed): 480 Mbps,用于存储、视频等大带宽设备
我刚开始做 USB 固件时,踩过一个坑:高速设备在枚举时,会先以全速模式握手,然后通过「Chirp J/K」信号切换到高速模式。如果硬件上 D+/D- 的走线不等长,这个切换就可能失败。设备会一直卡在全速模式,性能大打折扣。
1.3 USB 3.x 标准:全双工的革命
USB 3.0 发布于 2008 年,代号 SuperSpeed。它最大的变化是什么?从半双工变成了全双工。
怎么做到的?很简单——加了一组独立的差分对。USB 2.0 只有 D+/D- 一组差分线,收发共用。USB 3.0 额外增加了 SSTX+/SSTX-(发送对)和 SSRX+/SSRX-(接收对),再加上地线,总共 9 根线。
这样一来,主机和设备可以同时收发数据,理论吞吐量翻倍。USB 3.0 的速率是 5 Gbps,USB 3.1 Gen 2 翻到 10 Gbps,USB 3.2 通过双通道达到 20 Gbps。
| 版本 | 商业名称 | 速率 | 编码方式 |
|---|---|---|---|
| USB 3.0 | SuperSpeed | 5 Gbps | 8b/10b |
| USB 3.1 Gen 2 | SuperSpeed+ | 10 Gbps | 128b/132b |
| USB 3.2 Gen 2x2 | SuperSpeed+ 双通道 | 20 Gbps | 128b/132b |
这里有个容易混淆的地方:USB 3.0、3.1、3.2 的物理层其实是一样的,只是协议层做了优化。我建议你在做固件开发时,直接把它们当成「不同速率等级的同一套硬件」来理解,这样设计驱动时思路会更清晰。
1.4 USB4 标准:融合与统一
USB4 是 2019 年发布的,它基于 Intel 的 Thunderbolt 3 协议。说白了,USB4 就是把雷电 3 的协议栈拿过来,改了个名字,然后强制要求兼容 USB 2.0 和 USB 3.x。
USB4 的核心特性:
- 速率: 20 Gbps(Gen 2)或 40 Gbps(Gen 3)
- 隧道协议: 支持 USB 3.x、DisplayPort、PCIe 在同一根线上传输
- 主机到主机: 支持两台主机直连通信
- 动态带宽分配: 根据应用需求实时调整各隧道带宽
我个人觉得,USB4 最大的意义不是速度,而是「统一」。你想想看,以前笔记本上要有 USB-A、HDMI、DP、雷电口,现在一个 Type-C 全搞定。这对固件开发者来说,意味着要处理更复杂的协议栈,但硬件设计反而简化了。
1.5 USB Type-C 与 PD 协议简介
Type-C 是物理接口,不是协议标准。这一点很多人搞混。Type-C 接口可以跑 USB 2.0、USB 3.x、USB4、雷电 3/4,甚至只用来充电。
Type-C 的物理特性:
- 正反可插: 24 个引脚对称分布,CC 引脚用于方向检测
- 支持大电流: 默认 3A,通过 PD 协议可达 5A
- 支持 Alternate Mode: 可以传输 DisplayPort、HDMI、Thunderbolt 等信号
PD(Power Delivery)协议是 Type-C 的「充电大脑」。它通过 CC 引脚通信,协商电压和电流。PD 3.0 支持最高 240W(48V/5A)的功率传输。
我在做 PD 固件时,遇到过最头疼的问题是「协议死锁」。比如,两个设备都认为自己该当 Source,结果一直协商不成功。后来发现是 CC 引脚的上拉/下拉电阻配置错了。嗯,这种问题用示波器抓 CC 引脚的波形,一眼就能看出来。
1.6 本章知识体系总览
下面这张图,把 USB 协议栈的演进脉络和核心概念串在了一起。你可以把它当作本章的「思维导图」来用。
这张图里,我特意把「半双工→全双工」和「轮询→异步通知」这两条演进线标了出来。为什么?因为这是理解 USB 协议栈设计思想的关键。后面的章节,我们会反复回到这两个概念上。