USB协议规范
1 USB的基本特征
1.1 USB系统结构
1.2 机械特性、电气特性
1.3 USB电源
1.4 USB信号
2 USB通信协议
2.1 USB事务处理
2.2 USB数据传输类型
2.3 USB描述符
2.4 USB设备请求
2.5 USB设备枚举
USB系统的设计必须遵循USB的协议规范,因此对其进行一定的介绍,只有理解了USB的协议规范内容,才能正确的进行USB系统的设计。
1 USB的基本特征
1.1 USB系统结构
在终端用户看来,USB系统就是外设通过一根USB电缆和PC机连接起来。USB在外设和PC机之间提供通信服务,通常外设称为USB设备,把其所连接的PC机称为主机,并且把指向USB主机的数据传输称为上行通信,把指向USB设备的数据传输称为下行通信。
USB主机及主控制器/根集线器(host controller/root hub)是整个USB 系统的大脑,负责完成主机和设备间的数据传输。USB根集线器提供USB连接端口给USB设备或USB集线器使用。
USB设备(USB device)指各种类型的USB外设。它们可以与USB主机交互数据信息,并为主机提供额外的功能,但在使用前主机必须对其进行配置。USB 设备按功能不同,可以分为集线器和功能设备两大类。其中,集线器为USB系统提供额外的连接点,它使得一个USB端口可以连接多个设备;功能设备为主机提供额外的功能,如USB鼠标,USB键盘等等。
USB的链接从逻辑上看每个USB设备都是直接和主机相连进行数据传输的,但从物理结构来看。USB链接采用的是呈阶梯式的星状排列(Tiered Star Topology),如图1所示。图中整个USB总线拓扑体系由三个元素组成:主机(host)、集线器(Hub)和功能设备(Function)。Hub是每个星型结构的中心,用于连接主机和设备。在目前的PC应用中,PC就是主机(Host)和根集线器(Root Hub),用户可以将外设或附加的Hub与之连接,一台含有一个USB主控制器的
PC机最多可以连接126个外设。
Hub在USB结构中是一个关键,它提供了附加的USB节点,这些节点被称为端口(Port)。根据端口在总线拓扑体系中的位置和功能的不同,端口又分为上行端口(UpstreamPort)和下行端口(DownstreamPort)。上行端口用于与上层Hub或根Hub相连,下行端口则用于与下层设备相连。图2是一个通用的集线器。
图1
图2
1.2 机械特性、电气特性
USB总线的传输由一根4线的电缆来实现。其中两根线用于提供USB设备工作的电源盒地,另外两个为差动数据信号线,用于传输数据。
电气特性,USB使用差分驱动器来发送信号,对应低速USB设备,一般使用束缚型低速电缆进行连接,它不需要外层屏蔽和数据双绞线;全速和高速USB设备在连接是使用有外层屏蔽盒数据双绞的电缆,其差分特性阻抗为90(1±15%)Ω,共模阻抗为30(1±30%)Ω。USB使用差分接收器来接受USB信号,对应低速和
全速传输,D+和D-线上的差分共模电压范围为0.8~2.5V ;对于高速传输,该范围为-50mv ~500mv 。PC 主机会以一定的时间间隔不断的查询跟集线器,以了解设备的连接状态。
1.3 USB 电源
在USB 系统中,所有的集线器端口都可以为和其相连的USB 设备提供电源,且每个端口的最大电流一般为100mA 或者500mA 。电源通过USB 电缆中的两根电源线Vbus 和GND 提供给外设,其电压标称值为+5V 。对于USB 设备来说,既可以使用总线提供的电源,也可以使用单独的本地电源。
1.4 USB 信号
数据在USB 总线上实际传输时,使用的是NRZI 编码的差分信号,这种信号有益于保证数据的完整性和消除噪声干扰。这种编码方式不用单独的时钟信号与数据一起发送,它用电平的跳变代表“0”,无跳变代表“1”。
2 USB 通信协议
本节是从USB 信息包开始,由底层向上层地介绍USB 通信协议的几个方面。这里包括USB 事务处理、数据传输类型、描述符、设备请求和总线列举。
2.1 USB 事务处理
USB 事务处理是USB 主机和USB 设备数据通信的基础。一个完整的USB 事务处理包含3个阶段:令牌阶段、数据阶段、握手阶段。如图3。
图3 典型事务处理过程
B 字段格式
在USB 协议中,USB 数据传输由一系列的字段构成,这些不同功能的字段,按特定的格式组合便可以构成不同的信息包。其中包括:
同步字段(SYNC ):用于数据通信的同步。对应低速/全速传输,其长度
为8位,数据为10 000 000B 。而对于高速传输长度为32位,数据为
8000000H 。
● 包标识字段(PID ):指明信息包类型,可以用于差错控制。长度为8位,
低4位为类型字段,高4位为校验字段。
● 地址字段(ADDR):指明USB 总线上的一个USB 设备。长度为7位,共有
128个地址值。地址0作为缺省地址,不分配给USB 设备。
● 端点字段(ENDP ):指明USB 端点。字段长度4位,共16个端点。端点
0主要用于USB 设备上电的初期和USB 主机进行通信,完成配置。
● 帧号字段:指明当前帧的帧号。
● 数据字段:包括传输的数据。
● CRC 字段:循环冗余校验。
B 信息包
USB 以信息包为基本传输单元进行USB 事务处理。USB 数据传输中包括:令牌包、数据包和握手包三种。信息包类型不同其包含的字段也不同,但第一个字段都是同步字段。表1所示。
表1 信息包格式
● 令牌包:USB 协议中,使用了7中令牌包,IN 、OUT 、SETUP 和PING 令
牌包,这些令牌包的格式大致相同。如表2。IN 令牌包定义了设备到主机的数据传输,OUT 和SETUP 令牌包定义了主机到USB 设备的数据传输。SOF 令牌包,格式如表3;SPLIT 令牌包和PRE 令牌包
表2 IN 、OUT 、SETUP 和PING 令牌包格式 表3 SOF 令牌包格式 ● 数据包:它由8位包标识字段PID 、数据字段、和16位的循环冗余校验
字段CRC 组成。如表4所示。
● 握手包:仅含有PID 字段。如表5所示。握手包主要用于在数据传输的
末尾报告本次数据传输的状态。之后便是整个事务处理的结束信号EOP.