USB的HID通信协议

上传人:夏** 文档编号:506197431 上传时间:2024-01-03 格式:DOCX 页数:14 大小:29.17KB
返回 下载 相关 举报
USB的HID通信协议_第1页
第1页 / 共14页
USB的HID通信协议_第2页
第2页 / 共14页
USB的HID通信协议_第3页
第3页 / 共14页
USB的HID通信协议_第4页
第4页 / 共14页
USB的HID通信协议_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《USB的HID通信协议》由会员分享,可在线阅读,更多相关《USB的HID通信协议(14页珍藏版)》请在金锄头文库上搜索。

1、USB 事务处理是主机和设备之间数据传输的基本单位,由一系列具有特定格式的信息包组成。因此,要了解完整的 USB 通信协议,必须从 USB 的信息传输单元包及其数据域谈起。通过由下而上,从简单至复杂的通信协议单位组成各种复杂的通信协议,进而构建出完整的通信协议。16.4.1 包包(Packet)是USB系统中信息传输的基本单元,所有数据都是经过打包后在总线上传输的。首先了解一下包的组成。USB包由五部分组成,即同步(SYNC)字段、包标识符(PID)字段、数据字段、循环冗 余校验(CRC)字段和包结尾(EOP)字段,包的基本格式如下:同步字段(SYNC) PID字段数据字段CRC字段包结尾字段

2、(EOP)在USB的数据传输中,所有的传输包都起始于SYNC,接着是PID,后面是包中所包含的数据信息,接下来是用来检测包中数据错误的循环冗余校验信息,最后以包结尾作为结束标志。下面我们将一一介绍每个字段。1 同步( SYNC )字段SYNC字段由8位组成,作为每个数据信息包的前导。顾名思义,它是用来产生同步作用的,目的是使USB 设备与总线的包传输率同步,它的数值固定为00000001 。2 包标识符( PID )字段PID字段是紧随在 SYNC字段后面,用来表示数据信息包的类型。在USB协议中,根据PID的不同,USB包有着不同的类型,分别表示具有特定的意义。如下所示:PID0 PID1

3、PID2 PID3包标识符长度为一个字节( 8 个数据位),由 4 个位的包类型字段和4 个位的校验字段构成。PID是USB包类型的唯一标志,USB主机和USB设备在接收到包后,必须首先对包标识符解码得到包的类型,并判断其意义从而做出下一个反应。包标识符中的校验字段是通过对类型字段的每个位求反码产生的,它是用来对包类型字段进行错误检测用的,旨在保证对包的标识符译码的可靠性,如果 4 个检验位不是它们各自的类型位的反码,则说明标识符中的信息有错误。表 16-2 中列出了信息包的类型,包括令牌、数据、握手或特殊四种信息包类型。为简化对 USB 的认识,有关高速传输的部分没有在表中列出。3 数据字段

4、在 USB 包中,数据字段是用来携带主机与设备之间要传递的信息,其内容和长度根据包标识符、传输类型的不同而各不相同。并非所有的 USB 包都必须有数据字段,例如握手包、专用包和 SOF 令牌包就没有数据字段。在 USB 包中,数据字段可以包含设备地址、端点号、帧序列号以及数据等内容。在总线传输中,总是首先传输字节的最低位,最后传输字节的最高位。(1) 设备地址(ADDR )数据域ADDR 数据域由7 位组成,可用来寻址多达127 个外围设备。(2) 端点( ENDP )数据域ENDP 数据域由 4 位组成。通过这 4 个位最多可寻址出 32 个端点。这个ENDP 数据域仅用在 IN 、 OUT

5、 与 SETUP 令牌信息包中。对于慢速设备可支持端点 0 以及端点 1 作为中断传输模式,而全速设备则可以拥有16个输入端点(IN)与16个输出端点(OUT)共32个端点。(3) 帧序列号当 USB 令牌包的 PID 为 SOF 时,其数据字段必须为 11 位的帧序列号。帧序列号由主机产生,且每个数据帧自动加一,最大数值为 0x7FF 。当帧序列号达到最大数时将自动从0 开始循环。(4) 数据它仅存于 DATA 信息包内,根据不同的传输类型,拥有不同的字节大小,从 0 到 1023 字 节(实时传输)。4 循环冗余校验(CRC )字段根据不同的信息包类型,CRC数据域由不同数目的位所组成。其

6、中重要的数据信息包采用CRC16的数据域(16个位),而其余的信息包类型则采用CRC5的数据域(5个位)。其中的循环冗余码校验 CRC,是一种错误检测技术。由于数据在传输时,有时候会发生错 误,因此CRC 可根据数据算出一个校验值,然后依此判断数据的正确性。5 包结尾( EOP )字段包的发送方在包的结尾发出包结尾信号。它表现为差分线路的两根数据线保持2 比特低位时间和1比特空闲位时间。USB主机根据EOP判断数据包的结束。16.4.2 信息包格式根据信息包所实现的功能,其可以分为 3 种类型:令牌包、数据包和握手包。其中,令牌包定义了数据传输的类型,数据包中含有需要传输的数据,握手包指明了数

7、据接收是否成功。1 令牌( token )包在 USB 系统中,只有主机才能发出令牌包。令牌包定义了数据传输的类型,它是事务处理的第一阶段。令牌包格式如下:8位 8位 7位 4位 5位SYNC PIDADDR ENDP CRC5令牌包中较为重要的是SETUP、 IN 和 OUT 这三个令牌包。它们用来在根集线器和设备端点之间建立数据传输。一个IN 包用来建立一个从设备到根集线器的数据传送,一个OUT包用来建立从根集线器到设备的数据传输。 IN 包和 OUT 包可以对任何设备上的任何端点编址。一个SETUP 包是一个 OUT 包的特殊情形,它是 “高优先级的” ,也就是说设备必须接受它,即使设备

