tag 标签: hid

相关帖子
相关博文
  • 热度 19
    2015-3-22 22:00
    1590 次阅读|
    0 个评论
    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,那么数据字段的值与逻辑值是一一对应且相等的,即0(00b),1(01b),2(10b),3(11b)。   第三个例子: 再举一个例子: 逻辑最小值(-1) 逻辑最大值(1) 报告大小(2) 这个例子的意思是,此报告中数据字段的大小是3位,逻辑值范围是-1~1,那么数据字段的值与逻辑值是按左对齐的方式部分对应的,即数据字段值0(00b)对应逻辑值-1,数据字段值1(01b)对应逻辑值0,数据字段值2(10b)对应逻辑值1,数据字段值3(11b)无效。   这里举一个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          //报告ID(3),全局项,之前的报告ID项失效     .dw 0xb1, 0x6                     //特征(数据,变量,相对值)          //下面开始一个新的主项目,前面提到的全局项仍对这个主项目有效,譬如报告大小等        .dw 0x09,  0x01     //用法(供应商用法1) ,局部项,修饰下面的“特征”  主项     .dw 0x85,  0x02          //报告ID(2),全局项,之前的报告ID项失效     .dw 0xb1,  0x06          //特征(数据,变量,相对值)            //下面开始一个新的主项目,前面提到的全局项仍对这个主项目有效,譬如报告大小等     .dw 0x09,  0x01     //用法(供应商用法1) ,局部项,修饰下面的“输出”  主项     .dw 0x85,  0x04          //报告ID(4),全局项,之前的报告ID项失效     .dw 0x91, 0x6                     //输出(数据,变量,相对值)     .dw  0xc0            //结合结束 _ReportDescriptor_End:   以上描述符定义了4个不同的报告,用报告ID区分。HID设备定义文档上有讲,在一个报告ID之后而在下一个报告ID之前范围内的所有数据项都属于一个报告,发送报告时会把报告ID附在这个报告的前面义区分报告。   4. Windows HID编程接口 一般使用WriteFile或HidD_SetFeature来向设备发送数据(报告),使用ReadFile来读取设备发过来的数据(报告)。详情可以参考本blog的另一文章《Windows主机端与自定义USB HID设备通信详解》。
  • 热度 13
    2014-3-4 23:18
    954 次阅读|
    0 个评论
              通过几天学习USB HID的相关协议,以及到处搜集一些相关的资料,现整理一份自己认为很适合的学习步骤。此步骤稍微更适用于有USB基础的小伙伴们,当然,没有基础的也可以参考学习一下。         这里基本上借用了网络上的一些资源,我在这里就直接使用了,谢谢网络上的各位大虾的亲情奉献。         学习HID,主要就是理解其各种描述符的意思。线将总结的学习顺序如下:         1.USB_HID设备类协议学习入门.pdf         2.HID报告描述符脚本语言研读笔记.pdf          3.USBHID设备报告描述符详解.pdf          4.键盘报告描述符解读.pdf          5.HID1_11.pdf         上述文档请参网址 http://download.csdn.net/download/yangsong4353/6993541 。
  • 热度 21
    2013-8-18 14:02
    4142 次阅读|
    0 个评论
      多协议多功能数据传输 A2DP AVRCP HFP SPP PBAPC HID BLE多协议多功能数据传输蓝牙方案    基于4.0双模蓝牙模块,包含了A2DP(音乐播放),AVRCP(流媒体控制及音乐封面传输),HFP(免提通话),SPP(数据传输),PBAPC(电话本同步),HID(鼠标),BLE DataTrans(低功耗模式下的小数据传输)等协议。模块上的VREG高电平开机、低电平关机,开机后自动连接最近连接的手机。蓝牙模块与MCU执行UART 通信,使用AT指令实现连接、断开、拨打电话、音乐播放及远程控制、下载电话本、数据传输等功能。方案因采用4.0双模式,无需MFI认证可以兼容安卓、苹果和微软等平台的数据通信 串口配置:波特率:115200 数据位:8 停止位:1 无校验无流控。 交流QQ2582139138  
  • 热度 18
    2011-6-16 10:26
    1788 次阅读|
    0 个评论
    BALLAST方案和元器件配套提供: IR IR2520D IR2153  IRF830  IRF740 IRF840 IRFP460 ST L6561 L6562 L6574 L6599 ON MUR260 MUR460 MUR860
相关资源
  • 所需E币: 1
    时间: 2022-8-5 23:09
    大小: 1.71KB
    上传者: Argent
    HID灯注汞器参考设计程序
  • 所需E币: 1
    时间: 2022-7-18 23:32
    大小: 32.54KB
    上传者: Argent
    台达EH2-40PLC两台控制5台台达ASDA-B伺服,天任文本作对话的HID吹泡机程序
  • 所需E币: 1
    时间: 2022-4-1 17:55
    大小: 11.29KB
    上传者: Argent
    PLC技术在工业控制领域应用广泛,分享一些有关实用的三菱PLC参考程序,希望能够帮助到有需要的网友。
  • 所需E币: 5
    时间: 2021-9-1 22:07
    大小: 1.37MB
    上传者: czd886
    基于MCU控制的机车HID前照灯开发.
  • 所需E币: 5
    时间: 2021-9-1 22:07
    大小: 2.83MB
    上传者: czd886
    基于MCU控制的汽车HID灯镇流器的设计与分析
  • 所需E币: 1
    时间: 2021-4-26 14:45
    大小: 272.04KB
    上传者: box520
    基于DSP控制的车用无汞HID灯电子镇流器
  • 所需E币: 0
    时间: 2021-4-21 01:53
    大小: 763.52KB
    上传者: LiuSirSZ
    通过STM32CubeMX生成HID双向通讯工程.rar
  • 所需E币: 0
    时间: 2021-4-18 00:25
    大小: 29.63KB
    上传者: LGWU1995
    台达PLC例程-HID吹泡机.rar
  • 所需E币: 4
    时间: 2021-4-13 16:06
    大小: 871.26KB
    上传者: czdian2005
    通过STM32CubeMX生成HID双向通讯工程.pdf
  • 所需E币: 1
    时间: 2021-4-10 22:15
    大小: 12.07MB
    上传者: ZHUANG
    基于DSP的HID灯恒功率控制研究
  • 所需E币: 0
    时间: 2021-3-25 02:33
    大小: 530.69KB
    上传者: stanleylo2001
    一种数字控制的低频方波HID灯用电子镇流器
  • 所需E币: 2
    时间: 2021-3-17 18:16
    大小: 530.69KB
    上传者: xiaosh728
    一种数字控制的低频方波HID灯用电子镇流器
  • 所需E币: 0
    时间: 2020-12-11 23:33
    大小: 540.83KB
    上传者: czdian2005
    一种数字控制的低频方波HID灯用电子镇流器
  • 所需E币: 4
    时间: 2020-6-24 15:39
    大小: 30.54MB
    上传者: Argent
    最近搜集了一些关于STM32的有趣新颖项目,有软硬件资料哦,代码工程都有,有需要的欢迎下载。嵌入式开发要求面广。掌握各类MCU的开发技巧,有助于进一步高效快速地开发智能产品。
  • 所需E币: 0
    时间: 2020-5-20 16:28
    大小: 871.26KB
    上传者: samewell
    通过STM32CubeMX生成HID双向通讯工程.pdf
  • USB
    所需E币: 3
    时间: 2019-12-25 12:39
    大小: 10.69KB
    上传者: wsu_w_hotmail.com
    USB……
  • 所需E币: 3
    时间: 2020-1-3 18:46
    大小: 104.43KB
    上传者: 2iot
    赛普拉斯的WirelessUSB(TM)技术使人机接口设备(HID)(如键盘、鼠标以及控制数码产品的遥控装置等)实现了无线连接。我们的可编程片上系统(TM)(PSoC(TM))器件实现了电源管理以及按钮、LED与简单的马达控制。赛普拉斯的扩频时钟发生器(SSCG)不仅有助于降低EMI干扰,而且还能进一步加速产品的上市进程。……
  • 所需E币: 4
    时间: 2019-12-24 23:16
    大小: 1.4MB
    上传者: 16245458_qq.com
    本应用笔记介绍如何使用基于Cortex-M3的LPC1300微控制器片上USB驱动程序在来实现一个简单的USB人机接口设备(HID)。AN10904USBHIDwiththeLPC1300on-chipdriverRev.01―15January2010ApplicationnoteDocumentinformationInfoContentKeywordsLPC1300,USB,HID,On-ChipDriver,ROM,Cortex-M3,LPC-LINK,LPCXpresso,IARLPC1343-SK,KeilMCB1000AbstractThisapplicationnoteexplainshowtousetheon-chipUSBdriversintheLPC1300Cortex-M3basedmicrocontrollertoimplementasimpleUSBHumanInterfaceDevice(HID).NXPSemiconductorsAN10904USBHIDwiththeLPC130……
  • 所需E币: 5
    时间: 2019-12-24 23:12
    大小: 1.02MB
    上传者: 2iot
    这份文件将让用户在一小时内就能够开始使用LPC214X的USB2.0外围设备。它也涵盖了基础知识USB2.0协议,并解释了HID软件的API接口库。AN10736LPC214xUSBsimplified-APIapproachtoHIDclassRev.01―12August2008ApplicationnoteDocumentinformationInfoContentKeywordsUSBdevice,LPC214x,HIDsoftwarelibrary,USB2.0AbstractThisdocumentwillenabletheusertostartusingtheLPC214xUSB2.0Deviceperipheralinamatterofhours.ItalsocoversthebasicsoftheUSB2.0protocolandexplainstheAPIinterfacefortheHIDsoftwarelibrary.NXPSemiconductorsAN10736LPC214xUSBsimplifiedRe……
  • 所需E币: 4
    时间: 2020-1-3 18:29
    大小: 76.57KB
    上传者: givh79_163.com
    世强电讯采用全数字控制方式的汽车HID氙气灯采用全数字控制方式的骑车HID氙气灯解决方案――转载自《电子系统设计》过去汽车车灯多采用普通卤素灯泡,这种车灯的瓦数和亮度不够、色温过低、灯色偏黄,而且寿命较短,故障率偏高。日前,HID(HighIntensityDischargeLamp)氙气灯正在汽车车灯领域兴起,与传统卤素灯相比,HID氙气灯具有节能、亮度高、寿命长、安全可靠、色温与太阳光类似等优点。HID氙气灯由安定器和灯泡构成,安定器是氙气灯产品的核心部件,氙气灯的性能与安定器密切相关。随着HID安定器技术不断成熟,新的数字化控制方式也在冲击着这个行业。世强电讯根据国内HID市场的特点需要推出了基于SiliconLabsMCU的单芯片氙气灯全数字智能安定器解决方案。该方案采用全数字控制,符合目前数字化的发展潮流。单芯片的控制技术可使出厂调试的工作量大大减少。此外,采用了多项专利技术来提高HID安定器的性能,包括丰富的故障检测、高性能的环路响应、展频特性等。“而这些特性在模拟方案或采用MCU+3843的方案中都是无法实现的。”深圳世强电讯有限公司应用工程师经理戈洪凯表示。这款HID安定器解决方案的特点包括:全数字控制使保护功能更加完善;MCU控制每一个过程的细节,能更好满足灯的特性需求;变频控制使EMI降到最低,同时减少EMI元件数量;结合硬件进行算法优化,采用多项专利技术完善对HID的过程控制和限流保护处理;全数字设计使整个方案基本非常好的可扩展性,可以快速满足特殊需求的定制开发;采用平面变压器等技术,有效降低安定器厚度和体积;支持正驱动和负启动形式,适应各种不同电路方案的安定器;高压包可采用分体和内置输出,低压线引出,高压线短,安装方便……