精华内容
下载资源
问答
  • HID设备描述符

    2020-12-25 10:12:53
    HID 设备除了支持 USB 设备的 5 种标准描述符之外,还支持 HID 设备特有的 3 种描 述符。这些描述符是:USB 标准描述符设备、配置、接口、端点和字符串描述符HID 特有的描述符HID、报表(Report)和实体...
    1. HID 设备除了支持 USB 设备的 5 种标准描述符之外,还支持 HID 设备特有的 3 种描
      述符。这些描述符是:
      USB 标准描述符:设备、配置、接口、端点和字符串描述符。
      HID 特有的描述符:HID、报表(Report)和实体(Physical)描述符。(基本不用,至少我没遇到需要描述实体描述符的)

    2. 从描述符的关联关系看,HID 描述符是关联于接口。所以如果一个 HID 设备有 2 个端点,设备不需要每个端点有一个 HID 描述符。

    3. 从前面的 USB 描述符可以看出一个规律,描述符的第一、二字节分别是描述符的长度和类型,描述符的类型字段(bDescriptorType)表明描述符的种类,下表列出了不同描述符的类型字段数值。

    4. 对于一个 HID 设备,设备描述符与配置描述符没有 HID 特定的信息。其设备描述符的bDeviceClass 和 bDeviceSubClass 字段的值为 0,接口描述符的 bInterfaceClass 字段值为 03,表示设备的该接口是 HID 类别。在接口描述符中其他包含 HID 特定信息的字段还有子类别码(blnterfaceSubClass)与协议码(blnterfaceProtocol 字段)。
    5. 在接口描述符中子类别码字段等于 1 表示此设备支持启动接口(Boot Interface)。如果设备有启动接口,即便主机的 HID 没有加载驱动程序,设备也可以使用。这种情形可能发生在计算机是由 DOS 直接启动,在启动时观看系统设置画面或使用 Windows 的安全模式时。
    6. 含有启动接口的键盘或鼠标可以使用 BIOS 或许多主机支持的默认简单协议。HID 规范定义了键盘与鼠标的启动接口协议。
    7. 如果设备没有启动接口,并且接口描述符中协议码字段是 1,表示设备支持键盘接口,协议码字段是 2,表示支持鼠标接口。接口描述符中协议码字段是 0,表示设备不支持启动协议。
    8. 在 HID Usage Tables 规范中定义了键盘与鼠标的启动描述符(Boot Descriptor)。BIOS 不需要从设备中读取描述符,因为它知道启动协议,并且假设设备支持启动协议。所以要启动的设备不需要在固件内包含启动接口描述符,它只要在主机尚未要求在报表描述符中的定义协议时支持启动协议即可。在操作系统加载 HlD 驱动程序后会使用Set_Protocol 请求,将设备由启动协议转换成报表协议。
    展开全文
  • usbHID设备描述符

    2013-04-19 15:02:55
    usbHID设备描述符 HID设备描述的详解
  • 用BUSHOUND 采集到的SONY 手柄的HID 设备描述符
  • Hid设备描述符生成工具 !可以帮助生成自己想要的设备描述符!
  • 自己设计的一款手柄的HID设备描述符,测试过的,使用没问题
  • 这两天一直再看HID描述符方面的知识,但是看到很多文档都是单独讲解描述符, 缺少和驱动程序实际应用的结合,哪位高人能够提供一些好的文档给小弟参考下吗? 小弟不胜感激!!!
  • 这一个表格的主要用途是用于USB设备的开发,例如使用CH552,相关的工程:客制pc小键盘,CH552单片机HID键盘 https://oshwhub.com/TheLight/zi-ding-yi-jian-pan 如果要学习USB协议以及相关的内容可以参考该表格。...

     

    前言

    这一个表格的主要用途是用于USB设备的开发,例如使用CH552,相关的工程:客制pc小键盘,CH552单片机HID键盘  https://oshwhub.com/TheLight/zi-ding-yi-jian-pan

     

    本码表包含在这一份文档中

      链接:https://pan.baidu.com/s/1lx0FyvlFa85PkcZv-2XCTA
    提取码:810q

     

     

    如果要学习USB协议以及相关的内容可以参考该表格。但不得不说一点就是CH552是一个限制比较大的单片机。

     

     

     

    按键键值

     

    展开全文
  • USBHID设备报告描述符详解 很仔细的中文介介绍,学习USBHID初学者 老手都必备
  • hid 报告描述符

    2019-09-13 20:38:13
    USB固件开发(HID设备) 1. HID设备的识别 HID设备类除了有文档第一部分所述的一些标准描述符(包括设备描述符、配置描述符、接口描述符、端...


    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 0

    .dw 0x00 //bAlternateSetting: alternate setting 0

    .dw 0x01 //bNumEndpoints: 1 endpoints(EP1)

    .dw 0x03 //bInterfaceClass: 人机接口设备(HID)类

    .dw 0xff //bInterfaceSubClass: 供应商定义

    .dw 0xff //bInterfaceProtocol 使用的协议:供应商定义

    .dw 0x00 //iInterface: index of string

    _HID_Interface_Descriptor_End:

    _HID_Descriptor:

    .dw 0x09 //bLength: 0x09 byte

    .dw 0x21 //bDescriptorType: HID描述符类型编号

    .dw 0x01, 0x10 //HID类协议版本号,为1.1

    .dw 0x21 //固件的国家地区代号,0x21为美国

    .dw 0x01 //下级描述符的数量

    .dw 0x22 //下级描述符为报告描述符

    .dw _ReportDescriptor_End-_ReportDescriptor, 0x00 //下级描述符的长度

    _HID_Descriptor_End:

    _Endpoint3:

    .dw 0x07 //bLength: 0x07 byte

    .dw 0x05 //bDescriptorType: ENDPOINT

    .dw 0x83 //bEndpointAddress: IN endpoint 3

    .dw 0x03 //bmAttributes: Interrupt

    .dw 0x02, 0x00 //wMaxPacketSize: 2 byte

    .dw 0x0A //bInterval: polling interval is 10 ms

    _Config_Descriptor_Total:

    HID描述符其实是为了提供下级描述符(如报告描述符)的信息。

    下图更清楚地表述了各描述符之间的层次关系。

    1.2 报告描述符

    要解释报告描述符,首先得清楚什么是“报告”。“报告”是主机和HID设备之间进行数据交换的最小单位。也就是说,在主机完成对设备的识别之后,在具体应用上的数据交换就得以“报告”的方式进行。“报告”的类型有三种:输入报告、输出报告和特征报告。输入报告就是设备发给主机的报告,而输出报告就是主机发给设备的报告,特征报告是主机发给设备的报告,特征报告常在自定义HID设备中被用作主机向设备发送自定义数据。


    报告描述符,顾名思义就是描述“报告”格式的,这个格式使主机和设备能遵循着同一个规则来解释一个报告中所含有的数据。与HID描述符不同,主机会发出单独的请求来读取报告描述符。关于报告描述符的组成,HID设备类定义文档中明确指出,一个报告描述符必须包含但不仅限于以下数据项:

    输入(输出或特征)

    用法(也可用“用法最小值与最大值”来定义一连串用法)

    用法页

    逻辑最小值

    逻辑最大值

    报告大小

    报告计数

    报告描述符看起来比较复杂,无论是HID设备类定义文档,还是其他参考书籍,都会花较大的篇幅来阐述它。要把它完全理解是需要一点时间的,而且就算是理解了也不一定能写出“像样”的报告描述符来。学习总有一个过程,入门才是最重要的,只要入了门,后面的事情就会慢慢变得简单,无需在一开始的时候就面面俱到。所以这里只对上面提到的必需的数据项进行解释及举例说明。

    输入项(输出或特征)指明了报告的类型,其中隐含了报告的传输方向以及报告数据所具有的数学特性。


    用法和用法页一起指明了数据项的用法,每个数据项都必须指明用法,否则主机端不能成功解析报告描述符。用法页是全局的,修饰列于其后的所有数据项,直到出现新的用法页为止;用法则是局部数据项,局部数据项只修饰列于其后的第一个主数据项内的数据项,一旦出现新的主数据项,那么用法必须重新指定。这其中隐含的意思是,每个主数据项前面都必须有修饰它的用法与用法页组合。(“用法”表示的是一个单独的用法,而“用法最小值”和“用法最大值”可以替代“用法”,代表某个范围的用法。)


    逻辑最小值和逻辑最大值指明了报告所使用的数据值的范围,这个数据值是以逻辑单位为基础的,与报告大小有着对应关系。


    报告大小指明数据项的位数。报告计数指明有多少个这样的数据项。


    例如,定义以下数据项:

    逻辑最小值(0

    逻辑最大值(0x7f

    报告大小(8

    那么它的意思就是,此报告中数据字段的大小是8位,本身可以表示0~255之间的任何数,但是逻辑值的范围被定义在0~127之间,所以实际上数据字段的数据不能超过127,否则视为无效报告。


    再举一个例子:

    逻辑最小值(0

    逻辑最大值(3

    报告大小(2

    这个例子的意思是,此报告中数据字段的大小是2位,逻辑值范围是0~3,那么数据字段的值与逻辑值是一一对应且相等的,即000b),101b),210b),311b)。


    第三个例子:

    再举一个例子:

    逻辑最小值(-1

    逻辑最大值(1

    报告大小(2

    这个例子的意思是,此报告中数据字段的大小是3位,逻辑值范围是-1~1,那么数据字段的值与逻辑值是按左对齐的方式部分对应的,即数据字段值000b)对应逻辑值-1,数据字段值101b)对应逻辑值0,数据字段值210b)对应逻辑值1,数据字段值311b)无效。

    这里举一个HID自定义设备的报告描述符的例子,这个例子比鼠标和键盘更简单。更具体的内容,譬如常用的鼠标和键盘,可以参看官方文档Device Class Definition for Human Interface Devices(HID).pdf HID Usage Tables.pdf

    _ReportDescriptor: //报告描述符

    .dw 0x06, 0x00, 0xff //用法页,供应商自定义,修饰其下所有的主项

    .dw 0x09, 0x01 //用法(供应商用法1),局部项,只修饰下面的“集合”主项。

    .dw 0xa1, 0x01 //集合开始,主项

    .dw 0x85, 0x1 //报告ID(1),全局项,可以修饰其下所有的主项,但是在这个报告描述中由于后面出现了新的报告ID,所以它只是修饰下面的“输入”主项。

    .dw 0x9, 0x1 //用法(供应商用法1)

    .dw 0x15, 0x0 //逻辑最小值(0),全局项,修饰下面所有的主项

    .dw 0x26, 0xff, 0x0 //逻辑最大值(255),全局项,修饰下面所有的主项

    .dw 0x75, 0x8 //报告大小(8),全局项,修饰下面所有的主项

    .dw 0x95, 0x7 //报告计数(7),全局项,修饰下面所有的主项

    .dw 0x81, 0x6 //输入(数据,变量,相对值),主项,说明此报告的属性

    //下面开始一个新的主项目,前面提到的全局项仍对这个主项目有效,譬如报告大小等

    .dw 0x09, 0x01 //用法(供应商用法1) ,局部项,修饰下面的“特征” 主项

    .dw 0x85, 0x03 //报告ID3),全局项,之前的报告ID项失效

    .dw 0xb1, 0x6 //特征(数据,变量,相对值)

    //下面开始一个新的主项目,前面提到的全局项仍对这个主项目有效,譬如报告大小等

    .dw 0x09, 0x01 //用法(供应商用法1) ,局部项,修饰下面的“特征” 主项

    .dw 0x85, 0x02 //报告ID2),全局项,之前的报告ID项失效

    .dw 0xb1, 0x06 //特征(数据,变量,相对值)

    //下面开始一个新的主项目,前面提到的全局项仍对这个主项目有效,譬如报告大小等

    .dw 0x09, 0x01 //用法(供应商用法1) ,局部项,修饰下面的“输出” 主项

    .dw 0x85, 0x04 //报告ID4),全局项,之前的报告ID项失效

    .dw 0x91, 0x6 //输出(数据,变量,相对值)

    .dw 0xc0 //结合结束

    _ReportDescriptor_End:

    以上描述符定义了4个不同的报告,用报告ID区分。HID设备定义文档上有讲,在一个报告ID之后而在下一个报告ID之前范围内的所有数据项都属于一个报告,发送报告时会把报告ID附在这个报告的前面义区分报告。


    转载于:https://my.oschina.net/u/1012415/blog/114093

    展开全文
  • HID描述符

    千次阅读 2016-11-08 09:03:42
    1、hid设备描述符 USB设备中有一大类就是HID设备,即Human Interface Devices,人机接口设备。这类设备包括鼠标、键盘等,主要用于人与计算机进行交互。 它是USB协议最早支持的一种设备类。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,它是可选的,对大部分设备不需要使用此描述符。






    展开全文
  • USB HID报告描述符

    2020-12-03 20:10:50
    HID设备用报告的形式发送数据到主机,描述符告诉主机如何解释数据。下面将展示如何写一个描述符。 首先,到USB.org - HID Tools页面找到“Device Class Definition for HID”文档,下面叙述的内容本质上是该文档中的...
  • 只要分析报告描述符写法,比较详细.HID设备的报告描述符写法分析
  • Keyboard的HID及HID描述符 实现每个功能前,都要有其USB HID报告描述符,即常说的hid枚举。...HID设备用报告的形式发送数据到主机,描述符告诉主机如何解释数据。 1、 添加USB HID报告描述符; 一篇很有借鉴的文章:htt
  • USB HID 报告描述符

    2017-07-12 11:33:54
    在USB中,USB HOST是通过各种描述符来识别设备的,有设备描述符, 配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等。 USB报告描述符(Report Descriptor)是HID设备中的一个描述符,它是比较 ...
  • USB/HID设备报告描述符详解 来源: 发布时间: 2013-07-18 18:23 4747 次浏览 大小: 16px 14px 12px USB描述符即USB设备的信息,系统...在图的描述符中,设备描述符(device descriptor)、配置描述符(conf
  • usb hid设备报告描述符配置工具

    热门讨论 2012-11-08 11:02:23
    运行dt.ext 可以打开标准的hid设备报告作为参考,可修改设定自己的报告结构,dt还可以进行简单的语法检查。来源自usb官方网站。
  • 在USB规范中,设备的功能是通过接口来承载的,在...对于HID设备,其接口描述符下有一个HID描述符,HID描述符中含有其报告描述符的相关信息,如报告描述符的类型和长度。 但是这里有一个问题,假如我有一个USB设备,其是
  • USB-HID 报告描述符(八)

    2020-01-17 11:29:56
    2、设备描述符 3、设置地址 4、配置描述符 5、接口描述符 6、HID 描述符 7、端点描述符 8、字符串描述符 9、HID 报告描述符 10、HID 报告的返回 USB鼠标获取完字符串描述符之后,又请求了几次设备描述符和...
  • USB(五)-USB-HID描述符

    2021-03-22 10:05:16
    通过查看USB HID类的官方文档,HID类的设备在配置描述符中还需要一个HID描述符。它是一个类描述符,应该跟在接口描述符后面。HID描述符包括HID描述符、报表(Report)和实体(Physical)描述符HID描述符的...
  • HID设备的报告描述符

    2013-05-22 14:11:37
     HID设备的报告描述符比较复杂也比较难理解。   报告描述符的语法不同于USB标准描述符,它是以项目(items)方式排列而成,无一定的长度。HID的报告描述符已经不是简简单单的描述某个值对应某个固定意义了,它...
  • USB-HID报告描述符简介

    2009-06-08 19:20:47
    在USB中,USB HOST是通过各种描述符来识别设备的,有设备描述符, 配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等。 USB报告描述符(Report Descriptor)是HID设备中的一个描述符,它是比较 复杂...
  • USB/HID设备报告描述符

    千次阅读 2013-05-23 09:19:55
    USB/HID设备报告描述符详解 概述: 报告在这里意思是数据传输(datatransfer),而报告描述符是对这些传输的数据作用途(usage)上的说明。 USB通讯协议的规范是以1ms产生一个USB帧(frame),USB设备可以每一个...
  • 在USB中,USB Host是通过各种描述符来识别识别设备的,一般在设备枚举的过程将会获取有设备描述符/配置描述符/接口描述符/端点描述符/字符串描述符等 现在我们来介绍一下HID ReportDesc. 我们看一下在其内容为 ...
  • HID 免驱 描述符

    2014-12-09 11:07:34
    你还在为你的USB设备需要在各种系统上装驱动而烦恼么?
  • USB HID设备报告描述符详解

    千次阅读 2017-09-24 21:29:37
    报告在这里意思是数据传输(data transfer),而报告描述符是对这些传输的数据作用途(usage)上的说明。 USB通讯协议的规范是以1ms产生一个USB帧(frame),USB设备可以每一个帧中发送和接收一个交换(transaction...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 438
精华内容 175
关键字:

hid设备描述符