usb-hid协议中文版——usb接口hid设备

上传人:小** 文档编号:57316989 上传时间:2018-10-20 格式:DOC 页数:48 大小:1.53MB
返回 下载 相关 举报
usb-hid协议中文版——usb接口hid设备_第1页
第1页 / 共48页
usb-hid协议中文版——usb接口hid设备_第2页
第2页 / 共48页
usb-hid协议中文版——usb接口hid设备_第3页
第3页 / 共48页
usb-hid协议中文版——usb接口hid设备_第4页
第4页 / 共48页
usb-hid协议中文版——usb接口hid设备_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《usb-hid协议中文版——usb接口hid设备》由会员分享,可在线阅读,更多相关《usb-hid协议中文版——usb接口hid设备(48页珍藏版)》请在金锄头文库上搜索。

1、第 8 章 USB 接口 HID 设备 HID(Human Interface Device,人机接口设备)是 USB 设备中常用的设备类型,是 直接与人交互的 USB 设备,例如键盘、鼠标与游戏杆等。在 USB 设备中,HID 设备的 成本较低。另外,HID 设备并不一定要有人机交互功能,只要符合 HID 类别规范的设备 都是 HID 设备。 Wndows 操作系统最先支持的 HID 设备。在 windows 98 以及后来的版本中内置有 HID 设备的驱动程序,应用程序可以直接使用这些驱动程序来与设备通信。 在设计一个 USB 接口的计算机外部设备时,如果 HID 类型的设备可以满足需要,

2、可 以将其设计为 HID 类型设备,这样可以省去比较复杂的 USB 驱动程序的编写,直接利用 Windows 操作系统对标准的 HID 类型 USB 设备的支持。 8.1 HID 设备简介 8.1.1HID 设备的特点 交换的数据储存在称为报表(Report)的结构内,设备的固件必须支持 HlD 报表 的格式。主机通过控制和中断传输中的传送和请求报表来传送和接收数据。报表 的格式非常灵活。 每一笔事务可以携带小量或中量的数据。低速设备每一笔事务最大是 8B,全速设 备每一笔事务最大是 64B,高速设备每一笔事务最大是 1024B。一个报表可以使 用多笔事务。 设备可以在未预期的时间传送信息给主

3、机,例如键盘的按键或是鼠标的移动。所 以主机会定时轮询设备,以取得最新的数据。 HID 设备的最大传输速度有限制。主机可以保证低速的中断端点每 10ms 内最多 1 笔事务,每一秒最多是 800B。保证全速端点每 lms 一笔事务,每一秒最多是 64000B。保证高速端点每 125 us 三笔事务,每一秒最多是 24.576MB。 HID 设备没有保证的传输速率。如果设备是设置在 10ms 的时距,事务之间的时 间可能等于或小于 10ms。除非设备是设置在全速时在每个帧传输数据,或是在高 速时在每个微帧传输数据。这是最快的轮询速率,所以端点可以保证有正确的带 宽可供使用。 HID 设备除了传送

4、数据给主机外,它也会从主机接收数据。只要能够符合 HlD 类别 规范的设备都可以是 HID 设备。 设备除了 HlD 接口之外,它可能同时还包含有其他的 USB 接口。例如影像显示设备 可能使用 HID 接口来做亮度、对比度的软件控制,而使用传统的影像接口来传送要显示 的数据。USB 扩音器可以使用实时传输来播放语音,同时使用 HID 接口来控制音量、低 音等。 HID 类别设备的规范文件主要是以下两份: Device Class Definition for Human interface Devices HID Usage Tables 其中前者是 HID 的基本规范文件,后者可以是前者的

5、附件,为开发人员提供实际的 控制类型的描述。文件是用来定义让主机了解以及使用 HID 数据的数值。这两份文件是 由 USB Device Working Group 制定的,可以在网址 http:/www.usb.org/developers/hidpage/ #Class _Definition 下载。 182 计算机高级接口实践 8.1.2HID 设备的硬件要求 HID 接口必须符合 Device Class Definition for Human interface Devices 规范内所定 义的 HID 类别的需求。在此文件内描述了所需的描述符、传输的频率以及传输的类型等。 为了符

