一、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:报告描述符的总长度
四、报告描述符
| Item Tag (Value) | Raw Data |
|---|---|
| Usage Page (Telephony Devices) | 05 0B |
| Usage (Phone) | 09 01 |
| Collection (Application) | A1 01 |
| Usage Page (Button) | 05 09 |
| Usage Minimum (Button 1) | 19 01 |
| Usage Maximum (Button 63) | 29 3F |
| Logical Minimum (0) | 15 00 |
| Logical Maximum (1) | 25 01 |
| Report Size (8) | 75 08 |
| Report Count (8) | 95 08 |
| Input (Cnst,Ary,Abs) | 81 01 |
| Usage Page (LEDs) | 05 08 |
| Usage Minimum (Num Lock) | 19 01 |
| Usage Maximum (Repeat) | 29 10 |
| Logical Minimum (0) | 15 00 |
| Logical Maximum (1) | 25 01 |
| Report Size (8) | 75 08 |
| Report Count (32) | 95 20 |
| Output (Cnst,Ary,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) | 91 01 |
| End Collection | C0 |
报告描述符由items组成。Item由item type, item tag, and item size组成。
1032

被折叠的 条评论
为什么被折叠?



