HID描述符

1、hid设备描述符

USB设备中有一大类就是HID设备,即Human Interface Devices,人机接口设备。这类设备包括鼠标、键盘等,主要用于人与计算机进行交互。

它是USB协议最早支持的一种设备类。HID设备可以作为低速全速高速设备用。由于HID设备要求用户输入能得到及时响应,故其传输方式通常采用中断方式。
在USB协议中,HID设备的定义放置在接口描述符中,USB的设备描述符和配置描述符中不包含HID设备的信息。因此,对于某些特定的HID设备,可以定义多个接口,只有其中一个接口为HID设备类即可。


当定义一个设备为HID设备时,其设备描述符应为:

 

其接口描述符应该:
             bInterfaceClass=0x03

另外(接口描述符):
对无引导的HID设备,子类代码bInterfaceSubClass应置0,此时bInterfaceProtocol无效,置零即可。即为:
            bInterfaceClass=0x03
            bInterfaceSubClass=0
            bInterfaceProtocol=0

对支持引导的USB设备,子类代码bInterfaceSubClass应置1,此时bInterfaceProtocol可以为1或2,1表示键盘接口,3表示鼠标接口。其参考设置如下:
            bInterfaceClass=0x03
            bInterfaceSubClass=1
            bInterfaceProtocol=1或2
HID设备支持USB标准描述符中的五个:设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符。除此之外,HID设备还有三种特殊的描 述符:HID描述符、报告描述符、物理描述符。一个USB设备只能支持一个HID描述符,但可以支持多个报告描述符,而物理描述符则可以有也可以没有。


2.1 HID描述符
HID描述符用于识别HID设备中所包含的额外描述符,例如报告描述符或物理描述符等。其格式如下:


 各字段含义:
bLength:HID描述符长度。
bDescriptorType:HID描述符类型,值为0x21。
bcdHID:HID设备所遵循的HID版本号,为4位16进制的BCD码数据。1.0即0x0100,1.1即0x0101,2.0即0x0200。
bCountryCode:HID设备国家/地区代码。
bNumDescriptor:HID设备支持的其他设备描述符的数量。由于HID设备至少需要包括一个报告描述符,故其值至小为0x01。
bDescriptorType:HID描述符附属的类别描述符长度。
bDescriptorType/wDescriptorLength:可选字段,用于表示HID描述符附属的类别描述符类型及长度。
2.2 报告描述符
HID设备的报告描述符是一种数据报表,主要用于定义HID设备和USB主机之间的数据交换格式,HID设备报告描述符的类型值为0x22。
报告描述符使用自定义的数据结构,用于传输特定的数据包。例如对于键盘,需要在数据包中指明按键的值,报告描述符把这些数据打包发给主机,主机对发来的数据进行处理。它有四个组成部分,其格式如下:


各字段含义:
bSize:占用两个位,指示数据部分,即[data]字段的长度,00b表没有数据字节,01b表只有一个数据字节,10b表示有两个数据字节,11b表有4个数据字节。
bType:数据项类型,用于指明数据项的类型。00b主数据类型,01b全局数据类型,10b局部数据类型,11b保留。
bTag:数据项标签,用于指明数据项的功能。报告描述符需要包含的数据项标签有:输入输出数据项标签、用法数据项标签、用法页数据项标签、逻辑最小和最大值数据项标签、报告大小数据项标签以及报告计数数据项标签。
[data]:数据字节,随着前面bSize定义的大小而变化。
2.3 物理描述符
HID设备的物理描述符主要用于报告物理设备的激活信息,其类型值为0x23,它是可选的,对大部分设备不需要使用此描述符。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值