USBHID协议中文版——USB接口HID设备.pdf

所需积分/C币:31 2016-06-26 14:14:10 11MB PDF
79
收藏 收藏
举报

USBHID协议中文版——USB接口HID设备.pdf
第8章USB接囗HD设备 183 在每一个报表中的一个数值,定义此报表是一个输入( Input)、输出( Output)或是 特征( Feature)报表。主机在输入报表中接收数据,在输出报表中传送数据,特征报表可 以在任何方向传递 Windows98以及后来版本的HD驱动程序使用中断传输来传递输入报表。输出报表 的传输类型要根据设备支持的端点与 Windows的版本而定 Windows98God只符合HD 1.0规范,它的HD驱动程序使用控制传输来传递输出报表ε Windows98SE、 Wndows 2000符合HD1.1规范,HD驱动程序在有中断输出端点时使用中断传输,育则使用控制 传输来传递输出报表。特征报表都是使用控制传输。 82H|D设备描述符 HD设备连接到USB主机后,主机通过发送 Get Descriptor请求读取H|D设备的描 述符,了解描述符对了解USB设备是至关重要的。 821HID设备的描述符 HD设备除了支持USB设备的5种标准描述符之外,还支持HD设备特有的3种描 述符。这些描述符是: USB标准描述符:设备、配置、接口、端点和字符串描述符。 ·HD特有的描述符:HD、报表(Repo)和实体( Physical)描述符。 从描述符的关联关系看,HID描述符是关联于接口。所以如果一个HID设备有2个端 点,设各不需要每个端点有一个HD描述符。 接口描述符 Interface H描述符端点描述符 Hid Endpoint TID、报表和实体描 艮表指述符实体摧述符 述符是HD设备特 Report Physical 有的描述符 图8-2HD描述符的关联关系 从前面的USB描述符可以看出一个规律,措述符的第一、二字节分别是描述符的长 度和类型,描述符的类型字段( dEscriptor Type)表明描述符的种类,下表刎出了不同描 述符的类型字段数值。 表82HID的描述符 184 计算机高级接口实践 类型 描述符 应用 数 值 设备 Device 所有设备必须有,只能一个 01 配置 Configuration 所有设备必须有,至少一个 02 字符 String 可选择 03 标准 接口 Interface 每一个接口一个 04 端点 Endpoint 除端点0之外的每个端点一个 05 设备限定 Device qualifier 同时支持全速与高速的设备必须有06 Other_ Speed_ Configuration 07 Interface_ powcr 08 HID 类别 HD设备必须有 21 Hub 29 HID 报表 Report HD设备必须有 特定 实体 Physica 可选择的 23 对于一^HD设备,设备描述符与配置描述符没有HID特定的信息。其设备描述符的 dEvice class和 bDevicesubClass字段的值为0,接口描述符的 iNterface class字段值 为03,表示设备的该接口是HD类别。在接口描述符中其他包含HD特定信息的字段还 有子类别码( iNterface SubClass)与协议码( iNterface Protocol字段)。 在接口描述符中子类别码字段等于1表示此设备支持启动接口( Boot interface)。如 果设备有启动接口,即便主机的HD没有加载驱动程序,设备也可以使用。这种情形可能 发生在计算机是由DOs直接启动,在启动时观看系统设置画面或使用 Wndows的安全模 式时。 含有启动接口的键盘或鼠标可以使用Bos或许多主机支持的默认简单协议。HD规 范定义了键盘与鼠标的启动接口协议。 如果设各没有启动接口,并且接口描述符中协议码字段是1,表示设备支持键盘接口, 协议码字段是2,表示支持鼠标接∏。接∏描述符中协议码字段是0,表示设备不支持启 动协议 在 HID Usage Tables规范中定义了键盘与鼠标的肩动描述符( Boot Descriptor) BOS不需要从设备中读取描述符,因为它知道启动协议,并且假设设备支持启动协议 所以要启动的设备不需要在固件内包含启动接口描述符,它只要在主机尚未要求在报表描 述符中的定义协议时支持启动协议即可。在操作系统加载HD驱动程序后会使用 Set Protocol请求,将设备由启动协议转换成报表协议。 822HID描述符 HID描述符的主要作用是用来识别HID通信所使用的额外描述符。下表是HD描述符 结构 表8-3HID描述符结构 偏移 字节数值 量 字段 数 类型 说明 lEngth 1 Numeric描述符字节数 0124567 bDescriptorType 1 Constant0×21=H|D描述符 bodhI 2 NumericHID规范版本号(BCD) cOuntry Code 1№ umerIc硬件设备所在国家的国家代码 bNumDescriptors 1 Numeric类别描述符数目(至少有一个报表描述符) dEscriptor i ype 1 Constant类别描述符的类型 w DescriptorLength2 Numeric报表描述符的总长度 第8章USR接口HID设备 185 9[ dEscriptor Type].1 Constant附加的描述符的类型,可选的 10 [ DescriptorLength]2 Numeric附加的描述符的总长度,可选的 bcdHID:设备与其描述符所遵循的HD规范的版本号码,此数值是4个16进位的 BCD格式字符。例如版本1.1的 bcdhID是0110h。 cOuntry Code:硬件目的国家的识别码。如果不说明,该字段为0。 尖 bDescriptorType:HD描述符附属的描述符的类型(报袤或实体)。每一个HD都 须至少文持一个报表描述符。一个接口可以支持多个报表描述符,以及一个或多个实体 措述符。 HD描述符的偏移量为9和10的 dEscriptor Type和 w DescriptorLeng边h可以重复存 在多个 1.报表描述符 报表描述符定义了执行设备功能的数据格式和使用方法。 报表描述符和UsB的其他描述符是不一样的,它不是一个简单的表格,报表描述符 是USB所有描述符中最复杂的。报表描述符非常复杂而有弹性,因为它需要处理各种用 途的设备。报表的数据必须以简洁的格式来储存,这样才不会浪费设备内的储存空间以及 数据传输时的总线时问。 实际上可以这样理解,报表内容的简洁,是通过报表描述符全面的、复杂的数据描述 实现的。 报表描述符必须先描述数据的大小与内容。报表描述符的内容与大小因设备的不同而 不同,在进行报表传输之前,主机必须先请求设备的报表描述符,只有得到了报表描述符 才可正确解析报表的数据。 报表描述符是报表描述项日(Item)的集合,每一个描述项日都有相对统一的数据结 构,项目很多,通过编码实现。 (1)项目 报表描述符由描述HD设备的数据项目(ltem)组成,项日的第一个字节(项目前缀) 由三部分构成,即项目类型( Item type)、项目标志( Item tag)和项目长度( Item size) 其中项目类型说明项目的数据类型,项目标签说明项目的功能,项目长度说明项目的数据 部分的长度 H|D的项目有短项目和长项目两种,其中短项目的格式如下图。 位序 76543210 字段「D(可以是0、1、2、4个字节)b1 agbType bSize 图8-3HD报表短项目格式 短项目的数据字节数山bSze的值定义, bSize为0、1、2、3时Da部分的字节数 分别为0、1、2、4个字节。短项目的项目类型由 bType定义, bType为0、1、2时分别 为Main、 Globa和 Local类型。 长项目可以携带较多的数据,其格式如下图。 186 计算机高级接口实践 位序 76543210 字段 Data bLongltemTag bData Size 1111;11;10 字节数 1~255 图8-4HD报表长项目格式 项目中的第一个字节为上图中的特定值时表明该项目是一个长项目。长项目中的 bData Size说明Dat部分的字节数, bLongltem Tag在HD规范中没有定义。 下面是通过汇编实现的个简单的报表描述符,描述符的每·行是个项目,该描述 符摧述了一个从设备接收2个字节的输入报表和发送2个字节到设备的输出报表。 HTD Report. des tahle: db06h,n0h,EFh; Usage pago( Vendor dcfincd)定义设备功能 db 09h, A5h1 i Usage(Vendor Defined) 定义用法 db Alh, olh Collection(Application) 开一个集合 db 09H A6h Usage( Vendor def⊥ne) 定义用法 输入报表 db 09h.h Usgae(Vendor define. 定义用法 cb 15h, 80h Logical Minimum 定义输入最小值=-128 ch 25h. 7Eh Logical Maximum 定义输入最大值-+27 db 75h 08h f Report size 定义报表数据项人小=8 db 95h 02h i Report Count 定义报表数据向个数=2 d 810, 02h Input( Data variab1 er Absolute)输入项目 输出报表 db 0ch, Agh Usga( Vendor de finec)定义用法 db 15h, 80h Logical Minimum 定义输入最小值=-128 db 25h 7Eh L。gica1 Maximum 定义输入最大值=+27 db ?5h, 08h Report size 定义报表数据项大小=8 dh 95h 02h Report. count 定义报表数据向个数=2 db 91h, 02h Output(Data, Variabler Absolute)输出项目 dh Coh End collection 关闭集合 (2)项目的分类 报表的项目有Main、 Globa和Loca三大类,每类都有多个不同的项目,实现不同 的摧述。 Main类项目用于定义报表描述符中的数据项。也可以组合其中的若干数据项成为一个 集合。Main项目可以分为带数据的Main项目和不带数据的Main项目。带数据项的Main 用于生成报表中的数据项,包括pu、 Output和 Feature项目。个带数据的Main项目不 生成报表中的数据项,包括Co| ection和 End collection项目。 G|oba类项目实现对数据的描述,用来识别报表并且描述报表内的数据,包括数据的 功能、最大与最小允许值以及数据项的大小与数目等。改变由Man类项目生成的项目状 态表。 Global类项目描述对后续的所有项目有效,除非遇到有新的 Global类项目。 Loca类项目定义控制的特征,这一类项目的作用域不超过下一个Main项目,所以在 每一Main项目之前可能有多个Loca项目。Loca项目用于描述后面的mput、 Output和 Feature项目。 第8章ISB接口HD设备 187 下表列出的是全部的项日的前缀字和简要功能说明。 表84HD项目列表 项目 类型项目标志( 项目前缀,nn 为数据长度 功能说明 put 100000nn 定义输入报表,主机利用该信息解析设备提供的数 据。主机向控制端口发送 Get Report实现输入 Output 100100nn 创建输岀报表,通过向设备发送 Set_Report实现输 出 类项 Feature 101100nn定义送往设备的设置信息 Collection 101000nn 定义2个以上数据(nput、 Output和 Feature)的 关系为集合, Collection开始一个集合,之后的End End collection 110000nn Collection结束集合。Co| lection项目的数据部分说 明 Collection的类型 指定设备的功能 usage Page 000001nn 另外由于 Usage项目有32位数据值, Usage paye 项目用于为Uage项目在报表描述符中占居存储 空间。用于存放后续的Uage项目的高16位。 Logical Minimum 000101nn Logical Maximum 0001n定义变量或数组项目的逻辑最小值和最大值 Physical Minimum 001101m定义变量或数组项目的物理最小值和最大值,分划 G|oba| Physical Maximum010001nn和 Logical Minimum、 Logical Maximum对应 类项 Unit Exponent 010101nn定义数值是基于10的指数 Unit 011001m单位 Report Size 011101m指定报表数据区域所包含的位数 Report ID 10001n-报表|D,该项目在报表中插入个字节的报表D Report Count 10101mn报表中数据域的数目 Push 101001mn将Goba项目状态表送入堆栈 Pop 101101m从堆栈恢复Goa项目状态表 110001nn 111101nn 保留 用法索引值,表示对项目戌集合建议的用法,用子 sate 000010m当一个项目描述多个控制,对每一个变量和数组元 素都自建议的用法 Usage Minimum0010mn定义阵列或位图中控制操作的第一个和最后一个用 Usage Maximum 001010mn|法 Designator Index 001110mn确定用:控制的实体,指向物描述符中的目标 .ocal Designator Minimum 0100 10 nn Designator Maximum 0101 10 nn 定义阵列或位图目标的起始和终止索引值 日 String Index 011110m确定字符串描述符中的索引值 String Minimum100010mn定义用于阵列或位图控制中字符串序列索引值的最 String Maximum10010n小值和最大值 Delimiter 101010nn 定义一组Loca项的开始和结束,1=开始,0=结 束 101010nn 111110nn 保留 在这些项日中, Usage Page用来指定设备的功能,而 Usage项日用来指定个别报表 的功能。 Usage Page项目相当于是HD的子集合, Usage相当于是 Usage Page的子集 2.报表描述符的项目 188 计算机高级接口实践 (1)nput、 Outpost和 Feature项目 这3个项日用来定义报表中的数据字段。 nput项目可以应用到任何控制、计数器读数或其他设备传给主机的信息。一个输入报 表包含一个或多个mput项目,主机使用中断输入传输来请求输入报表, Ouput项目用来定义主机传送给设备的信息。一个输出报表包含一个或多个 Outpost 项目。输出报表包含控制状态的数据。如果有中断输出管道,HD1.1兼容主杌使用中断输 出传输来传送输出报表,否则使用 Set_ Report控制请求。 Feature项目应用到主机传送给设备的信息,或是主机从设备读取 Feature项目。 个特征报表包含一个或多个 Feature项目, Feature项目通常是包合影响设备与其组件整 体行为的配置。特征报表通常是控制可以使用实际的控制面板调整的设置,例如主机可以 使用虚拟控制面板来让用户选择控制特征。主机使用 Set_Report与 Get Report请求来传 送与接收特征报表。 在每一个mnpt、 Output和 Feature项日的前缀字之后是32位描述数据,目前最多定 义了9个位,余的位则是保留。位0~8的定义中只有位7不能应用于nput项目,除此之 外其他的位定义都适应于 Input、 Output和 Feature项目。 表85 Input、 Output和 Feature项目的数据项说明 数据字段 位值名称 含义说明 dAta 数据:表示项目的内容是可更改的(读/写)。 Constant 常数:表示项目的内容是不可更改的(只读)。 0 Array 数组:报告全部挫制的状态。如在键盘报表中每一个键在报表中 占一位,报表传输全部键的状态,可以同时按下任意多个键。 变量:报告作用中的控制。如在键盘报表中只报告按下的键的编 1 Variable 号,可以同时按下的键的数目等于报表的计数( Globa类项目 Report count) 0 Absolute 绝对:表示数值以一个固定值为基准。游戏杆通常是报告绝对数 据(游戏杯目前的位置) rElative 相对:表示数共的改变以上一个读数为基准。鼠标通常是报告相 对数据(鼠标的移动位置)。 30No Wrap 如果设置为1表示回转,当效值超过最小值到最大值的范围时将 ①1Wap 回转,如果最小值是0而最大值是10,超过最大值的下一个数 值是0。 40Linear 线:表示测量的数据与报衣的数据有线性的关系。 ①1| Non-Linear 非线性:表示测量的数据与报表的数据没有线性的关系。 伏选状态:表示控制在没有用户交互时会可到一个特定的状态 pReferred 5 如按钮就有优选状态,在无操作时保持未按下的状态。 ① 1Non-Preferred 非优选状态:它维持在上一个用户选择的状态。如交替的开关就 没有优选状态。 0 No Null Position无空状态位置:表示控制永远在传送有效的数据 空状态:表示控訇文持一个没有传送有效数据的状态。如操纵杆 Null state 可能具有一个多方向的按钮开关,在没有按下时在空状态,这时 控制将传送一个在 Logical Minimum与 Logical Maximum范围 之外的数值来表小它在空状态。 不可变的:表示设备只有在主机请求时才改变数值。当主机传送 ②0 Non-Volatile 个报表并且不要改变不可变项目时,如果该项目是定义成相对 Relative)的,数值0表示不改变数据,如果不可变项目是定 义成绝对( Absolute)的,超出范围外的数值则表示不改变数据。 第8章USB接囗HD设备 189 可变的:表小设备可以自己改变数值,并不是必须主机传送报表 vOlatile 要求给设备来改变数值。例如设备控制面板可以由主机软件传送 个报表给设备,也可以由用户白己按设备上的实际按钮。 0 Bit Field 位字段:表小每一个位或是一个字节内的一组位可以代表一份数 8 bUffered Bytes 缓冲宁节:表示信息包含一个或多个字节,缓冲字节的报表大小 必须是8 l9-31位 保留 注:①:该位不能应用到数组。 ②:只应用于 Output和 Feature项目,对于nput项目该位保留。 (2) Collection和 End collection项目 所有的报表类型都可以使用 Collection与 End Collection项目来将相关的Main类型 项目组成群组。这两个项目分别用于打开和关闭集合。所有在 Collection与 End collection 项日之间的Man类型项目都是 Collection的一部分。 Collection有3和类型: Application、 Physical与 Logical,其项目的数据项的值分别 为1、0和2。厂商也可以自己定义 Collection类型,数据项的值为80h~FFh保留给厂商 定义。 End collection项目尢数据项。 Application Collection包含有共同用途的项目或执行单一功能的项目。例如键盘的开 机描述符将键盘的按键与LED指示灯数据集合成一个 Application Collection所有的报表 必须在一个 Application Collection内 Physical Collection包含在一个单一几何点上的数据项目,可以将每个位置的数据集 合成一个 Physical Collection。在设备报告多个传感器的位置的时候,使用 Physical Co| ection指明不同的数据来自不同的传感器。 Logical Collection形成一个数据结构,包含由 Collection所连结的不同类型的项目。 例如数据缓冲区的内容以及缓冲区内字节数目的计数 (3) Usage Page和∪sage项目 Usage page项目的数据部分为1-2个字节,目前的定义全部都是一个字节。 Usage Page定义了常用的设备功能,关于 Usage Page(以及其他项目)的具体定义内容,可 Ca.iHidUsagetables(http://www.usb.org/developershidpage/#class_definition) 下表是来自 HID Usage tables的 Usage Page定义 表8-6 Usage Page定义 Page ID Paige Naime 00 Undefined 01 Generic Desktop Controls 02 Simulation Controls 03 VR Controls 04 Sport Controls 05 Game Controls 06 Generic Device Controls 07 Keyboard/ Keypad 08 LEDS 09 Button OA Ordina OB Telephony OC Consumer OD Digitize OE Reserved 190 计算机高级接口实践 OF PID Page 10 Unicode 11-13 R eserve口 Alphanumeric Display 15-3f Reserved 40 Medical Instruments 41-7F R d 80-83 Monitor pages 84-87 Power pages 88-8B Re d 8 Bar code scanner page 8D Scale page 8E Magnetic Stripe Reading(MSR) Devices 8F Reserved Point of Sale pages 90 Camera Control Page 91 Arcade Page 92-FEFF Reserved FF00-FFFF Vendor-defined 关于 Usage Page的每一个有效定义项,都有一个相应的下一级定义,如 Usage Page 的数据项数值为1,则设备定义为 Generic Desktop Controls,关于该类设备的具体功能可 以在 HID Usage Tables中查到具体的定义。下表是H| D Usage Tables中对 Generic Desktop Controls设备的功能定义。 表8-7 Generic Desktop Controls用法定义 参阅HD Usage Usage Usace Usage NaIme Tvpe Tables中的 相关章节 00 I Undefined 01 Pointer CP 4.1 02 Mouse CA 03 Reserved 04 Joy stick CA 05 Game Pad A 06 Keyboard CA 07 K CA 08 Multi-axis Controller CA 09 Tablet PC Systcm Controls CA 0A-2F Reserved X 31 DDD 33 RX VVVVV 42 D 35 DV 36 Slider DV 37 Dial DV 38 Wheel DV 4.3 Hat switch DV SA Counted Buffer CL 4.6

...展开详情
试读 48P USBHID协议中文版——USB接口HID设备.pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 分享宗师

关注 私信
上传资源赚钱or赚积分
最新推荐
USBHID协议中文版——USB接口HID设备.pdf 31积分/C币 立即下载
1/48
USBHID协议中文版——USB接口HID设备.pdf第1页
USBHID协议中文版——USB接口HID设备.pdf第2页
USBHID协议中文版——USB接口HID设备.pdf第3页
USBHID协议中文版——USB接口HID设备.pdf第4页
USBHID协议中文版——USB接口HID设备.pdf第5页
USBHID协议中文版——USB接口HID设备.pdf第6页
USBHID协议中文版——USB接口HID设备.pdf第7页
USBHID协议中文版——USB接口HID设备.pdf第8页
USBHID协议中文版——USB接口HID设备.pdf第9页
USBHID协议中文版——USB接口HID设备.pdf第10页

试读结束, 可继续读5页

31积分/C币 立即下载