77范文网 - 专业文章范例文档资料分享平台

stm32 USB模块的HID设备开发(5)

来源:网络收集 时间:2019-02-15 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

图8-4 HID报表长项目格式

项目中的第一个字节为上图中的特定值时表明该项目是一个长项目。长项目中的bDataSize说明Data部分的字节数,bLongItemTag在HID规范中没有定义。

下面是通过汇编实现的一个简单的报表描述符,描述符的每一行是一个项目,该描述符描述了一个从设备接收2个字节的输入报表和发送2个字节到设备的输出报表。

HID_Report_desc_table:

db C0h

; End Collection 关闭集合

; ; ; ; ; ;

;

输出报表

db 09h, A9h db 15h, 80h db 25h, 7Fh db 75h, 08h db 95h, 02h db 91h, 02h

Usgae(Vendor defined) 定义用法

Logical Minimum 定义输入最小值=-128 Logical Maximum 定义输入最大值=+27 Report Size 定义报表数据项大小=8 Report Count 定义报表数据向个数=2 Output(Data,Variable,Absolute) 输出项目

; ; ; ; ; ;

;

输入报表

db 09h, A7h db 15h, 80h db 25h, 7Fh db 75h, 08h db 95h, 02h db 81h, 02h

Usgae(Vendor defined) 定义用法

Logical Minimum 定义输入最小值=-128 Logical Maximum 定义输入最大值=+27 Report Size 定义报表数据项大小=8 Report Count 定义报表数据向个数=2 Input(Data,Variable,Absolute) 输入项目

db 06h, A0h, FFh db 09h, A5h db A1h, 01h

; Usage Page(Vendor defined) 定义设备功能 ; Usage(Vendor Defined) 定义用法 ; Collection(Application) 开一个集合 ;

Usage(Vendor defined) 定义用法

db 09H, A6h

(2)项目的分类

报表的项目有Main、Global和Local三大类,每一类都有多个不同的项目,实现不同的描述。

Main类项目用于定义报表描述符中的数据项。也可以组合其中的若干数据项成为一个集合。Main项目可以分为带数据的Main项目和不带数据的Main项目。带数据项的Main用于生成报表中的数据项,包括Input、Output和Feature项目。不带数据的Main项目不生成报表中的数据项,包括Collection和End Collection项目。

Global类项目实现对数据的描述,用来识别报表并且描述报表内的数据,包括数据的功能、最大与最小允许值以及数据项的大小与数目等。改变由Main类项目生成的项目状态

表。Global类项目描述对后续的所有项目有效,除非遇到有新的Global类项目。

Local类项目定义控制的特征,这一类项目的作用域不超过下一个Main项目,所以在每一Main项目之前可能有多个Local项目。Local项目用于描述后面的Input、Output和Feature项目。

下表列出的是全部的项目的前缀字和简要功能说明。

表2-4 HID项目列表

项目 类型 项目标志(Tag) 项目前缀,nn为数据长度 1000 00 nn 1001 00 nn 1011 00 nn 1010 00 nn 1100 00 nn 功能说明 定义输入报表,主机利用该信息解析设备提供的数据。主机向控制端口发送Get_Report实现输入 创建输出报表,通过向设备发送Set_Report实现输出 定义送往设备的设置信息 定义2个以上数据(Input、Output和Feature)的关系为集合,Collection开始一个集合,之后的End End Collection Collection结束集合。Collection项目的数据部分说明Collection的类型 Input Output Feature Collection Main 类项目 指定设备的功能 Usage Page 0000 01 nn 另外由于Usage项目有32位数据值,Usage Page项目用于为Usage项目在报表描述符中占居存储空间。用于存放后续的Usage项目的高16位。 Logical Minimum Logical Maximum Physical Minimum Global Physical Maximum 类项目 Unit Exponent Unit Report Size Report ID Report Count Push Pop 0001 01 nn 0010 01 nn 0011 01 nn 0100 01 nn 0101 01 nn 0110 01 nn 0111 01 nn 1000 01 nn 1001 01 nn 1010 01 nn 1011 01 nn 1100 01 nn – 1111 01 nn 0000 10 nn 0001 10 nn 0010 10 nn 0011 10 nn 0100 10 nn 定义变量或数组项目的逻辑最小值和最大值 定义变量或数组项目的物理最小值和最大值,分别和Logical Minimum、Logical Maximum对应 定义数值是基于10的指数 单位 指定报表数据区域所包含的位数 报表ID,该项目在报表中插入一个字节的报表ID 报表中数据域的数目 将Global项目状态表送入堆栈 从堆栈恢复Global项目状态表 保留 用法索引值,表示对项目或集合建议的用法,用于Usage Local 类项目 Usage Minimum Usage Maximum Designator Index Designator Minimum 当一个项目描述多个控制,对每一个变量和数组元素都有建议的用法 定义阵列或位图中控制操作的第一个和最后一个用法 确定用于控制的实体,指向物理描述符中的目标 定义阵列或位图目标的起始和终止索引值 Designator Maximum String Index String Minimum String Maximum Delimiter 0101 10 nn 0111 10 nn 1000 10 nn 1001 10 nn 1010 10 nn 1010 10 nn – 1111 10 nn 确定字符串描述符中的索引值 定义用于阵列或位图控制中字符串序列索引值的最小值和最大值 定义一组Local项目的开始和结束,1=开始,0=结束 保留 在这些项目中,Usage Page用来指定设备的功能,而Usage项目用来指定个别报表的功能。Usage Page项目相当于是HID的子集合,Usage相当于是Usage Page的子集合。

D) 报表描述符的项目

