




免费预览已结束,剩余9页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 HID 设备类驱动程序设备类驱动程序 王廷广王廷广 理邦仪器西安研究所理邦仪器西安研究所 2 第一章第一章HID 设备类概述设备类概述 3 一 HID 设备特点 3 二 HID 设备的识别 4 第二章第二章 HID 设备类描述符设备类描述符 5 一 HID 描述符 5 二 报表描述符 6 1 main 项目 7 2 Global 项目 8 3 Local 项目 8 三 物理描述符 9 四 标准键盘描述符分析 9 第三章第三章 HID 设备类请求设备类请求 11 一 GETREPORT 请求 11 二 SETREPORT 请求 12 三 GETIDLE 请求 12 四 SETIDLE 请求 12 五 GETPROTOCOL 请求 12 六 SETPROTOCOL 请求 12 第四章第四章 HID 设备驱动设备驱动 13 一 驱动程序层次关系 13 二 程序关键回调函数部分 13 3 第一章第一章 HID 设备类概述设备类概述 HID human interface device 人机接口设备 是指需要直接与人进行信息交互 的 USB 设备 典型例子为键盘 鼠标和游戏杆等 它是最早提出的设备类中的 一种 可是是低速设备也可是全速设备 典型数据传输类型为中断 IN 传输 HID 设备类的类代码为 03H 具有一个子类代码 01H 和两个协议代码 01H 和 02H 本文是以 ATMEL 公司提供的 usb device hid keyboard project 1 4 iar5 at91sam7s ek 程序为例子进行说明 一 一 HID 设备特点设备特点 HID 设备必须有一个控制端点 完成 11 种标准 USB 设备请求和 6 种 HID 设备类请求 控制端点数据传输的数据量小 无时间要求 HID 设备还必须有 一个中断 IN 端点 以向主机发送数据 中断 OUT 端点是个可选的 也可以用 控制传输的 SetReport 向设备发送报告 以传递少量数据 端点驱动情况如下图 1 所示 图 1 端点应用情况 HID 所支持的端点类型决定了其具有的功能如下 1 适合传输少量或者中量的数据 全速处理的最大数据包长度为 64 字节 低 速为 8 个字节 高速设备最大为 1 024 字节 2 数据具有突发性 主机必须周期性地查询以获取 HID 设备的数据 3 最大速率有限制 全速服务周期最小值为 1ms 低速的服务周期最小为 10ms 速设备最快 10ms 一笔事务 最高速度为 800 B s 全速设备最快 1 ms 一笔事务 最高速度为 64 KB s 高速设备最快 125 s 一笔事务 最高 速度为 24 576 MB s 4 无固定传输速率 5 交换的数据存储在报告的结构内 设备必须支持 HID 报告格式 4 二 二 HID 设备的识别设备的识别 HID 的设备类的类代码为 03H 即将某接口描述符的 bInterfaceClass 字段 设为 03H 子类代码为 1 时 表明设备支持引导程序 即在主机的 HID 没有调 用时也能正常工作 如在 BIOS 设置和 DOS 情况下也能使用 为 0 不支持引导 程序 为键盘和鼠标定义了引导接口协议 键盘为 01H 鼠标为 02H 程序中 预定义如下 define HIDInterfaceDescriptor CLASS 0 x03 define HIDInterfaceDescriptor SUBCLASS NONE 0 x00 define HIDInterfaceDescriptor SUBCLASS BOOT 0 x01 define HIDInterfaceDescriptor PROTOCOL NONE 0 x00 define HIDInterfaceDescriptor PROTOCOL KEYBOARD 0 x01 define HIDInterfaceDescriptor PROTOCOL MOUSE 0 x02 当定义 usb 设备为 HID 设备时 其设备描述符和接口描述符中典型字段取值如 下 1 设备描述符 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 2 接口描述符 bInterfaceClass 03H bInterfaceSubClass 0 或 1 bInterfaceProtocol 0 或 1 或 2 即在设备用到子类时 设备描述符中的类类型 子类型 类协议都为 0 设备 类的类型在接口描述中设定 程序中的设备描述符为 static const USBDeviceDescriptor deviceDescriptor sizeof USBDeviceDescriptor USBGenericDescriptor DEVICE USBDeviceDescriptor USB2 00 HIDDeviceDescriptor CLASS 0 HIDDeviceDescriptor SUBCLASS 0 HIDDeviceDescriptor PROTOCOL 0 BOARD USB ENDPOINTS MAXPACKETSIZE 0 HIDDKeyboardDriverDescriptors VENDORID HIDDKeyboardDriverDescriptors PRODUCTID HIDDKeyboardDriverDescriptors RELEASE 1 Index of manufacturer description 2 Index of product description 3 Index of serial number description 1 One possible configuration 5 程序中的接口描述符为 Interface descriptor sizeof USBInterfaceDescriptor USBGenericDescriptor INTERFACE 0 This is interface 0 0 This is alternate setting 0 2 Two endpoints used HIDInterfaceDescriptor CLASS HIDInterfaceDescriptor SUBCLASS NONE HIDInterfaceDescriptor PROTOCOL NONE 0 No associated string descriptor 第二章第二章 HID 设备类描述符设备类描述符 HID 设备类自行定义了 3 中类描述符 分别为 HID 描述符 报告描述符和 物理描述符 一个 HID 设备只能支持一个 HID 描述符 可以支持一个或多个报 告描述符 物理描述符是可选的 这三种描述符的类型值是固定的 定义如下 define HIDGenericDescriptor HID 0 x21 define HIDGenericDescriptor REPORT 0 x22 define HIDGenericDescriptor PHYSICAL 0 x23 当插入 USB 设备后 主机会向设备请求各种描述符来识别设备 为了把一个设 备识别为 HID 类别 设备在定义描述符的时候必须遵守 HID 规范 图 2 显示了 HID 各种描述符之间的关系 图 2 HID 各种描述符之间的关系 一 一 HID 描述符描述符 HID 描述符包含 HID 的版本号信息 国家代码 报告描述符或物理描述符 的信息 包括 9 个基本字段 其中最后两个字段是可选的 具体情况如下图 3 所示 6 图 3 HID 描述符说明 程序中定义结构体如下 typedef struct unsigned char bLength unsigned char bDescriptorType 类型 HID 21H unsigned short bcdHID unsigned char bCountryCode unsigned char bNumDescriptors Number of subordinate descriptors unsigned char bDescriptorType0 Type of the first subordinate descriptor unsigned short wDescriptorLength0 Size in bytes of the first subordinate descriptor attribute packed HIDDescriptor GCC 程序中实例化的 HID 描述符如下 HID descriptor sizeof HIDDescriptor HIDGenericDescriptor HID HIDDescriptor HID1 11 0 Device is not localized no country code 1 One HID specific descriptor apart from this one 只有报表描述符 HIDGenericDescriptor REPORT 报表描述符类型 HIDDKeyboardDriverDescriptors REPORTSIZE 报表描述符长度 二 二 报表描述符报表描述符 报表描述符是 usb 中最复杂的描述符 其长度和内容不是固定不变的 而 是取决于设备报表所需要的内容和大小 它提供了 HID 设备和主机间交换数据 的格式 每种格式被成为是一个报告 如 HID 鼠标 其可以定义为鼠标移动的 7 位置 x y 和按钮的点击三种报告 主机客户软件就是通过 HID 向设备发送和 请求这些报告来与其进行交互的 报告描述符就是描述一个 HID 设备的所有数据项的集合 主机客户软件在 得到该报告描述符后 就知道如何处理 HID 设备发来的数据 以及如何向 HID 设备发送数据 报表描述符由多个描述设备信息的项目项目组成 每个项目的第一部分均有三 个区域 项目类型 项目标志 项目大小项目类型 项目标志 项目大小 项目有长项目和短项目两种形式 这里只介绍短项目 其格式如下 DatabTagbTypebSize 1 4 字节Bit4 bit7Bit2 bit3Bit0 bit1 bTag bType 和 bSize 为项目的第一个字节 data 代表项目所带的数据 数据的 长度与 bSize 有关 bSize 0 无数据 1 1 个字节数据 2 2 个字节数据 3 四个字节数据 项目类型与 bType 有关 bType 0 为 main 主数据项 1 为 global 全局数据项 2 为 local 局部数据项 1 main 项目项目 主数据项包含 5 中数据项标签 input 输入 output 输出 feature 特征 collection 集合开始 end collection 集合结束 程序中定义如下 define HIDReport INPUT 0 x80 define HIDReport OUTPUT 0 x90 define HIDReport FEATURE 0 xB0 define HIDReport COLLECTION 0 xA0 define HIDReport ENDCOLLECTION 0 xC0 又分为有数据项目和无数据项目 有数据项目在报表中建立数据区 如 input output feature collection 其余没有分配数据区 在一个报告描述符中 输入 输出和特征等主数据项标签指明了 HID 设备传输 数据的长度 数据类型等信息 缺省时其数据字节取值全为 0 1 输入 用于描述 HID 设备发送到主机的数据 主机可以通过中断 IN 传输来 接收 其数据字节的取值情况 0 8bit 与输出差不多 9 31bit 保留 2 输出 描述主机发向 HID 设备的数据 主机可以通过中断 OUT 传输或者 setReport 请求来发送 其数据字节取值情况 0 8BIT 定义如下 define HIDReport CONSTANT 1 0 define HIDReport VARIABLE 1 1 define HIDReport RELATIVE 1 2 define HIDReport WRAP 1 3 define HIDReport NONLINEAR 1 4 define HIDReport NOPREFERRED 1 5 define HIDReport NULLSTATE 1 6 define HIDReport VOLATILE 1 7 define HIDReport BUFFEREDBYTES 1 0 Start receiving output reports USBD Read HIDDKeyboardDriverDescriptors INTERRUPTOUT No argument for callback function 使端点 2 接收 OUTPUT 报表 在接收完数据之后 要执行回调函数 HIDDKeyboardDriver ReportReceived 处理接收到的数据 比如根据主机返 回的值取控制键盘 LED 如下 s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年学历类自考国际企业管理-学前儿童科学教育参考题库含答案解析(5卷)
- 2025年教师招聘之《小学教师招聘》题库高频难、易错点100题模拟试题附完整答案详解【各地真题】
- 2025年学历类自考医学心理学-学前特殊儿童教育参考题库含答案解析(5卷)
- 教师招聘之《幼儿教师招聘》从业资格考试真题附参考答案详解【综合题】
- 教师招聘之《小学教师招聘》综合提升测试卷附参考答案详解【基础题】
- 教师招聘之《小学教师招聘》试题预测试卷【a卷】附答案详解
- 2025年学历类自考内科护理学(一)-学前特殊儿童教育参考题库含答案解析(5卷)
- 2025年学历类自考公共政策学-外国文学史参考题库含答案解析(5卷)
- 2025年学历类自考儿科护理学(二)-外国文学史参考题库含答案解析(5卷)
- 2025年学历类自考儿科护理学(一)-学前儿童科学教育参考题库含答案解析(5卷)
- 中小学英语课件-Go-away-Mr-Wolf
- 二年级语文上册《有趣的动物》课件PPT
- 不干胶贴标机设计学士学位论文
- 《劳动合同书》-河南省人力资源和社会保障厅劳动关系处监制(2016.11.15)
- 钢轨检测报告
- 战略管理:概念与案例
- GB/T 3505-2009产品几何技术规范(GPS)表面结构轮廓法术语、定义及表面结构参数
- GB/T 11186.1-1989涂膜颜色的测量方法第一部分:原理
- 09S304 卫生设备安装图集
- 功能材料概论-课件
- 微纳加工课件
评论
0/150
提交评论