文档详情

USB-HID协议中文版

m****
实名认证
店铺
DOC
475KB
约49页
文档ID:503741055
USB-HID协议中文版_第1页
1/49

第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设备的支持8.1 HID设备简介8.1.1 HID设备的特点Ÿ 交换的数据储存在称为报表〔Report〕的结构内,设备的固件必须支持HlD报表的格式主机通过控制和中断传输中的传送和请求报表来传送和接收数据报表的格式非常灵活Ÿ 每一笔事务可以携带小量或中量的数据低速设备每一笔事务最大是8B,全速设备每一笔事务最大是64B,高速设备每一笔事务最大是1024B。

一个报表可以使用多笔事务Ÿ 设备可以在未预期的时间传送信息给主机,例如键盘的按键或是鼠标的移动所以主时机定时轮询设备,以取得最新的数据Ÿ HID设备的最大传输速度有限制主机可以保证低速的中断端点每10ms内最多1笔事务,每一秒最多是800B保证全速端点每lms一笔事务,每一秒最多是64000B保证高速端点每125 us三笔事务,每一秒最多是24.576MBŸ 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下载8.1.2 HID设备的硬件要求HID接口必须符合Device Class Definition for Human interface Devices标准内所定义的HID类别的需求在此文件内描述了所需的描述符、传输的频率以及传输的类型等为了符合标准,HID接口的端点与描述符都必须符合数个要求所有的HID传输都是使用默认控制管道或是一个中断管道,HID设备必须有一个中断输入端点来传送数据到主机,中断输出端点那么不是必需的HID类别驱动程序HID类别设备主机外设默认控制管道中断管道图8-1 HID传输的传输类型表8-1 HID设备的传输类型传输类型数据来源数据类型是否需要管道控制设备〔输入〕没有严格时间限制的数据是主机〔输出〕没有严格时间限制的数据或是没有中断输出管道时的任何数据中断设备〔输入〕定时或低延迟的数据是主机〔输出〕定时或低延迟的数据是主机与设备之间所交换的数据,可以分成两种类型:Ÿ 低延迟的数据,必须尽快地到达目的;Ÿ 配置或其他的数据,没有严格时间限制的需求。

中断管道是控制管道之外的另一种数据交换的方式,特别适合使用在接收端需要定时或是尽可能及时收到数据的时候中断输入管道携带数据到主机,中断输出管道那么是携带数据到设备在总线忙的时候,控制管道可能会被延迟,而中断管道保证会有可得到的带宽HID不需要一定有中断输出管道如果没有中断输出管道,主时机在控制管道上使用HID设备特有的Set_Report请求来传送所有的报表8.1.3 HID固件的要求主机的驱动程序要与HID设备通信,设备的固件必须符合以下需求:Ÿ 设备的描述符必须识别该设备包含有HID接口Ÿ 除了默认控制管道外,固件必须另外支持一个中断输入管道Ÿ 固件必须包含一个报表描述符来定义要传送与接收的设备数据如果要传送数据,固件必须支持Get_Report控制传输与中断输入传输如果要接收数据,固件必须支持Set_Report控制传输与选择性的中断输出传输所有的HID数据都必须使用定义过的报表格式来定义报表中数据的大小与内容设备可以支持一个或多个报表在固件中的一个报表描述符用来描述此报表,以及如何使用报表数据的信息在每一个报表中的一个数值,定义此报表是一个输入〔Input〕、输出〔Output〕或是特征〔Feature〕报表。

主机在输入报表中接收数据,在输出报表中传送数据,特征报表可以在任何方向传递Windows 98以及后来版本的HID驱动程序使用中断传输来传递输入报表输出报表的传输类型要根据设备支持的端点与Windows的版本而定Windows 98 Gold只符合HID 1.0标准,它的HID驱动程序使用控制传输来传递输出报表Windows 98 SE、Wndows 2000符合HID 1.1标准,HID驱动程序在有中断输出端点时使用中断传输,否那么使用控制传输来传递输出报表特征报表都是使用控制传输8.2 HID设备描述符HID设备连接到USB主机后,主机通过发送Get_Descriptor请求读取HID设备的描述符,了解描述符对了解USB设备是至关重要的8.2.1 HID设备的描述符HID设备除了支持USB设备的5种标准描述符之外,还支持HID设备特有的3种描述符这些描述符是:Ÿ USB标准描述符:设备、配置、接口、端点和字符串描述符Ÿ HID特有的描述符:HID、报表〔Report〕和实体〔Physical〕描述符从描述符的关联关系看,HID描述符是关联于接口所以如果一个HID设备有2个端点,设备不需要每个端点有一个HID描述符。

