一、HID接口:Offset | Field | Size | Value | Description |
---|
0 | bLength | 1 | 09h | |
1 | bDescriptorType | 1 | 04h | Interface |
2 | bInterfaceNumber | 1 | 03h | |
3 | bAlternateSetting | 1 | 00h | |
4 | bNumEndpoints | 1 | 02h | |
5 | bInterfaceClass | 1 | 03h | HID |
6 | bInterfaceSubClass | 1 | 00h | |
7 | bInterfaceProtocol | 1 | 00h | |
8 | iInterface | 1 | 00h | |
其中:
bLength:为接口描述符的长度。
bDescriptorType:表明其是接口。
bInterfaceNumber:表示第几个接口,此处为3,表明前面定义了3个接口。
bAlternateSetting:指明可选设置的索引值。意思是如果此设备只有一种接口,但是有两个可选设置,那么这两个设置的bInterfaceNumber值必须相同,且bAlternateSetting值必须不同。
bNumEndpoints:指明接口使用的端点数目,不包括端点0
bInterfaceClass:指类类型,可以为以下类。1:音频类,2:CDC控制类,3:人机接口类(HID),5:物理类,6:图像类,7:打印机类,8:大数据存储类,9:集线器类,10:CDC数据类,11:智能卡类,13:安全类,220:诊断设备类,224:无线控制类,254:特定应用类,255厂商定义的设备。
bInterfaceSubClass:子类。HID中含义:
bInterfaceSubClass(含义)
0 No Subclass
1 Boot Interface Subclass
2 - 255 Reserved
bInterfaceProtocol:协议。HID中含义:
bInterfaceProtocol(含义)
0 None
1 Keyboard
2 Mouse
3 - 255 Reserved
因此,此表明其是HID类,没有子类和不使用协议。
二、HID 端点
Offset | Field | Size | Value | Description |
---|
0 | bLength | 1 | 07h | |
1 | bDescriptorType | 1 | 05h | Endpoint |
2 | bEndpointAddress | 1 | 83h | 3 In |
3 | bmAttributes | 1 | 03h | Interrupt |
| 1..0: Transfer Type | | ......11 | Interrupt |
| 7..2: Reserved | | 000000.. | |
4 | wMaxPacketSize | 2 | 0008h | 8 bytes |
6 | bInterval | 1 | 08h | 8 ms |
Offset | Field | Size | Value | Description |
---|
0 | bLength | 1 | 07h | |
1 | bDescriptorType | 1 | 05h | Endpoint |
2 | bEndpointAddress | 1 | 04h | 4 Out |
3 | bmAttributes | 1 | 03h | Interrupt |
| 1..0: Transfer Type | | ......11 | Interrupt |
| 7..2: Reserved | | 000000.. | |
4 | wMaxPacketSize | 2 | 0040h | 64 bytes |
6 | bInterval | 1 | 08h | 8 ms |
HID设备与HID驱动通讯
HID设备与HID驱动通讯要么使用控制端点,要么使用中断端点。
控制端点作用:
a 发送命令给HID设备,
b 发送数据给HID设备。
中断端点作用:
a 用来接收来自设备的数据
b 用来给设备发送数据
输出中断端点是可选的,没有的话,用控制端点传送。
三、HID描述符
Offset | Field | Size | Value | Description |
---|
0 | bLength | 1 | 09h | |
1 | bDescriptorType | 1 | 21h | HID |
2 | bcdHID | 2 | 0111h | 1.11 |
4 | bCountryCode | 1 | 00h | |
5 | bNumDescriptors | 1 | 01h | |
6 | bDescriptorType | 1 | 22h | Report |
7 | wDescriptorLength | 2 | 0211h | 529 bytes |
bLength:报告描述符长度(字节)
bDescriptorType:描述符类型:0x21(设备描述符 1 ; 配置描述符 2; 字符串描述符 3; 接
口描述符 4; 端点描述符 5; 设备限定描述符 6 ; 其他速率配置描述符 7 ;)
bcdHID:HID 版本号(BCD 码)
bCountryCode:国家/地区代码
bNumDescriptor:支持的其他类型描述符数量
bDescriptorType:类别描述符的类型
wDescriptorLength:报告描述符的总长度
阅读(4071) | 评论(0) | 转发(0) |