;=========================================
; 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接口的键盘描述符范例相关推荐

  1. HID报表描述符(目前最全的解析,也是USB最复杂的描述符)

    说一下为什么写这篇文章,主要是最近在做关于USB-HID设备的描述符,看到关于HID报表描述符的解析有点少,自己看了下,后续还会发布还有关于USB的各种解析,有兴趣可以看看,可以让你更加明白USB工作 ...

  2. USB HID设备报告描述符详解

    概述: 报告在这里意思是数据传输(data transfer),而报告描述符是对这些传输的数据作用途(usage)上的说明. USB通讯协议的规范是以1ms产生一个USB帧(Frame),USB设备可 ...

  3. STM32自定义键盘(二)STM32单片机的USB接口-HID键盘

    STM32自定义键盘(二)STM32单片机的USB接口-HID键盘 HID描述符 生成HID键盘工程模板 修改HID报告描述符 键值数据发送 USB HID 键盘键值表 HID描述符 请参考这位博主的 ...

  4. 【USB笔记】配置描述符Configuration Descriptor

    USB笔记 配置描述符(Configuration Descriptor) 配置描述符(Configuration Descriptor)说明了一个特定配置的相关信息.取得设备描述符(Device D ...

  5. USB(六)-HID(报告描述符的结构实现)

    USB HID设备是通过报告(report)来传输数据的,报告有输入报告和输出报告.输入报告是USB设备发送给主机:输出报告是主机发送给USB设备. 报告描述符是用来描述一个报告的结构以及该报告里面的 ...

  6. 【USB笔记】端点描述符Endpoint Descriptor

    USB笔记 端点描述符 (Endpoint Descriptor) 端点描述符 (Endpoint Descriptor)描述了USB规范定义的端点信息,包含有端点的带宽等信息.每一个端点都有自己的端 ...

  7. USB接口的键盘在进入系统前无法使用的解决办法

    重启,进BIOS,Advanced >> USB Configuration >>Legacy USB Suport  ,设为 Enable 用win7,一直比较喜欢用休眠来关 ...

  8. 通用串行总线USB接口——USB2.0通信协议总结(USB通信机制、描述符、数据包类型、传输类型)

    [系列专栏]:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! <QT开发实战> <嵌入式通用开发实战> <从0到1学习嵌入式Linux开发>

  9. 二,usb描述符-设备 配置 接口 端点

    一,基础概念 在USB设备的逻辑组织中,包含设备.配置.接口和端点4个层次. 每个USB设备都提供了不同级别的配置信息,可以包含一个或多个配置,不同的配置使设备表现出不同的功能组合(在探测/连接期间需 ...

最新文章

  1. android 实现 下拉筛选的效果
  2. Node.js开发环境的搭建
  3. 一个女程序员的第七年工作总结
  4. Visual Entity 手册(十一)代码生成设置
  5. linux的基础知识——网络套接字函数
  6. cmd imp导入dmp文件_这是一篇长篇入门级数据库讲解:oracle数据库数据导入导出步骤...
  7. 面试薪资这样谈,让你的月薪加倍!
  8. 基于Active Directory的用户验证
  9. Python基础学习3——集合、文件、函数
  10. jQuery中animate()的方法以及$(body).animate({scrollTop:top})不被Firefox支持问题的解决...
  11. C# Gooflow+layer弹出层 全js代码
  12. pe系统服务器怎么做双盘备份,群晖硬盘版引导二合一启动盘 丢掉U盘小尾巴
  13. Wifi热点工具-青青草原WiFi
  14. Java(但行好事 莫问前程) 1
  15. Kubernetes 安全容器技术 kata gvisor
  16. 人工智能新风口上,网易是否能够突围?
  17. 中国报纸今年十大流行语发布:虐俘和审计风暴
  18. JavaScript提升(你不知道的JavaScript)
  19. 架构师多如过江之鲫,但你真的了解架构师这个工种吗?
  20. 推迟势的简单推导,希尔伯特空间引入以及分离变量法

热门文章

  1. Error response from daemon: manifest not found.
  2. 数据即代码:元驱动编程
  3. munin安装---已成功安装
  4. 干得累死,并不见得老板就待见你?
  5. mysql从青铜到王者_青铜到王者,快速提升你MySQL数据库的段位!
  6. sun java ide,1.6 JAVA IDE安装
  7. MySQL8.0 版本的安装
  8. SAAS平台的基本元素
  9. 尚硅谷_MySQL常见命令介绍
  10. Nginx的rewrite之rewrite指令