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

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

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

231。以下是报表描述符的修饰键部分描述。

Usage Page (1) Usage (6)

Collection (1) Usage Page (7)

; 1 = Generic Desktop Controls ; 6 = Keyboard ; 1 = Application ; 7 = Keyboard/Keypad

Usage Minimum (224) Usage Maximum (231) Logical Minimum (0) Logical Maximum (1) Report Size (1) Report Count (8)

Input (Data, Variable, Absolute)

……

2.3 USB命令请求

所有的USB设备都要求对主机发给自己的控制命令作出响应,USB规范定义了11个标准命令,它们分别是:Clear_Feature、Get_Configuration、Get_Descriptor、

Get_Interface、Get_Status、Set_Address、Set_Configuration、Set_Descriptor、Set_Interface、Set_Feature、Synch_Frame。所有USB设备都必须支持这些命令(个别命令除外,如Set_Descriptor、Synch_Frame),在得到这些命令后,设备进行相应的判断,然后返回相应的数据。 不同的命令虽然有不同的数据和使用目的,但所有的USB命令结构是一样的。下表所示为USB命令的结构:

表1、USB命令的结构

偏移量 0 域 bmRequestType 长度(字节) 1 位图 请求特征: D7:传输方向 0=主机至设备 1=设备至主机 D6..5:种类 0=标准 1=类 2=厂商 3=保留 D4..0:接受者 0=设备 1=接口 2=端点 3=其他 值 描述 4..31 保留 1 2 4 6 bRequest wValue wIndex wLength 1 2 2 2 值 值 索引或偏移 命令类型编码值(见表3) 根据不同的命令,含义也不同 根据不同的命令,含义也不同,主要用于传送索引或偏 移 如有数据传送阶段,此为数据字节数。 下表列出了USB的11种标准命令

表2、USB的11种标准命令

命令 Clear_Feature bmRequestType 00000000B 00000001B 00000010B Get_Configuration Get_Descriptor 10000000B 10000000B GET_CONFIGURATION GET_DESCRIPTOR 描述表种类(高字节,见表5)和索引(低字节) Get_Interface Get_Status 10000001B 10000000B 10000001B 10000010B GET_INTERFACE GET_STATUS 零 零 接口号 零(返回设备状态) 接口号(对像时接口时) 端点号(对象是端点时) Set_Address Set_Configuration 00000000B 00000000B SET_ADDRESS SET_CONFIGURATION 设备地址 配置值(高字零 零 无 零 零 无 一 二 可选设置 设备, 接口 ,或 端点状态 零或语言标志 描述表长 零 CLEAR_FEATURE bRequest wValue 特性选择符 wIndex 零 接口号 端点号 零 一 配置值 描述表 wLength 零 Data 无 节为0,低字节表示要设置的配置值) Set_Descriptor 00000000B SET_DESCRIPTOR 描述表种类(高字节,见表5)和索引(低字节) Set_Feature 00000000B 00000001B 00000010B SET_FEATURE 特性选择符(1表示设备,0表示端点) Set_Interface Synch_Frame 00000001B 100000010B SET_INTERFACE SYNCH_FRAME 可选设置 零 端点号 二 帧号 接口号 零 无 零 接口号 端点号 零 无 零或语言标志 描述表长 描述表 其中bRequest为命令编码值,含意见表3:

表3、USB标准命令的编码值

bRequest GET_STATUS CLEAR_FEATURE 为将来保留 SET_FEATURE 为将来保留 SET_ADDRESS GET_DESCRIPTOR SET_DESCRIPTOR GET_CONFIGURATION SET_CONFIGURATION GET_INTERFACE SET_INTERFACE SYNCH_FRAME Value 0 1 2 3 4 5 6 7 8 9 10 11 12 2.4 HID的特定请求 除了USB设备的11个标准请求外,HID规范另外还定义了6个HID特定控制请求。所有的HID设备都必须支持Get_Report请求,同时支持启动的设备必须支持Get_Protocol请求和Set_Protocol请求,其他的请求是可选择的。如果设备没有中断输出端点,此设备需要支持Get_Report请求来从主机读取数据。

在控制传输的设置阶段的数据包中的8个字节中的第一字节bmRequestType的编码含义参阅第6章中的USB标准请求。第2个字节bRequest定义请求的内容。wValue因请求的不同而不同。wIndex指明HID所在的接口。

表8-10 HID特定的请求

