1. USB接口基础:协议演进、物理层特性与电气规范
做嵌入式硬件这些年,我经手过不下几十种USB接口的设计。从最早的USB 1.1到现在的USB4,协议在变,但有些底层的物理规矩从来没变过。今天咱们就把这些基础掰开揉碎了聊一聊。
1.1 USB协议演进:从1.0到4.0
USB协议的发展史,说白了就是一部“速度竞赛史”。我最早接触USB 1.1时,觉得12Mbps已经很快了——毕竟当时串口才115200bps。后来USB 2.0出来,480Mbps的速度直接让外置硬盘成了可能。
下面这张表是我自己整理的,每次做新项目都会翻出来看一眼:
| 版本 | 理论速率 | 编码方式 | 信号电压 | 推出年份 |
|---|---|---|---|---|
| USB 1.0/1.1 | 1.5 Mbps (低速) 12 Mbps (全速) |
NRZI + 位填充 | 3.3V (差分) | 1996 |
| USB 2.0 | 480 Mbps (高速) | NRZI + 位填充 | 400mV (差分) | 2000 |
| USB 3.0/3.1 | 5 Gbps / 10 Gbps | 8b/10b | 1.0V (差分) | 2008 / 2013 |
| USB 3.2 | 20 Gbps (双通道) | 128b/132b | 1.0V (差分) | 2017 |
| USB4 | 40 Gbps | 128b/132b | 1.0V (差分) | 2019 |
关键点:USB 2.0高速模式虽然速率提升了40倍,但差分信号电压反而从3.3V降到了400mV。为什么?因为高频信号需要更小的摆幅来降低EMI和功耗。这个取舍在高速设计中很常见。
1.2 物理层特性:D+ / D- 那点事
USB的物理层,核心就是一对差分信号线——D+和D-。嗯,这里要注意:很多人以为USB只是简单的“两根数据线”,其实里面的门道不少。
我遇到过最典型的坑:有次做一款工业平板,USB口总是识别不稳定。查了半天,发现是D+和D-的走线长度差了将近2cm。对于全速设备来说可能还能忍,但高速设备对等长要求非常严格。
差分信号的关键参数
- 差分阻抗:90Ω ± 15%(这是USB-IF的硬性要求)
- 对内等长:高速模式下建议控制在5mm以内
- 对地电容:每个信号线对地电容不超过10pF
- 上升时间:高速模式500ps~1ns,全速模式4ns~20ns
避坑指南:我曾经在一个项目中,为了节省PCB空间,把D+和D-走在了内层,结果阻抗完全失控。后来老老实实走表层,参考完整的地平面,问题才解决。记住:USB高速信号尽量走表层,且下方要有连续的地平面。
1.3 电气规范:VBUS与电源管理
说到电源管理,VBUS是咱们做嵌入式最关心的部分。USB的电源规范其实很细致,我建议每个硬件工程师都背下来:
| 参数 | USB 2.0 | USB 3.0/3.1 | USB BC 1.2 | USB PD |
|---|---|---|---|---|
| VBUS电压 | 4.75V ~ 5.25V | 4.75V ~ 5.25V | 4.75V ~ 5.25V | 5V ~ 20V |
| 最大电流 | 500mA | 900mA | 1.5A / 3.0A | 最高5A |
| 最大功率 | 2.5W | 4.5W | 7.5W / 15W | 最高100W |
| 压降要求 | VBUS ≤ 125mV | VBUS ≤ 125mV | VBUS ≤ 125mV | 由PD协商 |
你想想看,一个USB口从最初的2.5W发展到现在的100W,这中间的变化有多大。但有个细节很多人忽略:VBUS的压降要求一直没变——从主机到设备,整个链路上的压降不能超过125mV。这意味着什么?意味着你的PCB走线、连接器、线缆,每一环的电阻都要严格控制。
实战经验:我设计USB供电电路时,习惯在VBUS入口加一个10μF的陶瓷电容(X7R材质),再加一个0.1μF的高频去耦电容。别小看这两个电容,它们能解决90%的USB供电不稳问题。
1.4 信号定义:枚举与握手
USB设备插入后,主机是怎么知道它是什么设备的?这个过程叫“枚举”。说白了就是设备跟主机之间的一段“自我介绍”。
我画了一张流程图,把枚举过程的关键节点标出来了:
枚举过程中,有个细节特别重要:设备端的上拉电阻。全速设备在D+上拉1.5kΩ到3.3V,低速设备在D-上拉。主机就是靠检测哪条线上有上拉电压来判断设备速度的。
核心要点:USB 2.0高速设备在枚举时,会先以全速模式握手,然后通过Chirp J/K序列协商切换到高速模式。这个过程叫“高速握手”,很多兼容性问题都出在这一步。
1.5 嵌入式设计中的关键考量
做嵌入式USB设计,我总结了几个必须注意的点:
- ESD保护不能省——USB口是外露接口,静电放电是家常便饭。我习惯在D+/D-对地加TVS管,结电容要小于5pF,否则会影响信号完整性。
- VBUS的缓启动——热插拔时,VBUS瞬间给大电容充电会产生浪涌电流。加一个负载开关(如TPS2557)做限流,能避免电压跌落。
- 信号完整性——D+/D-走线要短、要直、要等长。过孔尽量少,最好不超过2个。串接22Ω~33Ω的电阻可以抑制过冲。
- 地回路——USB的GND和系统地要单点连接,避免形成地环路。我见过因为地环路导致USB通信间歇性失败的案例。
血的教训:曾经有一款产品,USB口在实验室测试一切正常,到了客户现场频繁掉线。最后发现是现场有强电磁干扰,而我们的USB线缆没有加磁环。从那以后,我设计的每一款产品,USB口都会预留共模扼流圈的位置——哪怕BOM里先不贴。