USB协议规范.docx
- 文档编号:8833615
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:10
- 大小:175.59KB
USB协议规范.docx
《USB协议规范.docx》由会员分享,可在线阅读,更多相关《USB协议规范.docx(10页珍藏版)》请在冰豆网上搜索。
USB协议规范
USB协议规范
USB系统的设计必须遵循USB的协议规范,因此对其进行一定的介绍,只有理解了USB的协议规范内容,才能正确的进行USB系统的设计。
1USB的基本特征
1.1USB系统结构
在终端用户看来,USB系统就是外设通过一根USB电缆和PC机连接起来。
USB在外设和PC机之间提供通信服务,通常外设称为USB设备,把其所连接的PC机称为主机,并且把指向USB主机的数据传输称为上行通信,把指向USB设备的数据传输称为下行通信。
USB主机及主控制器/根集线器(hostcontroller/roothub)是整个USB系统的大脑,负责完成主机和设备间的数据传输。
USB根集线器提供USB连接端口给USB设备或USB集线器使用。
USB设备(USBdevice)指各种类型的USB外设。
它们可以与USB主机交互数据信息,并为主机提供额外的功能,但在使用前主机必须对其进行配置。
USB设备按功能不同,可以分为集线器和功能设备两大类。
其中,集线器为USB系统提供额外的连接点,它使得一个USB端口可以连接多个设备;功能设备为主机提供额外的功能,如USB鼠标,USB键盘等等。
USB的链接从逻辑上看每个USB设备都是直接和主机相连进行数据传输的,但从物理结构来看。
USB链接采用的是呈阶梯式的星状排列(TieredStarTopology),如图1所示。
图中整个USB总线拓扑体系由三个元素组成:
主机(host)、集线器(Hub)和功能设备(Function)。
Hub是每个星型结构的中心,用于连接主机和设备。
在目前的PC应用中,PC就是主机(Host)和根集线器(RootHub),用户可以将外设或附加的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.3USB电源
在USB系统中,所有的集线器端口都可以为和其相连的USB设备提供电源,且每个端口的最大电流一般为100mA或者500mA。
电源通过USB电缆中的两根电源线Vbus和GND提供给外设,其电压标称值为+5V。
对于USB设备来说,既可以使用总线提供的电源,也可以使用单独的本地电源。
1.4USB信号
数据在USB总线上实际传输时,使用的是NRZI编码的差分信号,这种信号有益于保证数据的完整性和消除噪声干扰。
这种编码方式不用单独的时钟信号与数据一起发送,它用电平的跳变代表“0”,无跳变代表“1”。
2USB通信协议
本节是从USB信息包开始,由底层向上层地介绍USB通信协议的几个方面。
这里包括USB事务处理、数据传输类型、描述符、设备请求和总线列举。
2.1USB事务处理
USB事务处理是USB主机和USB设备数据通信的基础。
一个完整的USB事务处理包含3个阶段:
令牌阶段、数据阶段、握手阶段。
如图3。
图3典型事务处理过程
1.USB字段格式
在USB协议中,USB数据传输由一系列的字段构成,这些不同功能的字段,按特定的格式组合便可以构成不同的信息包。
其中包括:
●同步字段(SYNC):
用于数据通信的同步。
对应低速/全速传输,其长度为8位,数据为10000000B。
而对于高速传输长度为32位,数据为8000000H。
●包标识字段(PID):
指明信息包类型,可以用于差错控制。
长度为8位,低4位为类型字段,高4位为校验字段。
●地址字段(ADDR):
指明USB总线上的一个USB设备。
长度为7位,共有128个地址值。
地址0作为缺省地址,不分配给USB设备。
●端点字段(ENDP):
指明USB端点。
字段长度4位,共16个端点。
端点0主要用于USB设备上电的初期和USB主机进行通信,完成配置。
●帧号字段:
指明当前帧的帧号。
●数据字段:
包括传输的数据。
●CRC字段:
循环冗余校验。
2.USB信息包
USB以信息包为基本传输单元进行USB事务处理。
USB数据传输中包括:
令牌包、数据包和握手包三种。
信息包类型不同其包含的字段也不同,但第一个字段都是同步字段。
表1所示。
表1信息包格式
●令牌包:
USB协议中,使用了7中令牌包,IN、OUT、SETUP和PING令牌包,这些令牌包的格式大致相同。
如表2。
IN令牌包定义了设备到主机的数据传输,OUT和SETUP令牌包定义了主机到USB设备的数据传输。
SOF令牌包,格式如表3;SPLIT令牌包和PRE令牌包
表2IN、OUT、SETUP和PING令牌包格式表3SOF令牌包格式
●数据包:
它由8位包标识字段PID、数据字段、和16位的循环冗余校验字段CRC组成。
如表4所示。
●握手包:
仅含有PID字段。
如表5所示。
握手包主要用于在数据传输的末尾报告本次数据传输的状态。
之后便是整个事务处理的结束信号EOP.
位数
表4数据包格式定义表5握手包的定义格式
3.USB事务处理
在USB事务处理理,令牌包阶段是必须的,USB协议中规定了7种令牌令牌
包,因此,可以根据令牌包的类型将USB事务处理分为7种:
IN事务处理、OUT事务处理、SETUP事务处理、PING事务处理、SOF事务处理、SPLIT事务处理和PRE事务处理。
2.2USB数据传输类型
USB的协议对USB的数据传输类型按照传输数据量的大小、传输速率的高低以及对时间的要求,可以分为4种传输类型:
块传输、中断传输、同步传输和控制传输。
表6对这四种传输方式进行了一个简单的比较。
表6USB的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设备发送控制请求。
SETUP事务的数据字段长度为8字节;数据阶段是可选的,可以包括一个或多个IN/OUT事务,其负责传输具有USB定义格式或设备类、供应商自定义格式的数据。
数据阶段的传输方向和长度均是建立阶段指定;最后是状态阶段,由一个IN事务和一个OUT事务组成。
在状态阶段中,USB设备向主机报告控制事物建立阶段的传输结果。
USB控制传输的报告方向是从USB设备到主机。
2.3USB描述符
在USB协议中,USB设备采用标准的USB描述符来说名。
这些描述符包括设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符、设备限定描述符和其他速率配置描述符,其中设备限定描述符和其他速率描述符用于高速USB设备。
标准USB描述符的类型值如表7所示。
1、设备描述符
USB的设备描述符用于表示USB设备的总体信息,一个USB设备只能有一个设备描述符(Device)。
设备描述符中的设置值对该设备中同一传输模式下的所有配置都有效,它由14个字段组成,总长度固定为18个字节。
2、配置描述符
在USB协议中,USB设备可以有一个或多个配置,每个配置都必须有一个配置描述符(Configuration)。
配置描述符用于表示USB设备的配置信息,它由8个字段组成,长度固定为9个字节。
3、字符串描述符
在USB协议中,字符串描述符(String)是可选的。
字符串描述符用于保存一些供应商名称、产品序列号等文本信息,它由3个字段组成,其长度随字符串的数量和信息的长度而变化。
4、接口描述符
在USB协议中,USB设备的接口是一个端点的集合,负责完成该USB设备的特定功能,例如数据输入和输出。
USB设备的每一个接口都必须有一个接口描述符(Interface),接口描述符用来表示USB设备中各个接口的特性,包括接口的端点个数、所属的设备类和子类等。
它由9个字段组成,长度固定为9个字节。
5、端点描述符
在USB协议中,端点描述符(Endpoint)用于指出USB设备端点的特性,包括其所支持的传输类型、传输方向等信息。
USB中规定,端点0没有端点描述符,其余端点必须包含端点描述符。
它由6个字段组成,其长度固定为7字节。
6、设备限定描述符
在高速USB系统中,如果USB设备既需要采用高速传输又需要全速传输,则它必须支持设备限定描述符(Device_Qualifier),设备限定描述符用以指出另一传输速率下该设备的总体信息,它由9个字段组成,长度固定为10个字节。
7、其他速率配置描述符
在高速USB系统中,如果USB设备既需要采用高速传输又需要全速传输,则必须支持其他速率配置描述符(Other_Speed_Configuration)。
其他速率配置描述符指出了另一个传输速率下该设备的配置信息。
它由8个字段组成,长度固定为9字节。
2.4USB设备请求
USB功能设备的产品信息和能力在USB描述符中进行了定义。
在USB协议中,使用USB设备请求对这些描述符进行读取和写操作。
这些设备请求包括标准设备请求和自定义请求两种。
标准USB设备请求对每个USB设备都是必需的。
在USB协议中,主机对USB设备的各种配置操作是通过设备请求来实现的。
对于这些标准的USB设备请求,所有的USB设备必须都支持,并能够对它进行响应。
这些控制请求使用控制管道和USB功能设备进行通信。
USB中定义了11种标准USB设备请求,见表8。
2.5USB设备枚举
USB通过一个称为USB设备枚举的过程来鉴别和管理设备的链接或断开。
USB设备在链接时,主机通过缺省管理通道来向其发出标准设备请求,获取并分析USB设备的相关描述符,并以此来配置USB设备。
USB设备枚举过程步骤如下:
1、USB设备连接到集线器的下行端口后,集线器会使用中断IN管道向主机报告设备的插入时间。
2、主机知道设备接入集线器后,向集线器发出GetPortStatus请求以了解更多信息。
当确认有设备接入总线,主机发出SetPortStatus请求复位设置,这期间集线器会确定设备的传输速率并向主机报告。
复位结束后USB设备进入缺省状态,可使用缺省设备地址对管道0的控制事务做出响应。
3、主机设备发送USB协议规定的Get_Device_Descriptor命令,读取该描述符的前8个字节,以取得缺省控制管道所支持的最大数据包长度。
4、主机发送SetAddress分配一个位于的地址给设备。
设备读取这个请求,返回一个确认,并保持新的地址。
从此开始所以通信都使用这个新地址。
5、主机向新地址设备重新发送Get_Device_Descriptor命令,读取其设备描述符,以了解该设备的总体信息。
6、主机向设备循环发送Get_Device_Configuration命令,以读取全部配置信息。
7、主机向设备发送Get_Device_String命令,获得字符串描述符。
8、主机根据Device_Descriptor和Device_Configuration应答信息,为设备选择一个合适的USB设备驱动程序。
9、加载USB设备驱动后,主机将发送SetConfiguration(x)请求为该设备选择配置。
若配置成功,USB设备进入设备配置状态,再和主机进行数据通信
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- USB 协议 规范
![提示](https://static.bdocx.com/images/bang_tan.gif)