bmRequestType 1 01 00001b 0 01 00001b 1 01 00001b 0 01 00001b 1 01 00001b bRequest (值) Get_Report (1) Set_Report (9) Get_Idle (2) Set_Idle (10) Get_Protocol (3) wValue 报表类型,报表ID 报表类型,报表ID 0,报表ID 闲置时间,报表ID 0 wIndex wLength 数据阶段 接口 接口 接口 接口 接口 报表长度 报表长度 1 0 1 报表 报表 闲置时间 无 0: 启动协议 1: 报表协议 无 0 01 00001b Set_Protocol (11) 0: 启动协议 1: 报表协议 接口 0 2.4.1 Get_Report请求

Get_Report的作用是启用主机使用控制传输,来从设备读取数据。

在使用时wValue字段的高字节是报表类型,1表示Input报表,2表示Output报表,3表示Feature报表。wValue的低字节是报表的Report ID,如果没有定义Report ID,该字节为设0。 在携带请求的控制传输的数据阶段,HID设备回传指定的报表内容。

HlD规范不建议使用该请求获得未经定时的数据,这样的数据建议使用中断输入管道获得。 该请求用来取得在主机初始化设备时的特征项目状态和其他信息。使用开机协议的主机可以使用此请求来获得按键或鼠标数据。

2.4.2 Set_Report请求

Set_Report请求的参数含义和Get_Report一样,但Set_Report请求的数据方向与Get_Report相反,在后面的数据阶段,主机传送报表到HID设备,这样的输出报表可以用于复位设备的控制,复位产生的效果取决于对应的控制的类型是相对(Reletive)的还是绝对(Absolute)的。

2.4.3 Set_Idle请求

Set_Idle请求的作用是静默一个在中断输入管道的特定的报表,直到一个发生一个相关的事件或过去了规定的时间,当数据从上一个报表后没有改变时,可以通过限制中断输入端点的报表频率来节省传输带宽。HID设备不是必需支持此请求。

wValue字段的高字节是设置的闲置时间,是报表之间的最大间隔时间。该字节为0表示闲置时间为无限长,在这种情况下,设备只有在报表数据有改变时才传送报表,否则设备传回

一个NAK。

wValue字段的低字节指示此请求应用的报表的Report ID。如果低字节是0,此请求应用到设备的所有输入报表。

闲置时间以4ms为单位,范围在4ms~1020ms之间。如果报表的数据自从上一次报表后有改变,或是接收到一个请求,设备会传送一个报表。 如果报表的数据没有改变,而且从上一次报表后过去的时间自尚未达到规定的闲置时间,设备会传回一个NAK。如果报表的数据没有改变,而且持续时间已经达到的闲置时间,设备会传送一个报表。

闲置时间设置为0表示无限长的闲置时间,设备只有在报表的数据有改变时才会传送一个报表,对于其他的中断输入请求则是传回NAK。

在检测HID设备时,Wndows的HID驱动程序会试图将闲置时间设置成0。如果HID设备不支持此请求,主机会收到传回的Stall。

2.4.4Get_Idle请求

Get_Idle请求的作用是过的设备的当前闲置时间,在数据阶段,HID设备回传一个字节的闲置时间值。

2.4.5 Get_Protocol请求

Get_Protocol请求的作用是主机获取设备目前作用的是启动协议还是报表协议。 在数据阶段中设备回传的1个字节信息包中的数据值为0表示启动协议,为1表示报表协议。 启动设备必需支持该请求。

2.4.6 Set_Protocol请求

Set_Protocol的作用是主机指定设备使用启动协议或报表协议。

在数据阶段中主机传送的1个字节信息包中的数据值为0表示指定启动协议,为1表示指定报表协议。

启动设备必需支持该请求。

Part 3:USB模块相关改动的详细说明

1、 usb_desc.c

const uint8_t Joystick_ConfigDescriptor[JOYSTICK_SIZ_CONFIG_DESC] = {

0x09, /* bLength: Configuation Descriptor size */

USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */ JOYSTICK_SIZ_CONFIG_DESC,

/* wTotalLength: Bytes returned */ 0x00,

0x01, /*bNumInterfaces: 1 interface支持的终端(1)*/

0x01, /*bConfigurationValue: Configuration value配置值(1)*/ 0x00, /*iConfiguration: Index of string descriptor describing

the configuration字符串描述符指针(无)*/ 0xE0, /*bmAttributes: bus powered 配置(0x80表示总线供电)*/

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

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