一、USB协议概述:从USB 1.0到USB4的演进之路

大家好,我是老张。做硬件这行十几年了,USB协议算是我打交道最多的接口之一。今天咱们聊聊USB的发展史、物理层特性,还有它的拓扑结构。这些东西看着基础,但很多坑都藏在这些基础里。

1.1 USB的发展历史

USB这玩意儿,最早是1996年出来的。那时候电脑后面一堆串口、并口,插个鼠标都得关机。Intel、微软、IBM这帮大佬看不下去了,联合搞了个USB标准。

USB 1.0 / 1.1(1996-1998)

说实话,第一代USB挺惨的。1.0版本只有1.5Mbps的低速模式,后来1.1才加了12Mbps的全速模式。我记得当年第一次用USB鼠标,那感觉——终于不用关机插拔了!

USB 2.0(2000年)

这才是真正普及的一代。480Mbps的高速模式,让U盘、移动硬盘成了可能。我在2005年做过一个项目,用USB 2.0传输视频数据,那会儿还得小心翼翼地处理带宽分配,生怕丢帧。

USB 3.0 / 3.1 / 3.2(2008-2017)

USB 3.0出来的时候,5Gbps的速率让大家都兴奋了。但这里有个坑——USB 3.0改名叫USB 3.1 Gen 1,后来又改叫USB 3.2 Gen 1,把工程师们绕得晕头转向。我个人习惯直接看速率:5Gbps、10Gbps、20Gbps,管它叫啥。

USB4(2019年至今)

USB4直接干到40Gbps,还融合了Thunderbolt 3协议。说白了,现在一根USB-C线,能传数据、能充100W电、能外接显示器,确实方便。

核心要点:USB版本的命名虽然混乱,但记住速率才是硬道理。低速1.5Mbps、全速12Mbps、高速480Mbps、超高速5Gbps起步,往上翻倍。

1.2 USB的物理层与电气特性

嗯,这里要讲点硬核的东西了。USB的物理层,说白了就是线缆上怎么传信号。

差分信号传输

USB用两根线(D+和D-)传数据,这叫差分信号。好处是抗干扰能力强。你想想看,外界噪声同时干扰两根线,一减就抵消了。

我曾经在一个项目中遇到过,USB线长了点(超过5米),信号眼图都睁不开了。后来加了信号中继器才搞定。所以啊,USB 2.0的线别超过5米,USB 3.0别超过3米,这是经验值。

电气特性参数

参数 USB 2.0 USB 3.0 USB4
信号电压 0~3.3V 0~1.0V 0~1.0V
数据线阻抗 90Ω ±15% 85Ω ±15% 85Ω ±15%
最大电流 500mA 900mA 5A(PD模式)

避坑指南:我曾经画PCB时没注意USB 3.0的差分阻抗要求,结果板子打样回来,信号质量一塌糊涂。记住:USB 2.0走90Ω差分阻抗,USB 3.0走85Ω,别搞混了。

电源管理

USB的VBUS线提供5V电源。但要注意,不同版本的供电能力不一样。USB 2.0只能给500mA,USB 3.0能到900mA,而USB PD协议能到100W(20V/5A)。

我建议做产品时,如果功耗超过100mA,最好在原理图上标注清楚供电需求。否则遇到个供电不足的USB口,设备反复枚举,那叫一个头疼。

1.3 USB的拓扑结构

USB的拓扑结构是典型的树形结构。一个Host下面可以挂多个Hub,每个Hub又能挂多个Device。但最多只能有7层(包括Host和Device)。

USB拓扑结构示意图 USB Host(主机) 根Hub(Root Hub) Hub 1(第1层) Hub 2(第1层) Hub 3(第1层) 键盘(Device) 鼠标(Device) U盘(Device) 摄像头(Device) Host Hub 低速/全速设备 高速/超高速设备

Host(主机)

Host是老大,所有通信都由它发起。PC、手机、开发板,只要带USB主控的,都能当Host。Host里有个根Hub,一般集成在芯片内部。

Hub(集线器)

Hub就是个扩展器。它把Host的一个口扩展成多个口。但要注意,Hub会引入延迟。我测过,每经过一个Hub,延迟大概增加1-2微秒。对于实时性要求高的设备,尽量少过Hub。

注意:USB规范规定,整个链路最多7层。也就是说,从Host到Device,中间最多经过5个Hub。超过这个数,设备可能无法正常工作。

Device(设备)

Device就是各种外设:键盘、鼠标、U盘、摄像头、打印机等等。每个Device都有一个唯一的地址(1-127),由Host在枚举时分配。

这里有个有意思的事。我遇到过一台设备,插上后Host就是不分配地址。查了半天,发现是设备的上拉电阻没焊好。USB 2.0设备靠D+或D-上的1.5kΩ上拉电阻来告诉Host自己的速度等级。这个电阻没焊,Host就以为没设备插入。

1.4 枚举过程初探

说到枚举,其实就是设备插上后,Host和Device之间的一番「自我介绍」。Host会问:「你是谁?你叫什么?你能干啥?」Device回答:「我是某某厂商的某某设备,我支持这些功能。」

这个过程涉及几个关键步骤:复位、获取描述符、分配地址、配置设备。具体细节咱们后面章节再细聊。这里先记住一句话:枚举不成功,设备就是个摆设。

经验之谈:调试USB设备时,我习惯先用逻辑分析仪抓一下D+和D-的波形。看看复位信号对不对,设备有没有响应。很多时候,问题出在物理层——电平不对、时序不对、电阻不对。先把物理层搞定,再谈协议层。

好了,USB协议概述就聊到这儿。这些基础概念,是后面所有内容的地基。你想想看,如果连Host和Device怎么通信都不清楚,那链路训练、电源管理这些高级话题就更难理解了。


公众号:蓝海资料掘金营,微信deep3321