USB接口的键盘描述符范例
生活随笔
收集整理的這篇文章主要介紹了
USB接口的键盘描述符范例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
;=========================================
; Device descriptor 設備描述符
;=========================================
DEVICE_DESC_DATA:
DB 0x12 ; bLength = 18,該描述符長度為18字節
DB 0x01 ; bDescriptorType = 01,表明是設備描述符
DB 0x10, 0x01 ; bcdUSB,USB設備版本號=1.1
DB 0x00 ; DeviceClass,設備類碼,HID設備為0,類別在接口描述符中定義
DB 0X00 ; DeviceSubClass,設備子類碼,DeviceClass為0時該字段必須為0
DB 0X00 ; bDevicePortocol,協議碼,DeviceClass為0時該字段必須為0
DB 0x08 ; bMaxPacketSize0,端點0的最大包尺寸
DB 0xFF, 0xFF ; bVendor,廠商ID,由USB實現者論壇確定的
DB 0x01, 0x00 ; bProduct,產品ID
DB 0x00, 0x01 ; bcdDevice,設備版本號為1.00
DB 0x04 ; iManufacturer,廠商字符串的索引值,見字符串描述符
DB 0x0E ; iProduct,產品字符串的索引值,見字符串描述符
DB 0x30 ; iSerialNumber,產品序列號字符串的索引值,見字符串描述符
DB 0X01 ; bNumConfigurations,配置數目只有1個
;=========================================
; Configuration descriptor 配置描述符
;=========================================
CONFIG_DESC_DATA:
DB 0x09 ; bLength=9,該描述符長度為9字節
DB 0x02 ; bDescriptorType = 02,表明是配置描述符
DB 0x3B, 0x00 ; wTotalLength = 59,配置、接口、端點和HID描述符的總和字節數
DB 0x02 ; bNumInterfaces = 2,本配置支持的接口數目為2個
DB 0x01 ; bConfigurationValue = 1,本配置描述符的標識符
DB 0x00 ; iCongfiguration = 0,配置描述符說明字符串的索引值
DB 0XA0 ; bmAttributes,電源及喚醒設置,USB1.1版中D7=1,D6=0表示總線供電; D5=1表示支持遠程喚醒
DB 0X32 ; MaxPower = 50,本設備最大耗電為50X2mA=100mA
;=========================================
; Interface descriptor 接口描述符
;=========================================
InterfaceDescriptor0:
DB 0x09 ; bLength = 9,該描述符長度
DB 0x04 ; bDescriptorType = 4,表明是接口描述符
DB 0x00 ; bInterfaceNumber = 0,此接口的識別標識符
DB 0x00 ; bAlternateSetting = 0,表示此接口無替代設置值
DB 0x01 ; bNumEndpoints = 1,本接口的端點數目,HID設備使用端點1
DB 0x03 ; bInterfaceClass = 3,表示該設備是HID類別
DB 0x01 ; bInterfaceSubClass = 1,表示支持啟動接口
DB 0x01 ; bInterfaceProtocol = 1,表示支持鍵盤協議
DB 0x00 ; iInterface = 0,接口描述符說明字符串的索引值,0表示無字符串
;=========================================
; HID descriptor HID描述符
;=========================================
HIDDescriptor0:
DB 0x09 ; bLength = 9,該描述符長度
DB 0x21 ; bDescriptorType = 21h,表明是HID描述符
DB 0x00, 0x01 ; bcdHID = 0100,HID規范版本為1.00
DB 0x00 ; bCountryCode = 0,硬件設備所在國家的國家代碼,0表示未指明
DB 0x01 ; nNumDescriptors = 1,表示支持的描述符有1個,即一個報表描述符
DB 0x22 ; bDescriptorType = 22h,描述符類別,表示支持的描述符是報表描述符
DB 0x3F, 0x00 ; wDescriptorLength = 63,表示支持的報表描述符的長度
;=========================================
; EndPoint descriptor 端點描述符
;=========================================
EndpointDescriptor0:
DB 0x07 ; bLength = 7,該描述符長度
DB 0x05 ; bDescriptorType = 5,表明是端點描述符
DB 0x81 ; bEndpointAddress = 1000 0001b,表示1號輸入端點
DB 0X03 ; bmAttributes = 00000011b,表示中斷類型端點
DB 0x08, 0x00 ; wMaxPacketSize = 8,端點發送和接收的最大包尺寸為8
DB 10 ; bInterval = 10,表示中斷端點輪詢時間間隔為10ms
;=========================================
; String descriptor 字符串描述符
;=========================================
StringDescriptor0:
DB 0x04 ; bLength = 4,字符串描述符0的長度為4
DB 0x03 ; bDescriptorType = 3,表明是字符串描述符
DB 0x09, 0x00 ; wLANGID = 0009h,表明是英語
DB 0x0A ; bLength = 10,字符串描述符的長度為10
DB 0x03 ; bDescriptorType = 3,表明是字符串描述符
DB 0x41, 0x00, 0x43, 0x00, 0x4D, 0x00, 0x45, 0x00 ; bString = “ACME“,Unicode編碼的字符串
DB 0x22 ; bLength = 34,字符串描述符的長度為34
DB 0x03 ; bDescriptorType = 3,表明是字符串描述符
DB 0x4C, 0x00, 0x6F, 0x00, 0x63, 0x00, 0x61, 0x00
DB 0x74, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x20, 0x00
DB 0x4B, 0x00, 0x65, 0x00, 0x79, 0x00, 0x62, 0x00
DB 0x6F, 0x00, 0x61, 0x00, 0x72, 0x00, 0x64, 0x00 ; bString = “Locator Keyboard“,Unicode編碼的字符串
DB 0x0E ; bLength = 14,字符串描述符的長度為14
DB 0x03 ; bDescriptorType = 3,表明是字符串描述符
DB 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x21, 0x00
DB 0x22, 0x00, 0x23, 0x00 ; bString = “ABC123“,Unicode編碼的字符串
;=========================================
;HID Reports Descriptor 報表描述符
;=========================================
DB 0x05, 1 ; Usage Page (1: Generic Desktop)
DB 0x09, 6 ; Usage (6: Keyboard) 表示報表定義的是HID鍵盤
DB 0xA1, 1 ; Collection (1: Application) ====================集合開始 ; ; 以下定義了鍵盤的修飾鍵輸入報表,共有8個鍵,組成一個字節 ; 用法見HID Usage Table中的第10節中的鍵盤用法定義
DB 0x05, 7 ; Usage page (7: Key Codes)
DB 0x19, 224 ; Usage Minimum (224)
DB 0x29, 231 ; Usage Maximum (231)
DB 0x15, 0 ; Logical Minimum (0)
DB 0x25, 1 ; Logical Maximum (1)
DB 0x75, 1 ; Report Size (1)
DB 0x95, 8 ; Report Count (8)
DB 0x81, 2 ; Input (Data,Variable,Absolute) ; ; 以下定義了一個保留字節的輸入報表
DB 0x95, 1 ; Report Count (1)
DB 0x75, 8 ; Report Size (8),
DB 0x81, 1 ; Input (Constant) = Reserved Byte ; ; 以下定義了鍵盤的LED指示燈輸出報表項目,共有5個指示燈 ; 用法見HID Usage Table中的第11節中的LED用法定義
DB 0x95, 5 ; Report Count (5)
?
總結
以上是生活随笔為你收集整理的USB接口的键盘描述符范例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HID报表描述符(目前最全的解析,也是U
- 下一篇: HID特定请求