3. USB物理层:差分信号(D+/D-)、电气特性、线缆与连接器规范
好,咱们今天聊聊USB最底层的东西——物理层。很多做固件的兄弟觉得这层跟自己没关系,反正寄存器配好了就能收发数据。我刚开始也这么想,直到有一次板子调了三天,死活枚举不过,最后发现是D+和D-走线没等长……嗯,从那以后我再也不敢小看物理层了。
说白了,物理层就是USB通信的“高速公路”。路修得不好,上层协议再牛也跑不起来。这一章咱们把差分信号、电气特性、线缆连接器这几个硬骨头啃透。
3.1 差分信号:为什么是D+/D-?
USB用两根线传数据,D+和D-。为什么不用单端?抗干扰。你想想看,如果只用一根线传信号,外界来个电磁干扰,电平一跳,数据就错了。差分信号就不一样——两根线传相反的信号,干扰来了两根线一起跳,一减就抵消了。
核心公式(理解就行,不用背):
差分电压 Vdiff = V(D+) - V(D-)
共模电压 Vcm = (V(D+) + V(D-)) / 2
接收端只看Vdiff,共模干扰自动消除。
我在项目中遇到过一件事:有个同事用示波器量D+波形,看着挺干净,但设备就是连不上。后来我让他量差分对,才发现共模噪声已经大到阈值边缘了。所以记住——调试USB物理层,永远看差分信号,别只看单端。
3.2 电气特性:电压、阻抗、时序
USB的电气特性分版本。咱们先看最常用的USB 2.0,再提一下USB 3.x的变化。
3.2.1 USB 2.0 电气参数
| 参数 | 最小值 | 典型值 | 最大值 | 说明 |
|---|---|---|---|---|
| 差分信号幅度 | 0.3 V | 0.4 V | 0.6 V | 高速模式下 |
| 单端信号幅度 | 2.8 V | 3.0 V | 3.6 V | 全速/低速模式下 |
| 差分阻抗 | 76 Ω | 90 Ω | 105 Ω | D+/D-对地 |
| 上升/下降时间 | — | — | 4 ns | 高速模式,20%-80% |
| 共模电压范围 | 0.8 V | 2.0 V | 2.5 V | 高速模式下 |
避坑指南:我曾经在一个量产项目上吃过亏——PCB走线阻抗没控制好,差分阻抗跑到了120Ω。结果就是:实验室里几根短跳线能工作,产线上批量烧录死活不稳定。后来加钱改板,换了四层板才搞定。所以Layout阶段一定要跟PCB厂确认阻抗控制参数。
3.2.2 速度识别:上拉电阻的秘密
USB设备怎么告诉主机自己是啥速度?靠D+或D-上的上拉电阻。
- 低速设备(1.5 Mbps):在D-上拉1.5 kΩ到3.3V
- 全速设备(12 Mbps):在D+上拉1.5 kΩ到3.3V
- 高速设备(480 Mbps):先以全速身份握手,再通过Chirp J/K序列切换到高速模式
这个机制我建议你记牢。调试的时候,量一下D+或D-的对地电压,就能判断设备有没有正确上拉。全速设备D+应该是3V左右,低速设备D-是3V左右。如果量出来是0V,那设备根本没起来,别浪费时间查协议了。
3.3 线缆与连接器规范
线缆这东西,看着简单,坑不少。我见过有人用2米长的劣质线跑高速模式,结果眼图闭得一塌糊涂。
3.3.1 线缆结构
USB 2.0线缆内部有4根线:
- VBUS(红):5V电源,最大500mA(USB 2.0)
- GND(黑):地线
- D+(绿):差分正
- D-(白):差分负
注意,D+/D-必须是双绞线结构。为什么?双绞能进一步抑制共模干扰。我拆过不少USB线,正规厂家的双绞节距大概在10-15mm。劣质线直接平行走线,这种线超过1米就别想跑高速了。
3.3.2 连接器类型
| 类型 | 引脚数 | 常见用途 | 最大速率 |
|---|---|---|---|
| USB-A | 4 | 主机端(电脑、充电器) | USB 2.0 |
| USB-B | 4 | 设备端(打印机、音箱) | USB 2.0 |
| Mini-B | 5 | 旧款手机、MP3 | USB 2.0 |
| Micro-B | 5 | 安卓手机、嵌入式开发板 | USB 2.0 |
| USB-C | 24 | 现代笔记本、手机 | USB 3.x / 4 |
个人经验:做嵌入式产品,我建议优先选Micro-B或USB-C。Micro-B机械强度好,成本低。USB-C虽然引脚多、协议复杂,但正反插和高速能力是趋势。如果你做的是小批量产品,Micro-B最省心。
3.3.3 线缆长度限制
USB 2.0规范对线缆长度有明确限制:
- 低速模式:最长5米
- 全速模式:最长5米
- 高速模式:最长5米
等等,都是5米?对,但前提是线缆质量达标。实际项目中,高速模式超过3米就开始有风险了。我建议你保守一点:高速USB 2.0线缆不要超过3米。超过这个长度,加个USB Hub中继一下更靠谱。
3.4 物理层知识体系总览
下面这张图把USB物理层的核心知识点串起来了。我画图的时候习惯把“信号完整性”放在中间——因为不管你研究差分对、阻抗匹配还是线缆规范,最终目标都是保证信号完整到达接收端。
3.5 调试物理层的几个实用技巧
最后分享几个我实际项目中用过的调试方法,希望对你有帮助。
- 量电压判断设备状态:设备插入后,量D+或D-对地电压。全速设备D+约3V,低速设备D-约3V。如果都是0V,检查上拉电阻或电源。
- 用示波器看眼图:高速模式下,眼图是最直观的信号质量指标。眼睛睁开得越大越好。如果眼图闭合,先查阻抗匹配和线缆长度。
- 检查连接器焊接:Micro-B和USB-C的引脚间距小,虚焊是常见问题。我习惯用万用表通断档,从连接器引脚量到主控芯片引脚,确保每根线都通。
- 注意ESD保护:USB接口裸露在外,容易受静电冲击。我建议在D+/D-上加TVS管,VBUS上加自恢复保险丝。别省这几个元件,返修成本高得多。
又一个坑:我曾经遇到过一批板子,USB插拔几次后就识别不到了。查了半天,发现是TVS管的结电容太大(超过10pF),把高速信号的边沿搞缓了。所以选ESD器件时,一定要看结电容参数——USB 2.0高速模式下,建议小于2pF。
好了,物理层就聊到这儿。内容不多,但都是硬功夫。你把这些搞透了,后面讲协议层、传输层的时候,心里就有底了。