文档介绍:第 8章 USB 接口 HID 设备
HID ( Human Interface Device ,人机接口设备)是 USB 设备中常用的设备类型,是 直接与人交互的 USB 设备,例如键盘、鼠标与游戏杆等。在 USB 设备中, HID 设备的成 本较低。另外, HID 设备并不一定要有人机交互功能,只要符合 HID 类别规范的设备都是 HID 设备。
Wndows 操作系统最先支持的 HID 设备。在 windows 98 以及后来的版本中内置有 HID 设备的驱动程序,应用程序可以直接使用这些驱动程序来与设备通信。
在设计一个 USB 接口的计算机外部设备时,如果 HID 类型的设备可以满足需要,可以 将其设计为 HID 类型设备,这样可以省去比较复杂的 USB 驱动程序的编写,直接利用 Windows 操作系统对标准的 HID 类型 USB 设备的支持。
HID 设备简介
HID 设备的特点
交换的数据储存在称为报表 ( Report )的结构内, 设备的固件必须支持 HlD 报表的 格式。 主机通过控制和中断传输中的传送和请求报表来传送和接收数据。 报表的格 式非常灵活。
每一笔事务可以携带小量或中量的数据。低速设备每一笔事务最大是 8B ,全速设 备每一笔事务最大是 64B ,高速设备每一笔事务最大是 1024B 。一个报表可以使用 多笔事务。
设备可以在未预期的时间传送信息给主机, 例如键盘的按键或是鼠标的移动。 所以 主机会定时轮询设备,以取得最新的数据。
HID 设备的最大传输速度有限制。主机可以保证低速的中断端点每 10ms 内最多 1 笔事务,每一秒最多是 800B 。保证全速端点每 lms 一笔事务,每一秒最多是 64000B 。保证高速端点每 125 us 三笔事务,每一秒最多是 。
HID 设备没有保证的传输速率。如果设备是设置在 10ms 的时距,事务之间的时间 可能等于或小于 10ms 。除非设备是设置在全速时在每个帧传输数据,或是在高速 时在每个微帧传输数据。 这是最快的轮询速率, 所以端点可以保证有正确的带宽可 供使用。
HID 设备除了传送数据给主机外,它也会从主机接收数据。只要能够符合 HlD 类别规 范的设备都可以是 HID 设备。
设备除了 HlD 接口之外,它可能同时还包含有其他的 USB 接口。例如影像显示设备 可能使用 HID 接口来做亮度、对比度的软件控制,而使用传统的影像接口来传送要显示的 数据。 USB 扩音器可以使用实时传输来播放语音, 同时使用 HID 接口来控制音量、 低音等。
HID 类别设备的规范文件主要是以下两份:
Device Class Definition for Human interface Devices
HID Usage Tables
其中前者是 HID 的基本规范文件,后者可以是前者的附件,为开发人员提供实际的控 制类型的描述。文件是用来定义让主机了解以及使用 HID 数据的数值。这两份文件是由 USB Device Working Group 制定的,可以在网址 / #Class _Definition 下载。
HID设备的硬件要求
HID 接口必须符合 Device Class Defi nition for Human in terface Devices 规范内所定
义的HID类别的需求。在此文件内描述了所需的描述符、传输的频率以及传输的类型等。
为了符合规范,HID接口的端点与描述符都必须符合数个要求。
所有的HID传输都是使用默认控制管道或是一个中断管道, HID设备必须有一个中断
输入端点来传送数据到主机,中断输出端点则不是必需的。
图8-1 HID传输的传输类型
表8-1 HID设备的传输类型
类型
数据来源
数据类型
是否需 要管道
控制
设备(输入)
没有严格时间限制的数据
是
主机(输岀)
没有严格时间限制的数据 或是没有中断输岀管道时的任何数据
中断
设备(输入)
定时或低延迟的数据
是
主机(输岀)
定时或低延迟的数据
是
主机与设备之间所交换的数据,可以分成两种类型:
低延迟的数据,必须尽快地到达目的; 配置或其他的数据,没有严格时间限制的需求。
中断管道是控制管道之外的另一种数据交换的方式,特别适合使用在接收端需要定时 或是尽可能及时收到数据的时候。中断输入管道携带数据到主机,中断输出管道则是携带 数据到设备。在总线忙的时候,控制管道可能会被延迟,而中断管道保证会有可得到的带 宽。HID不需要一定有中断输出管道。如果没有