1. USB协议概述:从USB 1.0到USB4的演进之路
大家好,我是你们的嵌入式系统讲师。今天咱们聊聊USB协议——这个几乎每个工程师都打过交道的接口标准。
说实话,我最早接触USB还是在大学做单片机项目的时候。那时候用USB转串口线调试,经常遇到设备不识别的问题,折腾得我够呛。后来做了十几年嵌入式开发,从USB 1.1一路干到USB4,踩过的坑能写本书了。
嗯,咱们先从最基础的开始。
1.1 USB发展历史:一个接口统一天下的故事
USB的全称是Universal Serial Bus,通用串行总线。1994年,Intel、微软、IBM等七家公司联合推出了这个标准。为什么要搞USB?说白了,就是想把电脑后面那一堆乱七八糟的接口统一起来。
我记得1996年USB 1.0刚出来的时候,速度只有1.5 Mbps。说实话,那时候连鼠标键盘都嫌慢。但到了1998年的USB 1.1,速度提升到12 Mbps,这才开始真正普及。
真正让USB火起来的,是2000年的USB 2.0。480 Mbps的速度,一下子让U盘、移动硬盘成了可能。我那时候做的一个数据采集卡,就是用USB 2.0跟PC通信的。
2008年USB 3.0发布,速度飙到5 Gbps。这个提升太猛了,我印象特别深——第一次用USB 3.0拷贝高清视频,那速度简直爽翻了。
之后就是USB 3.1(10 Gbps)、USB 3.2(20 Gbps),再到2019年的USB4(40 Gbps)。你看这个发展轨迹,每代速度基本翻倍,但背后的技术复杂度也在指数级增长。
1.2 USB 2.0/3.0/3.1/3.2/4.0标准演进
咱们用表格对比一下各代标准的关键参数,这样更直观:
| 标准版本 | 发布时间 | 理论带宽 | 编码方式 | 信号线数量 |
|---|---|---|---|---|
| USB 2.0 | 2000年 | 480 Mbps | NRZI | 4根(D+、D-、VBUS、GND) |
| USB 3.0 | 2008年 | 5 Gbps | 8b/10b | 9根(新增SSTX、SSRX差分对) |
| USB 3.1 Gen 2 | 2013年 | 10 Gbps | 128b/132b | 9根 |
| USB 3.2 | 2017年 | 20 Gbps | 128b/132b | 双通道 |
| USB4 | 2019年 | 40 Gbps | 基于Thunderbolt 3 | Type-C接口 |
这里有个坑我要提醒大家。USB 3.0、3.1、3.2的命名曾经非常混乱。USB-IF组织后来统一了命名规则:USB 3.2 Gen 1就是原来的USB 3.0,USB 3.2 Gen 2是原来的USB 3.1,USB 3.2 Gen 2x2才是真正的20 Gbps版本。
避坑指南: 我在项目中遇到过好几次,采购的USB芯片标注的是"USB 3.1",结果实际只能跑5 Gbps。后来才搞清楚,很多厂商还在用老命名。所以选型时一定要看具体速率,别光看版本号。
1.3 USB Type-C接口特性
Type-C接口的出现,可以说是USB历史上最大的变革之一。为什么这么说?
首先,它正反可插。你想想看,以前插USB-A口,总要试两三次才能插对。Type-C一次搞定,用户体验提升太多了。
其次,Type-C支持多种协议。除了USB数据,还能跑DisplayPort视频、PCIe数据、甚至最高100W的电力传输。我做过一个项目,用Type-C同时给设备充电和传输4K视频,一根线搞定所有。
Type-C的引脚定义是这样的:
Type-C母座引脚(从设备端看):
A1: GND A2: SSTXp1 A3: SSTXn1 A4: VBUS A5: CC1
A6: Dp1 A7: Dn1 A8: SBU1 A9: VBUS A10: SSRXn2
A11: SSRXp2 A12: GND
B1: GND B2: SSTXp2 B3: SSTXn2 B4: VBUS B5: CC2
B6: Dp2 B7: Dn2 B8: SBU2 B9: VBUS B10: SSRXn1
B11: SSRXp1 B12: GND
注意看,Type-C有24个引脚,比传统USB多得多。其中CC引脚是关键,它负责检测插入方向、协商供电、识别设备角色。
核心要点: Type-C的CC逻辑芯片(CC Logic)是实现正反插检测和角色协商的核心。设计Type-C产品时,CC逻辑的处理是重中之重。我建议新手先用现成的CC控制器芯片,比如TI的TUSB320系列,别自己折腾分立电路。
1.4 USB OTG概念
USB OTG,全称USB On-The-Go。这个概念最早出现在USB 2.0时代,目的是让移动设备既能当主机(Host),也能当外设(Device)。
你想想看,手机能不能直接插U盘?能。手机能不能当U盘插电脑?也能。这就是OTG的功劳。
OTG引入了一个新的角色——双角色设备(DRD,Dual Role Device)。通过ID引脚的电平来切换角色:ID接地就是Host模式,ID悬空就是Device模式。
到了Type-C时代,OTG的概念被进一步扩展。Type-C通过CC引脚上的电压和通信来协商角色,不再需要专门的ID引脚。这就是所谓的USB Type-C DRP(Dual Role Port)。
实战经验: 我在做一款便携式数据采集仪时,用了USB OTG功能。设备平时插电脑当U盘用,需要时又能接键盘鼠标独立工作。这里有个关键点:OTG切换时,必须重新枚举USB总线。我一开始没处理好,导致切换后设备不识别。后来加了延时和复位逻辑才搞定。
1.5 小结与思考
好了,这一章的内容就这些。咱们回顾一下重点:
- USB从1.0到USB4,速度从1.5 Mbps提升到40 Gbps,背后是编码方式、信号完整性、协议栈的全面升级
- Type-C接口是革命性的,正反插、多协议支持、大功率供电,但设计复杂度也更高
- OTG让设备角色灵活切换,Type-C时代通过CC逻辑实现更智能的角色协商
最后留个思考题:为什么USB 3.0之后,传输距离反而变短了?USB 2.0能传5米,USB 3.0只能传3米,USB4更是建议1米以内。这个问题咱们下一章讲信号完整性时会详细分析。
下一章,咱们深入USB物理层,聊聊D+、D-差分信号的那些事儿。到时候我会分享一个因为PCB走线没做好导致USB 2.0设备间歇性断连的案例,挺有意思的。
公众号:蓝海资料掘金营,微信deep3321