8、正在进行数据传输操作的过程中也要对其进行响应。SETUP包总是指向端点 0 的。2 数据( data )包一个数据信息包包含了4个数据域:SYNC、PID、DATA与CRC16。在这里要注意的是DATA 数据域内所放置的位值,需根据 USB 设备的传输速度(慢速、高速与全速)以及传输类型(中断传输、批量传输、等时传输)而定,且须以 8 字节为基本单位。也就是,若传输的数据不足 8 字节,或传输到最后所剩余的也不足 8 字节,仍须传输 8 字节的数据域。格式如下:8 位 8 位 01023 字节 16 位SYNC PIDDATA CRC163 握手( Handshake )包握手信息包是最简单的

9、信息包类型。在这个握手信息包中仅包含一个的格式如下所列:PID 数据域而已,它2机- 设备(数据信息包) SYNC DATA0 DATA CRC168位 8位SYNC PID其中仅包含SYNC与PID两个数据域。16.4.3 事务在 USB 上数据信息的一次接收或发送的处理过程称为事务处理( Transaction )。事务处理的类型包括输入(IN)事务处理、输出(OUT)事务处理、设置(SETUP)事务处理和帧开始、帧 结尾等类型。在输出(OUT)事务处理和设置(SETUP)事务处理中,紧接着 SETUP和OUT包 后的是 DATA 包, DATA0 和 DATA1 包是交替地发送的,在DA

10、TA 包后面,设备将回应一个握手信号,如果设备可以接收数据,就回应ACK包,如果设备,卜t,就回应 NAK包,如果设备出错,则回应 STALL包;在IN事务中,IN包后面是设备发来的 DATA包或NAK包 或 STALL 包,若设备忙或出错,就发 NAK 包或 STALL 包给主机,若设备数据准备好发送,则发 DATA 包, DATA0 和 DATA1 包也是交替地发送的,紧接着DATA 包后面是主机发给设备的握手包, ACK 表示主机可以接收数据, NAK 包代表主机忙, STALL 包代表主机出错。下面我们再分别介绍这些事务。1 输入( IN )事务处理输入事务处理表示USB 主机从总线上

11、的某个USB 设备接收一个数据包的过程,接下来分析输入事务处理的各种典型情况:(1) 正常的输入事务处理1 主机- 设备(令牌信息包)SYNC IN ADDR ENDPCRC52设备- 主机(数据信息包)SYNC DATA0 DATA CRC163 主机- 设备(握手信息包)SYNC ACK(2) 设备忙时的输入事务处理1 主机- 设备(令牌信息包)SYNC IN ADDR ENDPCRC52 设备- 主机(握手信息包)SYNC NAK(3) 设备出错时的输入事务处理1 机- 设备 (令牌信息包) SYNC IN ADDR ENDP CRC52 设备- 机 (握手信息包) SYNC STALL

12、3 输出(OUT )事务处理(1) 正常的输出事务处理1 机- 设备(令牌信息包) SYNC OUT ADDR ENDP CRC52机- 设备(数据信息包) SYNC DATA0 DATA CRC163 设备- 机(握手信息包) SYNC ACK(2) 设备忙时的输出事务处理1 机- 设备(令牌信息包) SYNC OUT ADDR ENDP CRC52机- 设备(数据信息包) SYNC DATA0 DATA CRC163 设备- 机(握手信息包) SYNC NAK(3) 设备出错时的输出事务处理1 机- 设备(令牌信息包) SYNC OUT ADDR ENDP CRC52机- 设备(数据信息包

13、) SYNC DATA0 DATA CRC163 设备- 机(握手信息包) SYNC STALL3 设置(SETUP )事务处理(1) 正常的设置事务处理1 机- 设备(令牌信息包) SYNC SETUP ADDR ENDP CRC52机- 设备(数据信息包) SYNC DATA0 DATA CRC163 设备- 机(握手信息包) SYNC ACK(2) 设备忙时的设置事务处理1 机- 设备(令牌信息包) SYNC SETUP ADDR ENDP CRC53 设备- 主机 (握手信息包 ) SYNC NAK(3) 设备出错时的设置事务处理1 主机- 设备(令牌信息包) SYNC SETUP A

14、DDR ENDP CRC52主机- 设备(数据信息包) SYNC DATA0 DATA CRC163 设备- 主机(握手信息包) SYNC STALL16.4.4 USB 传输类型在 USB 的传输中,制定了 4 种传输类型:控制传输、中断传输、批量传输以及实时传输。这里只详细介绍控制传输,其他传输类型只作简要说明。1 控制传输控制传输是USB 传输中最重要的传输,唯有正确地执行完控制传输,才能进一步正确地执行其他传输模式。由于每个 USB 设备可能速度、传输的包的大小等信息有可能不同,因此每个USB 设备内部都记录着该设备的一些信息(也就是接下来将要介绍的设备描述符),当在主机上检测到USB

15、 设备时,系统软件必须读取设备描述符,以确定该设备的类型和操作特性,以及对该设备进行相应的配置,这些工作都是通过控制传输来完成。每个USB 设备都必须实现一个缺省的控制端点,该端点总是0 号端点。控制传输类型分为 23个阶段:设置阶段、数据阶段(无数据控制没有此阶段)以及状态阶段。根据数据阶段的数据传输的方向,控制传输又可分为 3 种类型:控制读取(读取USB描述符)、控制写入(配置 USB设备)以及无数据控制。以下介绍各阶段的工作。阶段一:设置阶段USB 设备在正常使用之前,必须先配置,本阶段由主机将信息传送给USB 设备,定义对USB 设备的请求信息(如:读设备描述符)。主机一般会从USB 设备获取配置信息后再确定此设备有

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号