6、合规范,HID 接口的端点与描述符都必须符合数个要求。 所有的 HID 传输都是使用默认控制管道或是一个中断管道,HID 设备必须有一个中 断输入端点来传送数据到主机,中断输出端点则不是必需的。 表表 8-1 HID 设备的传输类型设备的传输类型 传输 类型 数据来源数据类型 是否需 要管道 设备(输入)没有严格时间限制的数据是 控制 主机(输出) 没有严格时间限制的数据 或是没有中断输出管道时的任何数据 设备(输入)定时或低延迟的数据是 中断 主机(输出)定时或低延迟的数据是 主机与设备之间所交换的数据,可以分成两种类型: 低延迟的数据,必须尽快地到达目的; 配置或其他的数据,没有严格时间限

7、制的需求。 中断管道是控制管道之外的另一种数据交换的方式,特别适合使用在接收端需要定时 或是尽可能及时收到数据的时候。中断输入管道携带数据到主机,中断输出管道则是携 带数据到设备。在总线忙的时候,控制管道可能会被延迟,而中断管道保证会有可得到 的带宽。HID 不需要一定有中断输出管道。如果没有中断输出管道,主机会在控制管道上 使用 HID 设备特有的 Set_Report 请求来传送所有的报表。 8.1.3HID 固件的要求 主机的驱动程序要与 HID 设备通信,设备的固件必须符合下列需求: 设备的描述符必须识别该设备包含有 HID 接口。 除了默认控制管道外,固件必须另外支持一个中断输入管道

8、。 固件必须包含一个报表描述符来定义要传送与接收的设备数据。 如果要传送数据,固件必须支持 Get_Report 控制传输与中断输入传输。如果要接收 数据,固件必须支持 Set_Report 控制传输与选择性的中断输出传输。 所有的 HID 数据都必须使用定义过的报表格式来定义报表中数据的大小与内容。设 备可以支持一个或多个报表。在固件中的一个报表描述符用来描述此报表,以及如何使 用报表数据的信息。 HID 类别 驱动程序 HID 类别 设备 主机 外设 默认控制管道 中断管道 图 8-1 HID 传输的传输类型 第 8 章 USB 接口 HID 设备 183 在每一个报表中的一个数值,定义此

9、报表是一个输入(Input) 、输出(Output)或是 特征(Feature)报表。主机在输入报表中接收数据,在输出报表中传送数据,特征报表 可以在任何方向传递。 Windows 98 以及后来版本的 HID 驱动程序使用中断传输来传递输入报表。输出报表 的传输类型要根据设备支持的端点与 Windows 的版本而定。Windows 98 Gold 只符合 HID 1.0 规范,它的 HID 驱动程序使用控制传输来传递输出报表。Windows 98 SE、Wndows 2000 符合 HID 1.1 规范,HID 驱动程序在有中断输出端点时使用中断传输, 否则使用控制传输来传递输出报表。特征报

10、表都是使用控制传输。 8.2 HID 设备描述符 HID 设备连接到 USB 主机后,主机通过发送 Get_Descriptor 请求读取 HID 设备的描 述符,了解描述符对了解 USB 设备是至关重要的。 8.2.1HID 设备的描述符 HID 设备除了支持 USB 设备的 5 种标准描述符之外,还支持 HID 设备特有的 3 种描 述符。这些描述符是: USB 标准描述符:设备、配置、接口、端点和字符串描述符。 HID 特有的描述符:HID、报表(Report)和实体(Physical)描述符。 从描述符的关联关系看,HID 描述符是关联于接口。所以如果一个 HID 设备有 2 个 端点

