微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > USB HID 设备类协议入门

USB HID 设备类协议入门

时间:12-12 来源:互联网 点击:

且需要PC上的HID驱动程序提供parser解释器来对描述的设备情形进行重新解释,进而组合生成出本HID硬件设备独特的数据流格式,所以我觉得可以把它理解为“报告描述符脚本语言”更为贴切。我们使用“报告描述符”专用脚本语言,让用户来自己定义他们的HID设备都有什么数据、以及这些数据各个位(bit)都有什么意义。

有关报告描述符的详细信息可参考USB HID协议,USB协会提供了一个HID描述符编辑工具称作HID Descriptor Tool,用它可方便生成我们的报告描述符。

3、实体描述符

实体描述符被用来描述设备的行为特性。实体描述符是可选的描述符,HID设备可以根据其本体的设备特性选择是否包含实体描述符。表5所示为HID的实体描述符结构。

表6、HID实体描述符的结构
偏移量大小 说明
0bDesignator1用来指定本体的哪一部分影响项目(含义见表6)
1bFlags1位指定标志
位0~4:Effort
位5~7:Qualifier(含义见表7)
表7、bDesignator取值含义表
bDesignator取值含义bDesignator取值含义
0x000x15小指
0x010x16
0x02眼球0x17
0x030x18腰骨
0x04眼皮0x19
0x050x1A大腿
0x060x1B膝盖
0x070x1C小腿
0x08上唇0x1D
0x09下唇0x1E
0x0A0x1F脚跟
0x0B0x20拇指
0x0C上臂0x21大拇指
0x0D手肘0x22第二指
0x0E前臂0x23第三指
0x0F手腕0x24第四指
0x10手掌0x25小拇指
0x11拇指0x26
0x12食指0x27
0x13中指0x28~0xFF保留
0x14无名指
表8、Qualifier取值含义
Qualifier取值含义Qualifier取值含义
0x000x04其中之一
0x010x05中间
0x020x06保留
0x03两者同时0x07保留

四、USB HID类命令(请求)

HID设备类特定的命令(请求)有6个,它们分别是Get_Report、Get_Idle、Get_Protocol、Set_Report、Set_Idle和Set_Protocol。

HID类请求(命令)数据包格式如表8所示:

表9、HID类请求(命令)包格式
偏移量大小说明
0bmRequestType1

HID设备类请求特性如下:
位7:
0=从USB HOST到USB设备
1=从USB设备到USB HOST
位6~5:
01=请求类型为设备类请求
位4~0:
0001=请求对象为接口(interface)

因而,针对HID的设备类请求,仅仅10100001和00100001有效

1bRequest1HID类请求(参考表9)
2wValue2高字节说明描述符的类型(参考表5),而低字节为非0值时被用来选定实体描述符。
4wIndex22字节数值,根据不同的bRequest有不同的意义
6wLength2该请求的数据段长度
表10、HID类请求
数值HID类请求描述符注释
0x01GET_REPORT
0x02GET_IDLE
0x03GET_PROTOCOL仅仅适应于支持启动功能的HID设备(Boot Device)
0x09SET_REPORT
0x0ASET_IDLE
0x0BSET_PROTOCOL仅仅适应于支持启动功能的HID设备(Boot Device)

USB主机在请求HID设备的配置描述符时,设备首先返回的描述符为:配置描述符、接口描述符、HID描述符、端点描述符。HID描述符里包含了其附属的描述的类型和长度(如报告描述符),然后主机再根据HID描述符的信息请求其相关的描述符。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top