USB固件开发(HID设备)
1. HID设备的识别
HID设备类除了有文档第一部分所述的一些标准描述符(包括设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符)外,还有自己的类专有描述符:
HID描述符
报告描述符
物理描述符
正确实现HID设备类专用描述符是主机成功识别HID设备的关键。HID描述符和报告描述符是必须要使用的,物理描述符一般不被使用。
1.1 HID描述符
HID描述符跟接口描述符、端点描述符类似,也是随配置信息一起返回给主机的,主机并不会单独发出请求来读取它。HID描述符在配置信息中的位置是紧接接口描述符。例如:
_Config_Descriptor:
.dw _Config_Descriptor_End-_Config_Descriptor //bLength: 0x09 byte
.dw 0x02 //bDescriptorType: CONFIGURATION
.dw _Config_Descriptor_Total-_Config_Descriptor //wTotalLength:
.dw 0x00
.dw 0x01 //bNumInterfaces: 1 interfaces
.dw 0x01 //bConfigurationValue: configuration 1
.dw 0x00 //iConfiguration: index of string
.dw 0xC0 //bmAttributes: self powered, Not Support Remote-Wakeup
.dw 0x32 //MaxPower: 100 mA
_Config_Descriptor_End:
_HID_Interface_Descriptor:
//Interface 1 (0x09 byte)
.dw 0x09 //bLength: 0x09 byte
.dw 0x04 //bDescriptorType: INTERFACE
.dw 0x01 //bInterfaceNumber: interface