11、,设备不需要每个端点有一个 HID 描述符。 从前面的 USB 描述符可以看出一个规律,描述符的第一、二字节分别是描述符的长 度和类型,描述符的类型字段(bDescriptorType)表明描述符的种类,下表列出了不同 描述符的类型字段数值。 图 8-2 HID 描述符的关联关系 接口描述符 Interface 端点描述符 Endpoint HID 描述符 Hid 报表描述符 Report 实体描述符 Physical HID、报表和实体描 述符是 HID 设备特 有的描述符 184 计算机高级接口实践 表表 8-2 HID 的描述符的描述符 类型描述符应用 数 值 设备 Device所有设备

12、必须有,只能一个01 配置 Configuration所有设备必须有,至少一个02 字符串 String可选择03 接口 Interface每一个接口一个04 端点 Endpoint除端点 0 之外的每个端点一个05 设备限定 Device_Qualiffier06 Other_Speed_Configuration 同时支持全速与高速的设备必须有 一个07 标准 Interface_power08 HIDHID 设备必须有21 类别 Hub29 报表 ReportHID 设备必须有22HID 特定 实体 Physical可选择的23 对于一个 HID 设备,设备描述符与配置描述符没有 HID

13、 特定的信息。其设备描述符 的 bDeviceClass 和 bDeviceSubClass 字段的值为 0,接口描述符的 bInterfaceClass 字 段值为 03,表示设备的该接口是 HID 类别。在接口描述符中其他包含 HID 特定信息的字 段还有子类别码(blnterfaceSubClass)与协议码(blnterfaceProtocol 字段) 。 在接口描述符中子类别码字段等于 1 表示此设备支持启动接口(Boot Interface) 。如 果设备有启动接口,即便主机的 HID 没有加载驱动程序,设备也可以使用。这种情形可 能发生在计算机是由 DOS 直接启动,在启动时观看

14、系统设置画面或使用 Wndows 的安 全模式时。 含有启动接口的键盘或鼠标可以使用 BIOS 或许多主机支持的默认简单协议。HID 规 范定义了键盘与鼠标的启动接口协议。 如果设备没有启动接口,并且接口描述符中协议码字段是 1,表示设备支持键盘接口, 协议码字段是 2,表示支持鼠标接口。接口描述符中协议码字段是 0,表示设备不支持启 动协议。 在 HID Usage Tables 规范中定义了键盘与鼠标的启动描述符(Boot Descriptor) 。 BIOS 不需要从设备中读取描述符,因为它知道启动协议,并且假设设备支持启动协议。 所以要启动的设备不需要在固件内包含启动接口描述符,它只要

15、在主机尚未要求在报表 描述符中的定义协议时支持启动协议即可。在操作系统加载 HlD 驱动程序后会使用 Set_Protocol 请求,将设备由启动协议转换成报表协议。 8.2.2HID 描述符 HID 描述符的主要作用是用来识别 HID 通信所使用的额外描述符。下表是 HID 描述 符结构。 表表 8-3 HID 描述符结构描述符结构 偏移 量 字段 字节 数 数值 类型 说明 0bLength1Numeric描述符字节数 1bDescriptorType1Constant0x21 = HID 描述符 2bcdHID2NumericHID 规范版本号(BCD) 4bCountryCode1Nu

16、meric硬件设备所在国家的国家代码 5bNumDescriptors1Numeric类别描述符数目(至少有一个报表描述符) 6bDescriptorType1Constant类别描述符的类型 第 8 章 USB 接口 HID 设备 185 7wDescriptorLength2Numeric报表描述符的总长度 9bDescriptorType.1Constant附加的描述符的类型,可选的 10wDescriptorLength.2Numeric附加的描述符的总长度,可选的 bcdHID:设备与其描述符所遵循的 HID 规范的版本号码,此数值是 4 个 16 进位的 BCD 格式字符。例如版本 1.1 的 bcdHID 是 0110h。 bCountryCode:硬件目的国家的识别码。如果不说明,该字段为 0。 bDescriptorType:HID 描述符附属的描述符的类型(报表或实体) 。每一个 HID 都 必须

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号