USB HID协议Word格式.docx
- 文档编号:21708624
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:11
- 大小:19.42KB
USB HID协议Word格式.docx
《USB HID协议Word格式.docx》由会员分享,可在线阅读,更多相关《USB HID协议Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
描述
bLength
描述符的字节数
bDescriptorType
描述符类型,HID类描述符为0x21
bcdHID
HID版本号,如1。
0版本的BCD码为0x000,版本1。
1的BCD码为0x0110
4
bCountryCode
硬件目的国家的识别码(BCD码)
5
bNumDescrioptors
支持的附属描述符数目
6
bDescrioptorType
HID相关描述符的类型
0x21:
HID描述符
0x22:
报告描述符
0x23:
物理描述符
7
wDescriptorLength
报告描述符总长度
9
用于识别描述符类型的常量,使用一个以上描述符的设备
10
wDescrioptorLength
描述符总长度,使用一个以上描述符的设备
2报告描述符
HID设备的报告描述符比较复杂也比较难理解。
它以item形式排列组合而成,无固定长度,用户可以自定义长度以及每一bit的含义。
HID报告描述符已经不是简简单单地描述某个值对应某个固定意义了,它已经能够组合出很多种情况,并且需要PC上的HID驱动程序提供parser解释器来对描述的设备情形进行重新解释,进而组合生成出本HID硬件设备独特的数据流格式,所以可以把它理解为“报告描述符脚本语言”更为贴切.我们使用“报告描述符”专用脚本语言,让用户来自己定义他们的HID设备都有什么数据以及这些数据各bit都有什么意义。
USB协会提供了一个HID描述符编辑工具HIDDescrioptorTool,用它可以方便生成报告描述符。
item类型分为三种:
main,global和local。
其中main类型又可以分为5种tag:
∙inputitemtag:
指的是从设备的一个或多个类似控制管道得到的数据
∙outputitemtag:
指的是发送给一个或多个类似控制管道的数据
∙featureitemtag:
表示设备的输入输出不面向最终用户
∙collectionitemtag:
一个有意义的input,output和feature的组合项目
∙endcollectionitemtag:
指定一个collectionitem的终止
每一个mainitemtag(input,output,feature)都表明了来自一个特定管道的数据的大小,数据相对还是独立,以及其他相关信息。
在此之前,global和localitem定义了数据的最大值和最小值,等等.localitem仅仅描述下一个mainitem定义的数据域,而globalitem是这一个报告描述符中所有后续数据段的默认属性。
一个报告描述符可能包含多个mainitem,为了准确描述来自一个控制管道的数据,一个报告描述符必须包括以下内容:
∙input(output,feature)
∙usage
∙usagepage
∙LogicalMinimum
∙LogicalMaximum
∙ReportSize
∙ReportCount
下面用一个三键鼠标举例说明:
UsagePage(GenericDesktop);
//globalitem
Usage(Mouse);
Collection(Application);
//StartMousecollection
Usage(Pointer);
//
Collection(Physical);
//StartPointercollection
UsagePage(Buttons)
UsageMinimum
(1),
UsageMaximum(3),
LogicalMinimum(0),
LogicalMaximum
(1);
//Fieldsreturnvaluesfrom0to1
ReportCount(3),
ReportSize
(1);
//Createthree1bitfields(button1,2,&
3)
Input(Data,Variable,Absolute);
//Addfieldstotheinputreport.
ReportCount
(1),
ReportSize(5);
//Create5bitconstantfield
Input(Constant),;
Addfieldtotheinputreport
UsagePage(GenericDesktop),
Usage(X),
Usage(Y),
LogicalMinimum(-127),
LogicalMaximum(127);
//Fieldsreturnvaluesfrom—127to127
ReportSize(8),
ReportCount
(2);
//Createtwo8bitfields(X&Yposition)
Input(Data,Variable,Relative);
//Addfieldstotheinputreport
EndCollection;
//ClosePointercollection
//CloseMousecollection
item的数据格式有两种,分别是短item和长item。
短item格式
bSize
0:
0个字节
1:
1个字节
2:
2个字节
3:
3个字节
bType
0:
main
global
local
bTag
item类型
8:
input
9:
output
A:
collection
B:
feature
C:
endcollection
长item,其bType位值为3,bTag值为F
bDataSize
1:
2:
bLongItemTag
data
数据
1.3物理描述符
物理描述符被用来描述设备的行为特性,物理描述符是可选的,HID设备可以根据其本体的设备特性选择是否包含物理描述符。
下表是HID的物理描述符结构。
HID物理描述符的结构
bDesignator
用来指定本体的哪一部分影响项目
bFlags
位指定标志
位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取值含义
其中之一
右
中间
左
同时
2、HID类可采用的通信管道
所有的HID设备通过USB的控制管道(默认管道,即端点0)和中断管道与主机通信。
USBHID规范定义的HID设备可用端点
管道
要求
说明
控制(端点)
必须
传输USB描述符、类请求代码以及供查询的消息数据等
中断输入
传输从设备到主机的输入数据
中断输出
可选
传输从主机到设备的输出数据
控制管道主要用于以下3个方面:
∙接收/响应USB主机的控制请示及相关的类数据
∙在USB主机查询时传输数据(如响应Get_Report请求等)
∙接收USB主机的数据
中断管道主要用于以下两个方面:
∙USB主机接收USB设备的异步传输数据
∙USB主机发送有实时性要求的数据给USB设备
从USB主机到USB设备的中断输出数据传输是可选的,当不支持中断输出数据传输时,USB主机通过控制管道将数据传输给USB设备.
3、HID设备类特定的命令(请求)
HID设备类特定的命令(请求)有6个,它们分别是Get_Report,Get_Idle,Get_Protocol,Set_Report,Set_Idle和Set_Procotol.
HID类请求(命令)数据包格式如下表所示:
HID类请求(命令)包格式
bmRequestType
D[7]数据传输方向
0=从USBHOST到USB设备
1=从USB设备到USBHOST
D[6:
5]类型
01=请求类型为设备类请求
D[4:
0]接收端
0001=请求对象为接口
因而针对HID的设备类请求,仅仅10100001和00100001有效
bRequest
HID类请求
wValue
高字节说明描述符的类型
0x21:
低字节非0时被用来选定物理描述符
wIndex
根据不同的bRequest有不同的意义
wLength
该请求的数据段长度
HID类请求bRequest
数值
HID类请求描述符
注释
GET_REPORT
主机用控制传输从设备接收数据,所有HID类设备都要支持这个请求;
GET_IDLE
主机读取设备当前的空闲速率,设备可以不支持此请求;
GET_PROTOCOL
仅仅适应于支持启动功能的HID设备(BootDevice)
SET_REPORT
设备用控制传输接收主机的数据,设备可以不支持此请求;
SET_IDLE
设置闲置状态,设备可不支持此请求;
SET_PROTOCOL
3。
1GET_REPORT
主机通过控制端点获取一个Report
值
0xA1
高字节表示报告类型
0x01:
input
0x02:
output
0x03:
feature
Other:
reserved
低字节表示ReportID,如不使用设为0
HID的interface索引值
Report长度
Data
Report内容
3.2SET_REPORT
主机发送一个Report给设备,用以设置input,output或者feature
0x02:
Other:
低字节表示ReportID,如不使用设为0
3.3GET_IDLE
高字节0
空闲速率
3.4SET_IDLE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- USB HID协议 HID 协议