1. USB 基础概念:诞生背景、版本演进与物理拓扑

大家好,欢迎来到这门课。我是你们的老朋友,一个在嵌入式系统和 USB 协议栈里摸爬滚打了十几年的工程师。

咱们今天聊点最基础的,但也是最核心的——USB 到底是怎么来的?它经历了哪些版本?物理上又是怎么连起来的?

说实话,我刚入行那会儿,觉得 USB 就是个插拔接口,没什么了不起。直到有一次,我在一个工业相机项目里被枚举失败折腾了整整两周……嗯,从那以后,我再也不敢小看这个“小接口”了。

1.1 USB 的诞生背景:为什么要有 USB?

90 年代初,电脑外设的接口那叫一个乱。串口、并口、PS/2、SCSI、游戏口……每个接口都有自己的物理规格、协议和驱动。你想接个键盘、鼠标、打印机、扫描仪,得先搞清楚你的电脑有没有对应的口。

更头疼的是,这些接口不支持热插拔。你插个鼠标,得先关机,插好,再开机。万一插错了,烧设备也是常有的事。

1994 年,Intel、Microsoft、IBM 等七家公司坐到了一起。他们想做一个通用的、支持热插拔的、能同时接多个设备的接口。这就是 USB——Universal Serial Bus,通用串行总线。

USB 的核心设计目标:

  • 统一接口:一个口接所有外设
  • 热插拔:插上就能用,不用重启
  • 即插即用:系统自动识别设备,自动加载驱动
  • 可扩展:一个主机最多接 127 个设备
  • 供电:通过总线给设备供电,省去额外电源线

你想想看,在 90 年代中期,这些目标有多超前。我个人觉得,USB 能活到现在,靠的就是这五个设计原则,一个都没变过。

1.2 USB 版本演进:从 1.0 到 4.0

USB 从 1996 年第一个正式版本发布到现在,快 30 年了。版本号看着多,但核心变化其实就几件事:速度越来越快,供电能力越来越强,协议越来越复杂。

版本 发布时间 理论速率 编码方式 关键变化
USB 1.0 1996 1.5 Mbps (低速)
12 Mbps (全速)
NRZI 第一个正式版本,定义了基础协议
USB 1.1 1998 同上 NRZI 修复了 1.0 的 bug,真正开始普及
USB 2.0 2000 480 Mbps (高速) NRZI 速度提升 40 倍,引入微帧
USB 3.0 2008 5 Gbps (超高速) 8b/10b 新增差分信号对,全双工通信
USB 3.1 2013 10 Gbps (超高速+) 128b/132b 引入 Type-C 接口
USB 3.2 2017 20 Gbps 128b/132b 双通道传输
USB 4.0 2019 40 Gbps 128b/132b 基于 Thunderbolt 3 协议

我的经验之谈: 做嵌入式开发,USB 2.0 高速和 USB 3.0 超高速是最常见的。很多 MCU 只支持 USB 2.0,但别小看它——480 Mbps 对于大部分传感器、HID 设备、音频设备来说,完全够用。我曾经在一个数据采集项目里用 USB 2.0 跑 24 位音频,8 通道,采样率 192 kHz,一点问题没有。

这里有个坑,我得提醒你。USB 3.0 虽然叫“超高速”,但它的物理层和 2.0 完全不兼容。3.0 新增了 5 根线(一对发送、一对接收、一根地线),和 2.0 的 4 根线是并存的。所以 USB 3.0 的线缆比 2.0 粗得多,插头也多了一排触点。

避坑指南: 我曾经在一个产品里用了 USB 3.0 的 Type-A 插座,但只接了 2.0 的线。结果插 3.0 设备能识别,插 2.0 设备反而偶尔掉线。后来查了半天才发现,3.0 插座的 2.0 触点位置和 2.0 插座不一样,导致接触不良。所以,硬件设计时,USB 3.0 插座必须严格按照 3.0 的 layout 走线,不能偷懒。

1.3 USB 的物理拓扑结构:Host、Hub、Device

USB 的拓扑结构,说白了就是一棵树。树根是 Host,树枝是 Hub,树叶是 Device。

为什么用这种结构?因为 USB 是主从架构。所有通信都由 Host 发起,Device 只能被动响应。Hub 的作用就是扩展端口,让一个 Host 能接多个 Device。

来,我画个图给你看。

USB 物理拓扑结构图 USB 物理拓扑结构 Host(主机) 根 Hub(Root Hub) Hub 1 Hub 2 Hub 3 Hub 4 Device A Device B Device C Device D Device E 最多支持 7 层 Hub 级联,总共 127 个设备(含 Hub 本身)

这张图里,Host 是唯一的通信发起者。根 Hub 集成在 Host 内部,负责管理所有端口。Hub 可以级联,但最多 7 层。每个 Hub 下面可以再接 Hub 或者 Device。

这里有个关键点:所有 Device 都挂在 Hub 的端口上。每个端口对应一个地址,Host 通过地址来寻址。地址是 7 位的,所以最多 127 个设备(地址 0 保留给未配置的设备)。

三个角色的职责:

  • Host(主机):发起所有传输,管理总线带宽,分配地址,检测设备插拔。典型代表:PC、手机、开发板。
  • Hub(集线器):转发信号,检测端口状态,管理电源。它自己不参与数据传输,只是“传话”的。
  • Device(设备):响应 Host 的请求,实现具体功能。比如键盘、U 盘、摄像头。

你可能会问:为什么不用星型拓扑或者总线型拓扑?

嗯,这个问题我当年也想过。USB 用树型拓扑,核心原因是供电管理和信号完整性。每个 Hub 可以独立控制端口的电源,如果某个设备短路了,Hub 可以断开那个端口,不影响其他设备。如果是总线型拓扑,一个设备短路,整条总线都挂了。

我的建议: 做嵌入式 USB 设备时,尽量把设备设计成“自供电”模式(Self-Powered),而不是“总线供电”(Bus-Powered)。总线供电虽然省事,但电流限制很严格(USB 2.0 最大 500 mA,USB 3.0 最大 900 mA)。我曾经有个项目,设备需要 600 mA 电流,用总线供电死活起不来,后来改成自供电,问题秒解。

1.4 小结:这一章你该记住什么?

好了,咱们把这一章的核心点捋一捋:

  • USB 是为了解决接口混乱、不支持热插拔的问题而生的
  • 版本从 1.0 到 4.0,速度从 1.5 Mbps 飙到了 40 Gbps
  • 物理拓扑是树型结构:Host → Hub → Device,最多 127 个设备
  • Host 是老大,所有通信都由它发起

这些概念看着简单,但它们是后面所有内容的基础。下一章,咱们要深入 USB 的电气特性——D+、D- 上的电平变化,到底是怎么表示 0 和 1 的?

到时候见。