设为首页 加入收藏

TOP

USB初学(一)---USB-HID的初步认识【转】(二)
2019-09-01 23:09:00 】 浏览:87
Tags:USB 初学 ---USB-HID 初步 认识
pe
1 常量 HID相关描述符的类型
0x21:HID描述符
0x22:报告描述符
0x23:物理描述符
7 wDescriptorLength 2 数字 报告描述符总长度
9 bDescriptorType 1 常量用于识别描述符类型的常量,使用在有一个以上描述符的设备
10 wDescriptorLength 2 数字 描述符总长度,使用在有一个以上描述符的设备

报告描述符

报告描述符比较复杂,它是以item形式排列组合而成,无固定长途,用户可以自定义长度以及每一bit的含义。item类型分三种:main,global和local,其中main类型又可分为5种tag:

  • input item tag:指的是从设备的一个或多个类似控制管道得到的数据
  • output item tag:指的是发送给一个或多个类似控制管道的数据
  • feature item tag:表示设备的输入输出不面向最终用户
  • collection item tag:一个有意义的input,output和feature的组合项目
  • end collection item tag:指定一个collectionitem的终止

每一个main item tag(input,output,feature)都表明了来自一个特定管道的数据的大小,数据相对还是独立,以及其他相关信息。在此之前,global和local item定义了数据的最大值和最小值,等等。local item仅仅描述下一个main item定义的数据域,而global item是这一个报告描述符中所有后续数据段的默认属性。

一个报告描述符可能包含多个main item,为了准确描述来自一个控制管道的数据,一个报告描述符必须包括以下内容:

  • input(output,feature)
  • usage
  • usage page
  • Logical Minimum
  • Logical Maximum
  • Report Size
  • Report Count
Usage Page (Generic Desktop);    //global item

Usage (Mouse);    //global item 
Collection (Application);    //Start Mouse collection
Usage (Pointer);    //
Collection (Physical);    //Start Pointer collection
Usage Page (Buttons)
Usage Minimum (1),
Usage Maximum (3),
Logical Minimum (0),
Logical Maximum (1) ;   //Fields return values from 0 to 1
Report Count (3),
Report Size (1);   //Create three 1 bit fields (button 1, 2, & 3)
Input (Data, Variable, Absolute);   //Add fields to the input report.
Report Count (1),
Report Size (5);   //Create 5 bit constant field
Input (Constant), ;Add field to the input report
Usage Page (Generic Desktop),
Usage (X),
Usage (Y),
Logical Minimum (-127),
Logical Maximum (127);    //Fields return values from -127 to 127
Report Size (8),
Report Count (2);    //Create two 8 bit fields (X & Y position)
Input (Data, Variable, Relative);   //Add fields to the input report
End Collection;   //Close Pointer collection
End Collection;   //Close Mouse collection

item的数据格式有两种,分别是短item和长item。

短item格式

bSize 0:0个字节
1:1个字节
2:2个字节
3:4个字节
bType 0:main
1:global
2:local
3:保留
bTag item类型
8:input
9:output
A:collection
B:feature
C:end collection

长item,其bType位值为3,bTag值为F

bDataSize 0:0个字节
1:1个字节
2:2个字节
3:4个字节
bLongItemTag bLongItemTag
0:main
1:global
2:local
3:保留
data 数据

物理描述符

物理描述符被用来描述设备的行为特性,物理描述符是可选的,HID设备可以根据其本体的设备特性选择是否包含物理描述符。下表是HID的物理描述符结构。

HID物理描述符的结构

物理描述符用来描述行为特性,是可选的。

偏移量 大小 描述
0 bDesignator 1 用来指定本体的哪一部分影响项目
1 bFlags 1 位指定标志
位0~4:Effort
位5~7:Qualifier

bDesignator取值含义表

取值 含义 取值 含义
0x00 0x15 小指
0x01 0x16
0x02 眼球 0x17
0x03 0x18 腰骨
0x04 眼皮 0x19
0x05 0x1A 大腿
0x06 0x1B 膝盖
0x07 0x1C 小腿
0x08 上唇 0x1D
0x09 下唇 0x1E
0x0A 0x1F 脚跟
0x0B 0x20 拇指
0x0C 上臂 0x21 大拇指
0x0D 手肘 0x22 第二指
0x0E 前臂 0x23 第三指
0x0F 手腕 0x24 第四指
0x10 手掌 0x25 小拇指
0x11 拇指 0x26
0x12 食指 0x27
0x13 中指 0x28~0xFF 保留
0x14 无名指 - -

Qualifier取值含义

取值 含义 取值 含义
0x00 0x04 其中之一
0x01 0x05 中间
0x02 0x06 保留
0x03 同时 0x07 保留

USB HID类可采用的通信管道

所有的HID设备通过USB的控制管道(默认管道,即端点0)和中断管道与主机通信。

控制管道主要用于以下3个方面:

  • 接收/响应USB主机的控制请示及相关的类数据

  • 在USB主机查询时传输数据(如响应Get_Report请求等)

  • 接收USB主机的数据

中断管道主要用于以下两个方面:

  • USB主机接收USB设备的异步传输数据

  • USB主机发送有实时性要求的数据给USB设备

  • 从USB主机到USB设备的中断输出数据传输是可选的,当不支持中断输出数据传输时,USB主机通过控制管道将数据传输给USB设备。

表1、USB HID规范定义的HID设备可用端点

管道 要求
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇龙尚 U9300C wvdial 拨号上网 下一篇alloc_page分配内存空间--Linux内..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目