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