




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、USB HID协议USB HID协议11/11USB HID协议USB HID类设备属于人机交互操作的设备,是一个比较大的类,用于控制计算机操作的某些方面,如USB鼠标、USB键盘、USB游戏操作杆、USB触摸板、USB轨迹球、电话拨号设备、VCR遥控等等设备。另外,使用HID设备的一个好处就是操作系统自带了HID类的驱动程序,用户无需开发很麻烦的驱动程序,只有直接使用API调用即可完成通信,所有很多简单的USB设备喜欢枚举成HID设备,这样就可以不用安装驱动而直接使用。1、HID设备描述符 当插入USB设备后,主机会向设备请求各种描述符来识别设备。为了把一个设备识别为HID类,设备在定义描述
2、符的时候必须遵守HID规范。HID设备的描述符除了5个USB的标准描述符(设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符)外,还包括3个HID设备类特定描述符:HID描述符、报告描述符、物理描述符。HID描述符是关联于接口(而不是端点)的,所以设备不需要为每个端点都提供一个HID描述符。设备和主机的通信是通过报告的形式来实现的。而物理描述符不是必需的。 5个标准描述符中与HID设备有关的部分有: 设备描述符中bDeviceClass、bDeviceSubClass和bDeviceProtocol三个字段的值必须为0。 接口描述符中bInterfaceClass的值必须为0 x03
3、,bInterfaceSubClass的值为0或1,为1表示HID设备是一个启动设备(Boot Device,一般对PC机而言才有意义,意思是BIOS启动时能识别并使用您的HID设备,且只有标准鼠标或键盘类设备才能成为Boot Device。如果为0则只有在操作系统启动后才能识别并使用您的HID设备)。HID接口描述符中bInterfaceProtocol的含义bInterfaceProtocol的取值含义0NONE1键盘2鼠标3255保留1.1 HID描述符 HID描述符关联于接口描述符,因而如果一个设备只有一个接口描述符,则无论它有几个端点描述符,HID设备只有一个HID描述符。HID设备
4、描述符主要描述HID规范的版本号、HID设备所用的额外描述符、报告描述符的长度等。USB HID类描述符的结构偏移量域大小描述0bLength1描述符的字节数1bDescriptorType1描述符类型,HID类描述符为0 x212bcdHID2HID版本号,如1.0版本的BCD码为0 x000,版本1.1的BCD码为0 x01104bCountryCode1硬件目的国家的识别码(BCD码)5bNumDescrioptors1支持的附属描述符数目6bDescrioptorType1HID相关描述符的类型0 x21:HID描述符0 x22:报告描述符0 x23:物理描述符7wDescriptor
5、Length2报告描述符总长度9bDescriptorType1用于识别描述符类型的常量,使用一个以上描述符的设备10wDescrioptorLength2描述符总长度,使用一个以上描述符的设备1.2 报告描述符 HID设备的报告描述符比较复杂也比较难理解。它以item形式排列组合而成,无固定长度,用户可以自定义长度以及每一bit的含义。HID报告描述符已经不是简简单单地描述某个值对应某个固定意义了,它已经能够组合出很多种情况,并且需要PC上的HID驱动程序提供parser解释器来对描述的设备情形进行重新解释,进而组合生成出本HID硬件设备独特的数据流格式,所以可以把它理解为“报告描述符脚本语
6、言”更为贴切。我们使用“报告描述符”专用脚本语言,让用户来自己定义他们的HID设备都有什么数据以及这些数据各bit都有什么意义。USB协会提供了一个HID描述符编辑工具HIDDescrioptor Tool,用它可以方便生成报告描述符。 item类型分为三种:main, global和local。其中main类型又可以分为5种tag:input item tag:指的是从设备的一个或多个类似控制管道得到的数据output item tag:指的是发送给一个或多个类似控制管道的数据feature item tag:表示设备的输入输出不面向最终用户collection item tag:一个有意义
7、的input, output和feature的组合项目end collection item tag:指定一个collectionitem的终止每一个mainitem tag(input,output,feature)都表明了来自一个特定管道的数据的大小,数据相对还是独立,以及其他相关信息。在此之前,global和local item定义了数据的最大值和最小值,等等。local item仅仅描述下一个main item定义的数据域,而global item是这一个报告描述符中所有后续数据段的默认属性。一个报告描述符可能包含多个main item,为了准确描述来自一个控制管道的数据,一个报告描述
8、符必须包括以下内容:input(output,feature)usageusage pageLogical MinimumLogical MaximumReport SizeReport Count下面用一个三键鼠标举例说明:UsagePage (Generic Desktop); /global itemUsage(Mouse); /global itemCollection(Application); /Start MousecollectionUsage(Pointer); /Collection(Physical); /Start Pointer collectionUsagePage
9、 (Buttons)UsageMinimum (1),UsageMaximum (3),LogicalMinimum (0),LogicalMaximum (1) ; /Fields return valuesfrom 0 to 1ReportCount (3),ReportSize (1); /Create three 1 bit fields(button 1, 2, & 3)Input(Data, Variable, Absolute); /Addfields to the input report.ReportCount (1),ReportSize (5); /Create 5 bi
10、t constant fieldInput(Constant), ;Add field to the input reportUsagePage (Generic Desktop),Usage(X),Usage(Y),LogicalMinimum (-127),Logical Maximum(127); /Fields return values from-127 to 127ReportSize (8),ReportCount (2); /Create two 8 bit fields(X & Y position)Input(Data, Variable, Relative); /Addf
11、ields to the input reportEndCollection; /Close Pointer collectionEndCollection; /Close Mouse collection item的数据格式有两种,分别是短item和长item。 短item格式bSize0:0个字节 1:1个字节 2:2个字节 3:3个字节bType0:main 1:global 2:local 3:保留bTagitem类型8:input 9:output A:collection B: feature C:end collection 长item,其bType位值为3,bTag值为FbDa
12、taSize0:0个字节 1:1个字节 2:2个字节 3:3个字节bLongItemTag0:main 1:global 2:local 3:保留data数据1.3 物理描述符 物理描述符被用来描述设备的行为特性,物理描述符是可选的,HID设备可以根据其本体的设备特性选择是否包含物理描述符。下表是HID的物理描述符结构。HID物理描述符的结构偏移量域大小描述0bDesignator1用来指定本体的哪一部分影响项目1bFlags1位指定标志位04:Effort位57:QualifierbDesignator取值含义表取值含义取值含义0 x00无0 x15小指0 x01手0 x16头0 x02眼球
13、0 x17肩0 x03眉0 x18腰骨0 x04眼皮0 x19腰0 x05耳0 x1A大腿0 x06鼻0 x1B膝盖0 x07嘴0 x1C小腿0 x08上唇0 x1D足0 x09下唇0 x1E脚0 x0A颚0 x1F脚跟0 x0B颈0 x20拇指0 x0C上臂0 x21大拇指0 x0D手肘0 x22第二指0 x0E前臂0 x23第三指0 x0F手腕0 x24第四指0 x10手掌0 x25小拇指0 x11拇指0 x26眉0 x12食指0 x27脸0 x13中指0 x280 xFF保留0 x14无名指Qualifier取值含义取值含义取值含义0 x00无0 x04其中之一0 x01右0 x05中间
14、0 x02左0 x06保留0 x03同时0 x07保留2、HID类可采用的通信管道 所有的HID设备通过USB的控制管道(默认管道,即端点0)和中断管道与主机通信。USB HID规范定义的HID设备可用端点管道要求说明控制(端点)必须传输USB描述符、类请求代码以及供查询的消息数据等中断输入必须传输从设备到主机的输入数据中断输出可选传输从主机到设备的输出数据 控制管道主要用于以下3个方面:接收/响应USB主机的控制请示及相关的类数据在USB主机查询时传输数据(如响应Get_Report请求等)接收USB主机的数据 中断管道主要用于以下两个方面:USB主机接收USB设备的异步传输数据USB主机发
15、送有实时性要求的数据给USB设备 从USB主机到USB设备的中断输出数据传输是可选的,当不支持中断输出数据传输时,USB主机通过控制管道将数据传输给USB设备。3、HID设备类特定的命令(请求) HID设备类特定的命令(请求)有6个,它们分别是Get_Report, Get_Idle, Get_Protocol,Set_Report, Set_Idle和Set_Procotol。 HID类请求(命令)数据包格式如下表所示:HID类请求(命令)包格式偏移量域大小描述0bmRequestType1D7数据传输方向0=从USB HOST到USB设备1=从USB设备到USB HOSTD6:5类型01=
16、请求类型为设备类请求D4:0接收端0001=请求对象为接口因而针对HID的设备类请求,仅仅10100001和00100001有效1bRequest1HID类请求2wValue2高字节说明描述符的类型0 x21:HID描述符0 x22:报告描述符0 x23:物理描述符低字节非0时被用来选定物理描述符4wIndex2根据不同的bRequest有不同的意义6wLength2该请求的数据段长度HID类请求bRequest数值HID类请求描述符注释0 x01GET_REPORT主机用控制传输从设备接收数据,所有HID类设备都要支持这个请求;0 x02GET_IDLE主机读取设备当前的空闲速率,设备可以不
17、支持此请求;0 x03GET_PROTOCOL仅仅适应于支持启动功能的HID设备(Boot Device)0 x09SET_REPORT设备用控制传输接收主机的数据,设备可以不支持此请求;0 x0ASET_IDLE设置闲置状态,设备可不支持此请求;0 x0BSET_PROTOCOL仅仅适应于支持启动功能的HID设备(Boot Device)3.1 GET_REPORT 主机通过控制端点获取一个Report域值bmRequestType0 xA1bRequest0 x01wValue高字节表示报告类型0 x01: input0 x02: output0 x03: featureOther: re
18、served低字节表示ReportID,如不使用设为0wIndexHID的interface索引值wLengthReport长度DataReport内容3.2 SET_REPORT 主机发送一个Report给设备,用以设置input,output或者feature域值bmRequestType0 x21bRequest0 x09wValue高字节表示报告类型0 x01: input0 x02: output0 x03: featureOther: reserved低字节表示ReportID,如不使用设为0wIndexHID的interface索引值wLengthReport长度DataReport内容3.3 GET_IDLE域值bmRequestType0 xA1bRequest0 x02wValue高字节0低字节表示ReportID,如不使用设为0wIndexHID的interface索引值wLength1Data空闲速率3.4 SET_IDLE域值bmRequestType0 x21bRequest0 x0AwValue高字节新的速率低字节表示ReportID,如不使用设为0wIndexHID的interface索引值wLength0Data无3.5 GET_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 棉花仓储人力资源管理策略考核试卷
- 玻璃容器生产过程中的数字化控制技术考核试卷
- 水利工程维修保养机械考核试卷
- 玉米种植农业生产资料供应与监管考核试卷
- 珠宝首饰行业创新设计理念研究考核试卷
- 森林改培的合作与合作机制考核试卷
- 2025年酚醛模塑料电木粉项目可行性研究报告
- 2025年过氧化氢酶项目可行性研究报告
- 2025年走珠笔项目可行性研究报告
- 2025-2030中国自助秤行业市场发展趋势与前景展望战略研究报告
- 《人工智能技术基础》课件-第六章 知识图谱
- 2025年山东省济南市市中区中考物理一模试卷(无答案)
- 商业秘密保护:内外勾结型侵犯行为的司法认定分析
- 2025年全国中小学生安全教育日专题
- 2025年电子设备装接工岗位职业技能资格证考试题(附答案)
- 2025年河南航空港发展投资集团有限公司社会招聘45人笔试参考题库附带答案详解
- 2025太阳能光热发电站熔融盐储热系统技术
- 2025年安阳职业技术学院单招职业技能测试题库及答案一套
- 2024年全国高考新课标Ⅱ卷数学试题含答案解析
- 2025延长石油(集团)限责任公司社会招聘高频重点提升(共500题)附带答案详解
- 2025年山东国际信托股份限公司社会招聘高频重点提升(共500题)附带答案详解
评论
0/150
提交评论