一、USB发展背景
1.1 USB接口特点
USB 接口是当今最通用的接口标准,它的广泛使用离不开本身具备的优势。USB 接口特点:
- 简单易用:使用统一制式电缆和连接进行外设扩展,即插即用,支持热插拔
(所有的USB接口都保持一致,即使标准在不断的更新,但是可以向下兼容); - 稳定性佳:使用差分信号传输,较强的纠错能力,多种差错管理和恢复机制;
- 速度选择:1.5Mbps/12Mbps/480Mbps/5Gbps/10Gbps/20Gbps多种等级;
- 使用灵活:提供了适合各种应用的传输类型、协议
(多种的协议、标准以及传输方式,可以适用于各种各样的产品设计,如键盘、打印机、摄像头等,虽然是功能不一样的产品但是都有一样的接口标准,并且构成通讯系统可以同时使用); - 应用广泛:协议标准向下兼容,系统集成驱动,扩展性强,连接支持127个外部设备,拓扑结构,复合设备等。
1.2 USB的发展
1.2.1协议标准的发展
USB 全名是通用串行总线,USB的协议标准有:USB1.x ,USB2.0 ,USB3.x ,发展变化如下:
- USB1.1:规范了 USB 低速、全速传输;
(USB1 包含了 USB1.0 和 USB1.1,其中 1.1 就是对 1.0 进行了补充,故一般谈到 USB1 指的就是 USB1.1) - USB2.0:规范了 USB 高速传输,速度可达 480Mbps(相比 USB1.1 提升了 40 倍);
- USB3.0:采用 8b/10b 编码,增加一对超高速差分线,供电 5V/0.9A
(在硬件接口上增加了两对超高速的数据差分信号线,可以将速度提升10倍,达到 5G bps) - USB3.1:采用 128b/132b 编码,速度提高一倍,供电20V/5A,同时增加了A/V影音传输标准
(速度可达 5Gbps) - USB3.2:再次增加一对超高速传输通道,速度再次翻倍,只能在 C 型接口上运行
(C 型接口是指 Type-C 接口)
后来为了更好的统一标准,USB 组织将命名做了一下变动:
- USB2.0 Full Speed 即 USB1.1(USB1.1 → USB2.0 全速版)
- USB2.0 High Speed 即 USB2.0(USB2.0 → USB2.0 高速版)
- USB3.0 → USB3.2 gen1
- USB3.1 → USB3.2 gen2
- USB3.2 → USB3.2 gen2*2
所以在使用过程中看到 USB2.0 和 USB3.2 都要注意运行的实际协议标准具体是哪个。
1.2.2通信速度的发展
USB 速度等级:
- 1.5Mbps(低速传输)
- 12Mbps(全速传输)
- 480Mbps(高速传输)
- 5Gbps/10Gbps/20Gbps(三者都是超高速传输)
平时使用的键盘、鼠标等大部分人机交互的设备都是 USB1 标准,为低速标准。
1.2.3 USB硬件的通讯接口
(1)4针接口
注意 D- 与 D+ 的顺序。
针脚 | 名称 |
1 | VBUS(供电端口) |
2 | D-(靠近供电的是D负) |
3 | D+(靠近接地的是D正) |
4 | GND |
(2)9针接口
在原来的 4 针引脚上多出两对超高速的差分信号,增加了五个引脚,适用于 USB3.0 和 USB3.1 的标准速度。
针脚 | 名称 |
1 | VBUS(供电端口) |
2 | D- |
3 | D+ |
4 | GND |
5 | StdA _SSRX- |
6 | StdA _SSRX+ |
7 | Shield |
8 | StdA _SSRX- |
9 | StdA _SSRX+ |
(3)12*2针接口
Type-C 正反插,共 4 对超高速差分线,是对称插拔的接口,可以看到名称的那一栏左右是对称相反的,可以支持正反插。
对于之前所说的 USB3.2 → USB3.2 gen2*2 标准(20Gbps)需要使用该接口上所有的高速差分信号线,共 4 对。
USB3.0 和 USB3.0 甚至 USB2.0 和 USB1 都只使用了左侧或者右侧的一边传输接口。
针脚 | 名称 | |
1 | GND | GND |
2 | TX1+ | RX1+ |
3 | TX1- | RX1- |
4 | VBUS | VBUS |
5 | CC1 | SBU2 |
6 | D+ | D- |
7 | D- | D+ |
8 | SBU1 | CC2 |
9 | VBUS | VBUS |
10 | RX2- | TX2- |
11 | RX2+ | TX2+ |
12 | GND | GND |
1.2.4 USB 通讯介质及信号
USB 通信中需要使用标准的通讯线缆
(1)阻抗标准
在共模阻抗和差模阻抗上均有限定范围:差分阻抗 90Ω,共模阻抗 30Ω 。
(2)线缆标准
低速通讯一般使用的是束缚性低速电缆,不需要屏蔽层和数据双绞线;但是全速和高速信号需要 使用外带屏蔽层的双绞线电缆。
(3)驱动标准
低、全速信号内置的驱动器一般是电压型,输出差分信号大概在 3V 左右;高速信号内部的驱动器结构使用的是电流型,内部是通过恒流源输出电流,在线路阻抗上产生大概 400mV 左右的通讯信号。
(4)USB 物理接口
- A 型接口:是扁平的接口结构,主机使用的一般为母口(下),从机使用的是公口(上);
- B 型接口:是方形的接口结构,主机使用的一般为公口(上),从机使用的是母口(下)(如打印机);
- C 型接口:12*2针接口支持正反插。
(5)USB Logo
下图是 USB 的几种商标,一般 USB 产品需要通过通过相关的认证才可以使用其相应的标识。
(6)USB 资料网站
开发者论坛:http://www.usb.org/
该网站会公布 USB 相关协议和标准的官方网站,大家需要的相关协议和文档都可以去该网站下载。
需要说明是的:现在广泛使用的还是USB2,后续讲解也都是以USB2为例子。
二、了解概念及术语
2.1 USB 的编码方式
USB编/解码方式:反向不归零(NRZI);位填充机制
2.1.1反向不归零编码方式
规则:数据为零,电平翻转;数据为一,电平不翻转。
在下图中上面的线里为数据,下面的线为外面信号的编码。当数据(上面)为零,电平(下面)进行翻转,以此类推。
2.1.2位填充
在数据进行 NRZI 编码前,每 6 个连续的 1信号之后都会插入 1 个 0 信号,以避免长时间的电平状态没有变化而导致的同步漂移(以免电平不能突变丢失同步)。
2.2信号传输状态
USB 信号传输状态主要有以下 4 种:
J状态(差分) | 低速:差分0 | 全速:差分1 | 差分 0 :D+≈0V;D-≈3V 差分 1:D+≈3V;D-≈0V |
K状态(差分) | 低速:差分1 | 全速:差分0 | |
SE0状态(单端) | D+ 和 D- 都为 0V | ||
SE1状态(单端) | D+ 和 D- 都大于 0.8V |
总线上还有其他状态(如:挂起和复位)可以基于上述状态的 组合或维持 时间的差异而确定。
2.3帧
一个时间单位,在低/全速中以 1ms 为一帧,在高速中以 125 us 为一个微帧,一帧等于 8 个微帧
USB 主机在一帧内会根据规则为总线上电额设备分配数据传输时间,如果帧剩余时间能完成这个过程就进行分配,如果不能完成就分配到下一次的帧的空闲时间内。
2.4通讯过程划分
域:同步域、地址域、端点域、帧号域、标识域、数据域、校验域
↓
包:令牌包、数据包、握手包、特殊包
↓
事务:事务构成:令牌包 +数据包(可选)+ 握手包(可选)
↓
传输:控制传输、中断传输、批量传输、等时传输
一个或多个域构成包,多个包构成事务,多个实物构成传输。
在USB 传输协议中将 事务 作为最基本的单位,所以用户在进行 USB 传输控制的时候需要关心的是事务和传输这个层面上的分配,虽然用户在使用过程中不在意域和包,但是还是要简单了解一下。
2.4.1补包软件展示抓的一个包
首先根据“D+为高”判断这是一个全速的通讯过程。
(但是讲课老师上面有说这个知识点吗?所以小醒去搜了一下)
在USB协议中(尤其是USB1.×和2.0中):
1、查分信号对:USB使用D+和D-两根信号线进行差分传输;
2、速度识别:
- 低速(Low Speed,1.5Mbps):D-为高电平,D+为低电平
- 全速(Full Speed,12Mbps):D+为高电平(3.3V),D-为低电平
- 高速(High Speed,480Mbps):在初始握手后切换为高速模式
将上图中的一个小竖条放大后如下图,就是一个包:
上图中,下面一条蓝色的横条以小分隔符分开的就是域:
SYNC:同步域;PID Soft:标识域;Frame:帧号域;CRC:校验域
上面的蓝色横条比小面的蓝色横条多了一个包结尾EOP,如下图:
所以上述的这个包是由四个域构成,总线上会有间隔一毫秒(其实是总线空闲的情况下),每一回都有一个帧的起始包。
2.4.2由包组成事务
下图就是一个事务:
下图中,A1~A2之间为一个包,为令牌包中set up 包(主要是看蓝色条中,被分隔符分开的第2个域区分的),这个包主要是由同步域、标识域、地址域、端点域、校验域构成。
接着,下图中的B1~B2之间为数据包,它是由同步域、标识域(标识域是DATA0,表示是DATA0域)、中间全部为数据域、最后CRC校验域
最后是一个握手包,由同步域、标识域直接结束,如下图C1~c2所示。
以上从A1开始到C2结束,就是一个事务。这个Set up事务由三个包组成:令牌包、数据包、握手包。
2.4.3由事务组成传输
下图中的D1~D2是一个完整的传输(看不懂没关系,后面会详细的讲解)
2.5四种传输
(1)控制传输
是所有 USB 设备(包括主机)必须支持的一种传输,特点是数据量不大,但是数据传输的正确性有很高的保障。
主机获取设备信息、状态,选择设备配置等的一系列命令式工作。
下面的三种传输在某设备的通讯过程中可以支持一个或多个,也可以一个都没有。
(2)中断传输
收发数据量少、周期性传输。故适用于传输数据量比较少,但是对服务周期有要求的数据。
USB 会中断传输保留一定的总线带宽,用于保证其能在规定的时间周期内得到分配。
这个传输很适用于键盘、鼠标之类的设备,因为这类的设备数据量很小,但是需要立刻获取设备当前的状态,这就需要固定的数据获取带宽。
(3)批量传输
利用任何可获得的总线带宽进行数据传输,用于传输大量的且对传输时间没有要求但必须保证数据正确性的数据。
这种形式的传输可以在总线带宽比较紧张的时候,为其他的传输方式让出时间,将本身的传输延时。当 USB 总线比较空闲时可以以很快的速度进行大量数据的传输,比较适用于存储类的产品(如打印机、扫描仪、U盘之类)。
(4)等时传输
恒定速率、没有差错控制和重传机制的传输,不能保证每一次传输都是成功的。
故适用于数据量大但是速率要恒定的数据传输,比较适合于音频和视频类的产品,此时数据的及时接受和及时发送要远远比数据的正确性更重要。
2.6其他概念
(1)上传/下传
USB 主机接收 USB 设备的数据称为上传,USB 主机发送数据给 USB 设备称为下传。
都是以 USB 主机为主体,在 USB 传输中都是主机发出请求设备开始传输,设备是不能主动将数据传给主机的。
(2)地址
USB 主机管理设备,并且传输线称之为总线,所以一个主机,一条总线上是可以接入多个从机设备的。
USB 主机管理设备会为每一个连接的 USB 设备分配一个地址,主机最多可以分配 127 个地址。
(3)端点
USB设备中实际存在的物理单元。端点和地址决定了主机和设备之间通讯的物理通道。
(4)USB 传输特点
物理传输双方角色一定是主机和设备。如果想两个设备之间或者两个主机之间通讯中间必须有转换的模块。
一问一答传输方式,永远主机先发起包请求。
三、常用开发工具
3.1 USB 协议分析仪
分为 1.1 版和2.0 版,其中1.1版主要捕获usb低速和全速的信号;2.0版捕获usb低速、全速和高速三种信号。
上面这款分析仪式一个物理总线的抓包工具,在外形结构上一端有一个U口,一端有两个U口。
一个U口这端连接USB电脑,利用电脑中的上位机工具进行数据上传;两个U口的这端,分贝接需要捕获的USB主机和USB设备。
其实是将USB分析并联接入,可以实时采集总线上的传输信号,将其存储、打包,通过监控端的USB口上传给监控计算机,用于分析显示。在监控计算机的软件界面上,用户可以看到USB传输的所有过程。
这种方式的优点是,以物理信号进行捕捉,并联接入,不会影响原始的通讯线路,同时可以将整个传输过程试试的采集上传。
可以通过设置颜色来区分传输过程,可以按照事务划分阶段。
3.2Bushound软件工具
这是一宽用于电脑端的USB等总线协议捕捉和分析的软件,没有物理设备,用来监测连接捕捉电脑的设备的输入和输出操作,平时用于监控电脑端的一些操作是比较方便的。
特点:只采集PC驱动层数据、显示成功传输。
3.3逻辑分析仪
3.4示波器
由于示波器的采样精度和内存的原因,导致一般只能捕捉一小段的时间信号,但是示波器对于信号质量的观察以及干扰因素的排查非常有帮助。
四、选择合适的USB产品
对于以上4点的补充:
- 在做产品时需要考虑再应用中usb接口的工作模式、传输速度、环境干扰等因素来选择相应的产品。比如在制作U盘时,希望传输速度至少要 10M 字节每秒,那么就要选择高速及以上的USB控制器;如果是想要同时操作两个USB设备,需要考虑选择 hub 芯片或者带有两个usb主机端口的控制器。
- 第二点在产品做一些认证环节非常重要。
- 可以选择一些免开发的功能性芯片,也可以选择灵活可控的usb通用控制器。
- 对产品开发的前期进行和后期维护都非常的重要。
本专栏说明:本人是USB的初学者,该专栏是我CSDN上第一个学习USB技术的专栏,笔记会比较口语,不是很精炼,后续有点基础后,争取“字字珠玑”。