收藏 分享(赏)

USB_HID_设备类协议入门.doc

上传人:dzzj200808 文档编号:3028951 上传时间:2018-10-01 格式:DOC 页数:6 大小:113KB
下载 相关 举报
USB_HID_设备类协议入门.doc_第1页
第1页 / 共6页
USB_HID_设备类协议入门.doc_第2页
第2页 / 共6页
USB_HID_设备类协议入门.doc_第3页
第3页 / 共6页
USB_HID_设备类协议入门.doc_第4页
第4页 / 共6页
USB_HID_设备类协议入门.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、一、应用场合USB HID 类是比较大的一个类, HID 类设备属于人机交互操作的设备。用于控制计算机操作的一些方面,如 USB 鼠标,USB 键盘,USB 游戏操纵杆,USB 触摸板,USB 轨迹球、电话拨号设备、VCR 遥控等等设备。另外,使用 HID 设备的一个好处就是,操作系统自带了 HID 类的驱动程序,而用户无需去开发很麻烦的驱动程序,只要直接使用 API 调用即可完成通信。所以很多简单的 USB 设备,喜欢枚举成 HID 设备,这样就可以不用安装驱动而直接使用。二、USB HID 类可采用的通信管道所有的 HID 设备通过 USB 的控制管道(默认管道,即端点 0)和中断管道与主

2、机通信。表 1、USB HID 规范定义的 HID 设备可用端点 管道 要求 说明控制(端点 0) 必须 传输 USB 描述符、类请求代码以及供查询的消息数据等中断输入 必须 传输从设备到主机的输入数据中断输出 可选 传输从主机到设备的输出数据控制管道主要用于以下 3 个方面: 接收/响应 USB 主机的控制请示及相关的类数据 在 USB 主机查询时传输数据(如响应 Get_Report 请求等) 接收 USB 主机的数据 中断管道主要用于以下两个方面: USB 主机接收 USB 设备的异步传输数据 USB 主机发送有实时性要求的数据给 USB 设备 从 USB 主机到 USB 设备的中断输出

3、数据传输是可选的,当不支持中断输出数据传输时,USB 主机通过控制管道将数据传输给 USB 设备。三、与 USB HID 设备有关的描述符HID 设备的描述符除了 5 个 USB 的标准描述符(设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符,见百合电子工作室的另一篇文章: USB 开发基础USB 命令(请求)和 USB 描述符)外,还包括 3 个 HID 设备类特定描述符:HID 描述符、报告描述符、实体描述符。除了 HID 的三个特定描述符组成对 HID 设备的解释外,5 个标准描述符中与 HID 设备有关的部分有: 设备描述符中 bDeviceClass、bDeviceSub

4、Class 和 bDeviceProtocol 三个字段的值必须为零。 接口描述符中 bInterfaceClass 的值必须为 0x03,bInterfaceSubClass 的值为 0 或 1,为 1 表示 HID 设备符是一个启动设备(Boot Device,一般对 PC 机而言才有意义,意思是 BIOS 启动时能识别并使用您的 HID 设备,且只有标准鼠标或键盘类设备才能成为 Boot Device。如果为 0 则只有在操作系统启动后才能识别并使用您的HID 设备),bInterfaceProtocol 的取值含义如下表所示: 表 2、HID 接口描述符中 bInterfaceProt

5、ocol 的含义bInterfaceProtocol 的取值(十进制) 含义0 NONE1 键盘2 鼠标3255 保留下面分别对这 3 个 HID 设备类特定描述符进行说明。1、HID 描述符HID 描述符关联于接口描述符,因而如果一个设备只有一个接口描述符,则无论它有几个端点描述符,HID 设备只有一个 HID 描述符。HID 设备描述符主要描述 HID 规范的版本号、HID 通信所使用的额外描述符、报表描述符的长度等。表 2所示为 HID 描述符的结构:表 3、USB HID 类描述符的结构 偏移量域大小值 描述0 bLength 1数字此描述符的长度(以字节为单位)1 bDescript

6、orType 1常量描述符种类(此处为 0x21 即 HID 类描述符)2 bcdHID 2数字HID 规范版本号(BCD 码),采用 4 个 16 进制的 BCD 格式编码,如版本 1.0 的BCD 码为 0x0100,版本为 1.1 的 BCD 码为 0x01104 bCountryCode 1数字硬件目的国家的识别码(BCD 码)(见表 3)5 bNumDescritors 1数字支持的附属描述符数目6 bDescriptorType 1常量HID 相关描述符的类型,取值见表 57 wDescriptorLength 2数字报告描述符总长度9 bDescriptorType 1常量用于识

7、别描述符类型的常量,使用在有一个以上描述符的设备10 wDescriptorLength 2数字描述符总长度,使用在有一个以上描述符的设备表 4、HID 硬件目的国家识别码识别码(十进制) 国家和地区 识别码(十进制) 国家和地区00 不支持 18 Netherlands/Dutch01 Arabic 19 Norwegian02 Belgian 20 Persian (Farsi)03 Canadian-Bilingual 21 Poland04 Canadian-French 22 Portuguese05 Czech Republic 23 Russia06 Danish 24 Slov

