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设备插入后,主机是怎么知道它是什么设备的?这个过程叫“枚举”。说白了就是设备跟主机之间的一段“自我介绍”。

我画了一张流程图,把枚举过程的关键节点标出来了:

USB设备枚举流程图 USB设备枚举流程 设备插入 主机检测D+/D-电平 主机发送复位信号 设备返回设备描述符 主机分配地址并配置 设备就绪,开始数据传输 关键信号说明 • D+上拉:全速/高速设备 • D-上拉:低速设备 • 主机通过下拉15kΩ电阻 检测上拉信号

枚举过程中,有个细节特别重要:设备端的上拉电阻。全速设备在D+上拉1.5kΩ到3.3V,低速设备在D-上拉。主机就是靠检测哪条线上有上拉电压来判断设备速度的。

核心要点:USB 2.0高速设备在枚举时,会先以全速模式握手,然后通过Chirp J/K序列协商切换到高速模式。这个过程叫“高速握手”,很多兼容性问题都出在这一步。

1.5 嵌入式设计中的关键考量

做嵌入式USB设计,我总结了几个必须注意的点:

  1. ESD保护不能省——USB口是外露接口,静电放电是家常便饭。我习惯在D+/D-对地加TVS管,结电容要小于5pF,否则会影响信号完整性。
  2. VBUS的缓启动——热插拔时,VBUS瞬间给大电容充电会产生浪涌电流。加一个负载开关(如TPS2557)做限流,能避免电压跌落。
  3. 信号完整性——D+/D-走线要短、要直、要等长。过孔尽量少,最好不超过2个。串接22Ω~33Ω的电阻可以抑制过冲。
  4. 地回路——USB的GND和系统地要单点连接,避免形成地环路。我见过因为地环路导致USB通信间歇性失败的案例。

血的教训:曾经有一款产品,USB口在实验室测试一切正常,到了客户现场频繁掉线。最后发现是现场有强电磁干扰,而我们的USB线缆没有加磁环。从那以后,我设计的每一款产品,USB口都会预留共模扼流圈的位置——哪怕BOM里先不贴。