欢迎来到天天文库
浏览记录
ID:47504747
大小:56.00 KB
页数:9页
时间:2020-01-12
《USB的HID通信协议》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、..USB事务处理是主机和设备之间数据传输的基本单位,由一系列具有特定格式的信息包组成。因此,要了解完整的USB通信协议,必须从USB的信息传输单元包及其数据域谈起。通过由下而上,从简单至复杂的通信协议单位组成各种复杂的通信协议,进而构建出完整的通信协议。16.4.1包包(Packet)是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的。首先了解一下包的组成。USB包由五部分组成,即同步(SYNC)字段、包标识符(PID)字段、数据字段、循环冗余校验(CRC)字段和包结尾(EOP)字
2、段,包的基本格式如下:同步字段(SYNC)PID字段数据字段CRC字段包结尾字段(EOP)在USB的数据传输中,所有的传输包都起始于SYNC,接着是PID,后面是包中所包含的数据信息,接下来是用来检测包中数据错误的循环冗余校验信息,最后以包结尾作为结束标志。下面我们将一一介绍每个字段。1.同步(SYNC)字段SYNC字段由8位组成,作为每个数据信息包的前导。顾名思义,它是用来产生同步作用的,目的是使USB设备与总线的包传输率同步,它的数值固定为00000001。2.包标识符(PID)字段PID字段是紧随
3、在SYNC字段后面,用来表示数据信息包的类型。在USB协议中,根据PID的不同,USB包有着不同的类型,分别表示具有特定的意义。如下所示:PID0PID1PID2PID3包标识符长度为一个字节(8个数据位),由4个位的包类型字段和4个位的校验字段构成。PID是USB包类型的唯一标志,USB主机和USB设备在接收到包后,必须首先对包标识符解码得到包的类型,并判断其意义从而做出下一个反应。包标识符中的校验字段是通过对类型字段的每个位求反码产生的,它是用来对包类型字段进行错误检测用的,旨在保证对包的标识符译码
4、的可靠性,如果4个检验位不是它们各自的类型位的反码,则说明标识符中的信息有错误。表16-2中列出了信息包的类型,包括令牌、数据、握手或特殊四种信息包类型。为简化对USB的认识,有关高速传输的部分没有在表中列出。 3.数据字段在USB包中,数据字段是用来携带主机与设备之间要传递的信息,其内容和长度根据包标识符、传输类型的不同而各不相同。并非所有的USB包都必须有数据字段,例如握手包、专用包和SOF令牌包就没有数据字段。在USB包中,数据字段可以包含设备地址、端点号、帧序列号以及数据等内容。在总线传输中,总
5、是首先传输字节的最低位,最后传输字节的最高位。(1)设备地址(ADDR)数据域ADDR数据域由7位组成,可用来寻址多达127个外围设备。(2)端点(ENDP)数据域word教育资料..ENDP数据域由4位组成。通过这4个位最多可寻址出32个端点。这个ENDP数据域仅用在IN、OUT与SETUP令牌信息包中。对于慢速设备可支持端点0以及端点1作为中断传输模式,而全速设备则可以拥有16个输入端点(IN)与16个输出端点(OUT)共32个端点。(3)帧序列号当USB令牌包的PID为SOF时,其数据字段必须为1
6、1位的帧序列号。帧序列号由主机产生,且每个数据帧自动加一,最大数值为0x7FF。当帧序列号达到最大数时将自动从0开始循环。(4)数据它仅存于DATA信息包内,根据不同的传输类型,拥有不同的字节大小,从0到1023字节(实时传输)。4.循环冗余校验(CRC)字段根据不同的信息包类型,CRC数据域由不同数目的位所组成。其中重要的数据信息包采用CRC16的数据域(16个位),而其余的信息包类型则采用CRC5的数据域(5个位)。其中的循环冗余码校验CRC,是一种错误检测技术。由于数据在传输时,有时候会发生错误,
7、因此CRC可根据数据算出一个校验值,然后依此判断数据的正确性。5.包结尾(EOP)字段包的发送方在包的结尾发出包结尾信号。它表现为差分线路的两根数据线保持2比特低位时间和1比特空闲位时间。USB主机根据EOP判断数据包的结束。16.4.2信息包格式根据信息包所实现的功能,其可以分为3种类型:令牌包、数据包和握手包。其中,令牌包定义了数据传输的类型,数据包中含有需要传输的数据,握手包指明了数据接收是否成功。1.令牌(token)包在USB系统中,只有主机才能发出令牌包。令牌包定义了数据传输的类型,它是事务
8、处理的第一阶段。令牌包格式如下:8位8位7位4位5位SYNCPIDADDRENDPCRC5令牌包中较为重要的是SETUP、IN和OUT这三个令牌包。它们用来在根集线器和设备端点之间建立数据传输。一个IN包用来建立一个从设备到根集线器的数据传送,一个OUT包用来建立从根集线器到设备的数据传输。IN包和OUT包可以对任何设备上的任何端点编址。一个SETUP包是一个OUT包的特殊情形,它是“高优先级的”,也就是说设备必须接受它,即使设备正在进行数
此文档下载收益归作者所有