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图21.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.表4 数据包格式定义表5 握手包的定义格式B事务处理在USB事务处理理,令牌包阶段是必须的,USB协议中规定了7种令牌令牌包,因此,可以根据令牌包的类型将USB事务处理分为7种:IN事务处理、OUT 事务处理、SETUP事务处理、PING事务处理、SOF事务处理、SPLIT事务处理和PRE事务处理。
2.2 USB数据传输类型USB的协议对USB的数据传输类型按照传输数据量的大小、传输速率的高低以及对时间的要求,可以分为4种传输类型:块传输、中断传输、同步传输和控制传输。
表6对这四种传输方式进行了一个简单的比较。
表6 USB的4种传输类型1、块传输USB块传输只能用于高速或全速的USB设备,适合传输大量且对传输时间和传输速率均无要求的数据。
在传输过程中,当总线带宽紧张时,会自动为其他传输类型让出自己所占的帧/小帧时间,而本身数据传输将延迟,这时传输速率比较低、占用时间长;当总线空闲时,速率高、时间短。
采用差错控制和重试机制来保证数据传输的正确性和可靠性。
此传输适合于打印机和扫描仪类的设备。
USB设备在块端点描述符中的wMaxPacketSize字段指明其块事务所支持的最大数据包长度。
●对于全速端点,可以是8字节、16字节、32字节或者64字节;●对于高速端点,只能为512字节。
块事务处理过程包括令牌、数据和握手三个阶段。
USB块事务处理是单向的。
设备需要双向块传输,则必须使用两个块端点。
当主机需要接收数据时,它向USB设备发出一个IN令牌包;当准备发送数据块时,它将向USB设备发出一个OUT令牌包和一个DATAx数据包。
2、USB中断传输中断传输可以用于低速、全速和高速设备,适合于传输少量或中量对事务处理周期有要求的数据.USB总线为中断传输保留了总线带宽,以保证它能够在规定的时间内完成。
USB中断传输适合于鼠标、键盘类设备,这类设备传输的数据量很少,而且要求响应快,具有固定的事务处理周期。
USB设备在中断端点描述符中的wMaxPacketSize字段指明其中断事务所支持的最大数据包长度。
●对于低速端点,最大数据包长度小于等于8字节;●对于全速端点,最大数据包长度小于等于64字节;●对于高速端点,最大数据包长度小于等于1024字节。
中断事务处理和块传输一样,都是单向的,都具有令牌、数据和握手3个阶段。
中断管道式一条数据流管道,它传输的数据不具有USB定义的格式。
当其在USB总线上实际传输时,必须使用数据触发机制来保证数据包发送和接收的同步,以便于发送方能够确认其数据已经被成功接收。
3、USB同步传输USB同步传输只能用于高速或全速USB设备,适合于传输大量的、速率恒定的且对服务周期有要求的数据。
USB协议为同步传输保留了总线带宽,以保证同步传输一直使用准确的传输速率,因此其传输时间是确定的、可以预测的。
此外,同步传输不能保证每次传输都是成功的。
此传输适合于音频和视频类设备。
USB设备在同步端点描述符中的wMaxPacketSize字段指明其同步事务所支持的最大数据包长度。
●对于全速端点,该最大值必须小于等于1023字节;●对于高速端点,它必须小于等于1024字节,且高带宽端点可在每小帧中进行两个或3个高速同步事务。
同步事务处理也是单向的,其包括IN传输和OUT传输,但只有令牌和数据阶段,没有握手阶段,如图4所示。
图4 同步事务的格式4、USB控制传输USB控制传输适合于低速、全速或高速设备。
主要用于传输少量的、对传输时间和传输速率均无要求、但必须保证传输的数据。
USB协议为控制传输保留了一定的总线带宽,以确保其能够尽快得到传输。
也使用了差错控制和重试机制来保证数据传输的准确性和可靠性。
USB控制传输主要用于USB主机和USB设备之间的配置信息通信,包括设备地址、设备描述符和接口描述符等。
所以的USB 设备都有控制传输方式。
在USB协议中,任何USB设备都必须在端点0的缺省管道中支持控制传输。
除端点0外,其他端点也可以支持控制传输USB设备在控制端点描述符中的wMaxPacketSize字段指明其控制事务所支持的最大数据包长度。
●对于低速端点,最大值必须为8个字节;●对于全速端点,可以选择8、16、32和64字节;●对于高速端点,其只能为64字节。
控制事务处理包括建立、数据和状态3个阶段,每个阶段都由特定的事务处理组成。
控制事务处理的建立阶段,主机采用SETUP事务向USB设备发送控制请求。