USB的HID通信协议

上传人:hs****ma 文档编号:431964448 上传时间:2023-06-18 格式:DOCX 页数:9 大小:27.88KB
返回 下载 相关 举报
USB的HID通信协议_第1页
第1页 / 共9页
USB的HID通信协议_第2页
第2页 / 共9页
USB的HID通信协议_第3页
第3页 / 共9页
USB的HID通信协议_第4页
第4页 / 共9页
USB的HID通信协议_第5页
第5页 / 共9页
点击查看更多>>
资源描述

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

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

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

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

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

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

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

7、输的类型,它是事务处理 的第一阶段。令牌包格式如下:8位 8位 7位 4位 5位SYNC PIDADDR ENDP CRC5令牌包中较为重要的是SETUP、IN和OUT这三个令牌包。它们用来在根集线器和设备端 点之间建立数据传输。一个IN包用来建立一个从设备到根集线器的数据传送,一个OUT 包用来建立从根集线器到设备的数据传输。IN包和OUT包可以对任何设备上的任何端点 编址。一个SETUP包是一个OUT包的特殊情形,它是高优先级的,也就是说设备必须 接受它,即使设备正在进行数据传输操作的过程中也要对其进行响应。SETUP包总是指向 端点 0 的。2. 数据(data)包一个数据信息包包含了

8、4个数据域:SYNC、PID、DATA与CRC16。在这里要注意的是 DATA数据域内所放置的位值,需根据USB设备的传输速度(慢速、高速与全速)以及传 输类型(中断传输、批量传输、等时传输)而定,且须以8字节为基本单位。也就是,若 传输的数据不足8字节,或传输到最后所剩余的也不足8字节,仍须传输8字节的数据 域。格式如下:8位 8位 01023字节 16位SYNC PID DATA CRC163.握手(Handshake)包握手信息包是最简单的信息包类型。在这个握手信息包中仅包含一个PID数据域而已,它 的格式如下所列:8位 8位SYNC PID其中仅包含SYNC与PID两个数据域。16.4

9、.3 事务在USB上数据信息的一次接收或发送的处理过程称为事务处理(Transaction)。事务处理 的类型包括输入(IN)事务处理、输出(OUT)事务处理、设置(SETUP)事务处理和帧开始、帧 结尾等类型。在输出(OUT)事务处理和设置(SETUP)事务处理中,紧接着SETUP和OUT包 后的是DATA包,DATA0和DATA1包是交替地发送的,在DATA包后面,设备将回应一 个握手信号,如果设备可以接收数据,就回应ACK包,如果设备忙,就回应NAK包,如 果设备出错,则回应STALL包;在IN事务中,IN包后面是设备发来的DATA包或NAK包 或STALL包,若设备忙或出错,就发NAK

10、包或STALL包给主机,若设备数据准备好发 送,则发DATA包,DATA0和DATA1包也是交替地发送的,紧接着DATA包后面是主机 发给设备的握手包,ACK表示主机可以接收数据,NAK包代表主机忙,STALL包代表主机 出错。下面我们再分别介绍这些事务。1. 输入(IN)事务处理输入事务处理表示USB主机从总线上的某个USB设备接收一个数据包的过程,接下来分析 输入事务处理的各种典型情况:(1)正常的输入事务处理1. 主机-设备(令牌信息包) SYNC IN ADDR ENDP CRC52. 设备-主机(数据信息包) SYNC DATA0 DATA CRC163. 主机-设备(握手信息包)

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

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

13、 DATA0 DATA CRC163. 设备-主机(握手信息包) SYNC ACK(2)设备忙时的设置事务处理1. 主机-设备(令牌信息包) SYNC SETUP ADDR ENDP CRC52. 主机-设备(数据信息包) SYNC DATA0 DATA CRC163. 设备-主机(握手信息包) SYNC NAK(3)设备出错时的设置事务处理1. 主机-设备(令牌信息包) SYNC SETUP ADDR ENDP CRC52. 主机-设备(数据信息包) SYNC DATA0 DATA CRC163. 设备-主机(握手信息包) SYNC STALL16.4.4 USB传输类型在 USB 的传输中

14、,制定了 4 种传输类型:控制传输、中断传输、批量传输以及实时传输。 这里只详细介绍控制传输,其他传输类型只作简要说明。1.控制传输控制传输是USB传输中最重要的传输,唯有正确地执行完控制传输,才能进一步正确地执 行其他传输模式。由于每个USB设备可能速度、传输的包的大小等信息有可能不同,因此每个USB设备内部 都记录着该设备的一些信息(也就是接下来将要介绍的设备描述符),当在主机上检测到 USB设备时,系统软件必须读取设备描述符,以确定该设备的类型和操作特性,以及对该 设备进行相应的配置,这些工作都是通过控制传输来完成。每个USB设备都必须实现一个 缺省的控制端点,该端点总是0号端点。控制传

15、输类型分为23个阶段:设置阶段、数据阶段(无数据控制没有此阶段)以及状 态阶段。根据数据阶段的数据传输的方向,控制传输又可分为3 种类型:控制读取(读取 USB描述符)、控制写入(配置USB设备)以及无数据控制。以下介绍各阶段的工作。阶段一:设置阶段USB设备在正常使用之前,必须先配置,本阶段由主机将信息传送给USB设备,定义对 USB设备的请求信息(如:读设备描述符)。主机一般会从USB设备获取配置信息后再确 定此设备有哪些功能。作为配置的一部分,主机会设置设备的配置值。我们统称这一阶段 为设置阶段。设置阶段由设置事务完成,也就是该阶段包含了 SETUP令牌信息包、紧随其后的DATAO 数据信息包(该信息包里的数据即为设备请求,本章将后续介绍)以及ACK握手信息包。 它的作用是执行一个设置的数据交换,并定义此控制传输的内容。阶段二:数据传输阶段 数据传输阶段是用来传输主机与设备之间的数据。控制读取是将数据从设备读到主机上,读取的数据USB设备描述符。该过程如图16-8所 示。对每一个数据信息包而言,首先,主机会发送一个IN令牌信息包,表示要读数据进 来。然后,设备将数据通过DATA1数据信息包回传给主机。最后,主机将以下列的方式加 以响应:当数据已经正确接收时,主机送出ACK令牌信息包;当主机正在忙碌时,发出

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

当前位置:首页 > 建筑/环境 > 建筑资料

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