(1)Input、Outpot和Feature项目

这3个项目用来定义报表中的数据字段。

Input项目可以应用到任何控制、计数器读数或其他设备传给主机的信息。一个输入报表包含一个或多个Input项目,主机使用中断输入传输来请求输入报表。

Ouput项目用来定义主机传送给设备的信息。一个输出报表包含一个或多个Outpot项目。输出报表包含控制状态的数据。如果有中断输出管道,HID1.1兼容主机使用中断输出传输来传送输出报表,否则使用Set_Report控制请求。

Feature项目应用到主机传送给设备的信息,或是主机从设备读取Feature项目。一个特征报表包含一个或多个Feature项目,Feature项目通常是包合影响设备与其组件整体行为的配置。特征报表通常是控制可以使用实际的控制面板调整的设置,例如主机可以使用虚拟控制面板来让用户选择控制特征。主机使用 Set_Report与Get_Report请求来传送与接收特征报表。

在每一个Input、Output和Feature项目的前缀字之后是32位描述数据,目前最多定义了9个位,余的位则是保留。位0~8的定义中只有位7不能应用于Input项目,除此之外其他的位定义都适应于Input、Output和Feature项目。

表2-5 Input、Output和Feature项目的数据项说明 数据字段 位 0 值 名称 0 Data 1 Constant 0 Array 1 1 Variable 含义说明 数据:表示项目的内容是可更改的(读/写)。 常数:表示项目的内容是不可更改的(只读)。 数组:报告全部控制的状态。如在键盘报表中每一个键在报表中占一位,报表传输全部键的状态,可以同时按下任意多个键。 变量:报告作用中的控制。如在键盘报表中只报告按下的键的编号,可以同时按下的键的数目等于报表的计数(Global类项目Report Count) 0 Absolute 2 1 Relative 3 0 No Wrap 绝对:表示数值以一个固定值为基准。游戏杆通常是报告绝对数据(游戏杆目前的位置)。 相对:表示数据的改变以上一个读数为基准。鼠标通常是报告相对数据(鼠标的移动位置)。 如果设置为1表示回转,当数值超过最小值到最大值的范围时将① 1 Wrap 0 Linear 1 Non-Linear 0 Preferred 1 Non-Preferred 0 No Null Position 回转,如果最小值是0而最大值是10,超过最大值的下一个数值是0。 线形:表示测量的数据与报表的数据有线性的关系。 非线性:表示测量的数据与报表的数据没有线性的关系。 优选状态:表示控制在没有用户交互时会回到一个特定的状态。如按钮就有优选状态,在无操作时保持未按下的状态。 非优选状态:它维持在上一个用户选择的状态。如交替的开关就没有优选状态。 无空状态位置:表示控制永远在传送有效的数据。 空状态:表示控制支持一个没有传送有效数据的状态。如操纵杆可能具有一个多方向的按钮开关,在没有按下时在空状态,这时控制将传送一个在 Logical Minimum与Logical Maximum范围之外的数值来表示它在空状态。 不可变的:表示设备只有在主机请求时才改变数值。当主机传送4 ① 5 ① 6 ① 1 Null State 7 ② 0 Non-Volatile 一个报表并且不要改变不可变项目时,如果该项目是定义成相对(Relative)的,数值0表示不改变数据,如果不可变项目是定义成绝对(Absolute)的,超出范围外的数值则表示不改变数据。 可变的:表示设备可以自己改变数值,并不是必须主机传送报表1 Volatile 要求给设备来改变数值。例如设备控制面板可以由主机软件传送一个报表给设备,也可以由用户自己按设备上的实际按钮。 8 ① 0 Bit Field 1 Buffered Bytes 位字段:表示每一个位或是一个字节内的一组位可以代表一份数据。 缓冲字节:表示信息包含一个或多个字节,缓冲字节的报表大小必须是8。 保留 9~31位 注: ①:该位不能应用到数组。

②:只应用于Output和Feature项目,对于Input项目该位保留。

(2)Collection和End Collection项目

所有的报表类型都可以使用Collection与 End Collection项目来将相关的Main类型项目组成群组。这两个项目分别用于打开和关闭集合。所有在Collection与End Collection项目之间的Main类型项目都是 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 Collection指明不同的数据来自不同的传感器。

Logical Collection形成一个数据结构,包含由 Collection所连结的不同类型的项目。例如数据缓冲区的内容以及缓冲区内字节数目的计数。

(3)Usage Page和Usage项目

Usage page项目的数据部分为1~2个字节,目前的定义全部都是一个字节。Usage Page定义了常用的设备功能,关于Usage Page(以及其他项目)的具体定义内容,可以查阅HID Usage tables(http://www.usb.org/developers/hidpage/#Class_Definition),下表是来自HID Usage tables的Usage Page定义。

表2-6 Usage Page定义

Page ID 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11-13 14 15-3f 40 41-7F 80-83 84-87 88-8B 8C 8D 8E 8F 90 91 92-FEFF FF00-FFFF Page Name Undefined Generic Desktop Controls Simulation Controls VR Controls Sport Controls Game Controls Generic Device Controls Keyboard/Keypad LEDs Button Ordinal Telephony Consumer Digitizer Reserved PID Page Unicode Reserved Alphanumeric Display Reserved Medical Instruments Reserved Monitor pages Power pages Reserved Bar Code Scanner page Scale page Magnetic Stripe Reading (MSR) Devices Reserved Point of Sale pages Camera Control Page Arcade Page Reserved Vendor-defined

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库stm32 USB模块的HID设备开发(5)在线全文阅读。

stm32 USB模块的HID设备开发(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/471491.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: