USB HID学习手册.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
USB HID学习手册

USB HID 学习笔记 PC程序部分: USB开发者论坛发布了一系列USB设备的类型定义,并配以相应的使用说明。下面表格显示出 USB的设备类型(DEVEICE CLASS): HID类型概述 第一个被windows支持的usb外围设备类是人机接口设备。hid是human interface device人机接口设备的英文缩写。是指直接和人进行互动的设备。如鼠标、键盘等。运行在WINDOWS98或其他更高的版本的操作系统的PC机,系统除了提供通用的USB设备的底层驱动以外,还单独提供了一些HID设备的完整驱动,应用程序可以很容易的与操作系统内部的hid通讯。这样使得符合hid类的USB设备很容易开发与运行。也就是说,我们如果想实现一个USB的HID类设备,是不需要在Windows下开发自己的驱动程序。HID不一定要是标准的外设类型,唯一的要求是交换的数据存储在报文的结构内,设备固件必须支持报文的格式。任何工作在该限制之内的设备都可以成为一个hid,例如温度计,电压计,读卡机等。 hid类设备只能使用控制传输与中断传输两种方式。HID的交换的数据格式称为报文。报文形式灵活,能处理任何类型的数据。HID特有的请求,Set_Report和Get_Report为主机和设备之间的任何类型数据块传输提供了一种方法。主机发出Get_Report请求,设备响应向主机传送数据块;主机发出Set_Report请求,设备响应准备接收主机发出的数据块。对于一个全速设备,中断传输方式下每笔事务能够传送的最大数据量是64字节,全速设备每毫秒不能有超过一笔事务,所以每秒最多传送64000字节。高速设备,每笔事务能够传送的最大数据量是1024字节。对于不能一次传输完毕的数据,接收和发送报文可以采用多笔事务。 下表列举出了与HID类设备通信过程中使用到的大量函数,这些函数的用法在DDK的帮助文档中均有详细地解释。这些函数包含在Hid.dll、Setupapi.dll、Kernel32.dll三个动态链接库中,分别起到与HID设备通讯,寻找与识别设备,交换数据的作用。 /* 在win2000DDK:C:\NTDDK\inc\ hidsdi.h头文件中。 */ MCU FW部分: 这里着重介绍一下报告描述符。其他的描述符参考USB标准规范就可以理解。 报告描述符是USB中最复杂的描述符,报告描述符是一个用来说明或叙述设备功能的结构,在报告描述符中包含许多的项目(item)。 所谓项目(item),即是报告描述符中所包含的一连串信息。因此项目是一连串关于此设备的信息。所有的项目具有一字节的前导值,其中包含了项目类型,项目卷标,项目大小与项目数据。 此外,项目又分为短项目格式与长项目格式,分别如下图: 项目中包含了可选择数据的大小,短项目可以选择的数据大小(bSize)可以是0、1、2或4字节。而长项目格式的数据大小则需永远设置为2。由于长项目格式较少使用。以下只介绍短项目格式。短项目格式中还包含了一个4位的卷标(bTag)、一个2位的类型(bType)以及用来表示数据大小的2位(bSize)。 利用项目的基础延伸,则在一个报告描述符就含有下列的项目类型: 输入、输出、特性、集合(这四个为主要的项目) 用途(usage) 用途页(usage page) 逻辑的最大值(logical maximum) 逻辑的最小值(logical minimum) 报告的长度(report size) 报告的数值(report count) 下面来看一下前导值的取值: 对于bTag的取值,请参考下列表: 主要项目卷标(main) bTag(卷标位) 名称 数据大小 数据 1000 Input 1~4 bit0: 0:数据 1:常数 bit1: 0:数组 1:变量 bit2: 0:绝对值 1:相对值 bit3: 0:无覆盖 1:覆盖 bit4: 0:线性 1:非线性 bit5: 0:优先选择的 1:无优先选择 bit6: 0:无空状态 1:空的状态 bit7:保留 bit8: 0:位字段 1:缓冲的字节 bit31--9:保留 1001 Output 1~4 同上,(bit7不一样,0:不易更动的,1:易更动的) 1011 Feature 1~4 同Output 1010 Collection 1 0x00 实体(physical) 工具组 0x01 集合(application) 鼠标、键盘 0x02 逻辑(logical) 相关联的数据 0x03 报告(report) 0x04 命名的数组(Named Array) 0x05 用途切换(

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档