8、akia07 Finnish 25 Spanish08 French 26 Swedish09 German 27 Swiss/French10 Greek 28 Swiss/German11 Hebrew 29 Switzerland12 Hungary 30 Taiwan13 International (ISO) 31 Turkish-Q14 Italian 32 UK15 Japan (Katakana) 33 US16 Korean 34 Yugoslavia17 Latin American 35 Turkish-F36255 Reserved表 5、HID 相关描述符类型定义描述

9、符类型值 HID 相关描述符类型0x21 HID 描述符0x22 报表描述符0x23 实体描述符2、报告描述符HID 设备的报告描述符比较复杂也比较难理解。报告描述符的语法不同于 USB 标准描述符,它是以项目(items)方式排列而成,无一定的长度。 HID 的报告描述符已经不是简简单单的描述某个值对应某个固定意义了,它已经能够组合出很多种情况,并且需要 PC 上的 HID 驱动程序提供parser 解释器来对描述的设备情形进行重新解释,进而组合生成出本 HID 硬件设备独特的数据流格式,所以我觉得可以把它理解为“报告描述符脚本语言”更为贴切。我们使用“报告描述符”专用脚本语言,让用户来自己

10、定义他们的 HID 设备都有什么数据、以及这些数据各个位(bit)都有什么意义。有关报告描述符的详细信息可参考 USB HID 协议,USB 协会提供了一个 HID 描述符编辑工具称作 HID Descriptor Tool,用它可方便生成我们的报告描述符。3、实体描述符实体描述符被用来描述设备的行为特性。实体描述符是可选的描述符,HID 设备可以根据其本体的设备特性选择是否包含实体描述符。表 5 所示为 HID 的实体描述符结构。表 6、HID 实体描述符的结构偏移量 域 大小 说明0 bDesignator 1 用来指定本体的哪一部分影响项目(含义见表 6)1 bFlags 1位指定标志位

11、 04:Effort位 57:Qualifier(含义见表 7)表 7、bDesignator 取值含义表bDesignator 取值 含义 bDesignator 取值 含义0x00 无 0x15 小指0x01 手 0x16 头0x02 眼球 0x17 肩0x03 眉 0x18 腰骨0x04 眼皮 0x19 腰0x05 耳 0x1A 大腿0x06 鼻 0x1B 膝盖0x07 嘴 0x1C 小腿0x08 上唇 0x1D 足0x09 下唇 0x1E 脚0x0A 颚 0x1F 脚跟0x0B 颈 0x20 拇指0x0C 上臂 0x21 大拇指0x0D 手肘 0x22 第二指0x0E 前臂 0x23

12、第三指0x0F 手腕 0x24 第四指0x10 手掌0x25 小拇指0x11 拇指 0x26 眉0x12 食指 0x27 脸0x13 中指 0x280xFF 保留0x14 无名指 表 8、Qualifier 取值含义Qualifier 取值 含义 Qualifier 取值 含义0x00 无 0x04 其中之一0x01 右 0x05 中间0x02 左 0x06 保留0x03 两者同时0x07 保留四、USB HID 类命令(请求)HID 设备类特定的命令(请求)有 6 个,它们分别是Get_Report、Get_Idle、Get_Protocol、Set_Report、Set_Idle 和 Se

13、t_Protocol。HID 类请求(命令)数据包格式如表 8 所示:表 9、HID 类请求(命令)包格式偏移量 域 大小 说明0 bmRequestType 1HID 设备类请求特性如下:位 7:0从 USB HOST 到 USB 设备1从 USB 设备到 USB HOST位 65:01请求类型为设备类请求位 40:0001请求对象为接口(interface)因而,针对 HID 的设备类请求,仅仅 10100001 和 00100001 有效1 bRequest 1 HID 类请求(参考表 9)2 wValue 2 高字节说明描述符的类型(参考表 5),而低字节为非 0 值时被用来选定实体描

14、述符。4 wIndex 2 2 字节数值,根据不同的 bRequest 有不同的意义6 wLength 2 该请求的数据段长度表 10、HID 类请求数值 HID 类请求描述符 注释0x01 GET_REPORT 0x02 GET_IDLE 0x03 GET_PROTOCOL 仅仅适应于支持启动功能的 HID 设备( Boot Device)0x09 SET_REPORT 0x0A SET_IDLE 0x0B SET_PROTOCOL 仅仅适应于支持启动功能的 HID 设备( Boot Device)USB 主机在请求 HID 设备的配置描述符时,设备首先返回的描述符为:配置描述符、接口描述符、 HID 描述符、端点描述符。HID 描述符里包含了其附属的描述的类型和长度(如报告描述符),然后主机再根据 HID 描述符的信息请求其相关的描述符。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报