图8-2 HID描述符的关联关系接口描述符Interface端点描述符EndpointHID描述符Hid报表描述符Report实体描述符PhysicalHID、报表和实体描述符是HID设备特有的描述符 从前面的USB描述符可以看出一个规律,描述符的第一、二字节分别是描述符的长度和类型,描述符的类型字段〔bDescriptorType〕说明描述符的种类,下表列出了不同描述符的类型字段数值表8-2 HID的描述符类型描述符应用数值标准设备 Device所有设备必须有,只能一个01配置 Configuration所有设备必须有,至少一个02字符串 String可选择03接口 Interface每一个接口一个04端点 Endpoint除端点0之外的每个端点一个05设备限定 Device_Qualiffier同时支持全速与高速的设备必须有一个06Other_Speed_Configuration07Interface_power08类别HIDHID设备必须有21Hub29HID特定报表 ReportHID设备必须有22实体 Physical可选择的23对于一个HID设备,设备描述符与配置描述符没有HID特定的信息。

其设备描述符的bDeviceClass和bDeviceSubClass字段的值为0,接口描述符的bInterfaceClass字段值为03,表示设备的该接口是HID类别在接口描述符中其他包含HID特定信息的字段还有子类别码〔blnterfaceSubClass〕与协议码〔blnterfaceProtocol字段〕在接口描述符中子类别码字段等于1表示此设备支持启动接口〔Boot Interface〕如果设备有启动接口,即便主机的HID没有加载驱动程序,设备也可以使用这种情形可能发生在计算机是由DOS直接启动,在启动时观看系统设置画面或使用Wndows的平安模式时含有启动接口的键盘或鼠标可以使用BIOS或许多主机支持的默认简单协议HID标准定义了键盘与鼠标的启动接口协议如果设备没有启动接口,并且接口描述符中协议码字段是1,表示设备支持键盘接口,协议码字段是2,表示支持鼠标接口接口描述符中协议码字段是0,表示设备不支持启动协议在 HID Usage Tables标准中定义了键盘与鼠标的启动描述符〔Boot Descriptor〕BIOS不需要从设备中读取描述符,因为它知道启动协议,并且假设设备支持启动协议。

所以要启动的设备不需要在固件内包含启动接口描述符,它只要在主机尚未要求在报表描述符中的定义协议时支持启动协议即可在操作系统加载HlD驱动程序后会使用Set_Protocol请求,将设备由启动协议转换成报表协议8.2.2 HID描述符HID描述符的主要作用是用来识别HID通信所使用的额外描述符下表是HID描述符结构表8-3 HID描述符结构偏移量字段字节数数值类型说明0bLength1Numeric描述符字节数1bDescriptorType1Constant0x21 = HID描述符2bcdHID2NumericHID标准版本号〔BCD〕4bCountryCode1Numeric硬件设备所在国家的国家代码5bNumDescriptors1Numeric类别描述符数目〔至少有一个报表描述符〕6bDescriptorType1Constant类别描述符的类型7wDescriptorLength2Numeric报表描述符的总长度9[bDescriptorType]...1Constant附加的描述符的类型,可选的10[wDescriptorLength]...2Numeric附加的描述符的总长度,可选的bcdHID:设备与其描述符所遵循的HID标准的版本号码,此数值是4个16进制的BCD格式字符。

例如版本1.1的bcdHID是0110h〔2 bytes〕bCountryCode:硬件目的国家的识别码如果不说明,该字段为0bDescriptorType:HID描述符附属的描述符的类型〔报表或实体〕每一个 HID都必须至少支持一个报表描述符一个接口可以支持多个报表描述符,以及一个或多个实体描述符HID描述符的偏移量为9和10的bDescriptorType和wDescriptorLength可以重复存在多个1. 报表描述符报表描述符定义了执行设备功能的数据格式。

下载提示
相似文档
正为您匹配相似的精品文档