基于hid类的usb人机接口设计

基于hid类的usb人机接口设计

ID:5883109

大小:111.00 KB

页数:10页

时间:2017-12-27

基于hid类的usb人机接口设计_第1页
基于hid类的usb人机接口设计_第2页
基于hid类的usb人机接口设计_第3页
基于hid类的usb人机接口设计_第4页
基于hid类的usb人机接口设计_第5页
资源描述:

《基于hid类的usb人机接口设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于HID类的USB人机接口设计技术分类:通信 微处理器与DSP 

2、2007-12-05来源:单片机与嵌入式系统应用

3、作者:北京交通大学涂晓强周洪利   目前市场上USB设备的种类繁多,但是这些设备会有一些共同的特性,根据这些特性可以把USB设备划分为不同的类,如显示设备、通信设备、音频设备、大容量存储设备、人机接口设备(HID)。这里介绍如何实现HID类设备,以及如何在应用程序中对HID类设备进行访问。从Windows98操作系统开始,为HID类设备提供了通用的驱动程序,所以只要按照HID设备类的规范编写设备的固件程序,就能够让Windows系统自动识别设备,省去了复杂的驱动程序

4、编写过程。  1 HID协议简介  人机接口设备(HID)主要是指一些人与计算机进行交互的设备,如键盘、鼠标、游戏杆等;但是HID设备不一定非要是这些人机交互设备,只要符合HID设备级定义规范要求的都可以认为是HID设备。HID设备有以下主要特点:  ① 交换的数据存储在报告的结构内,设备必须支持HID报告格式。  ② 每笔事务可以携带小量或中量的数据。低速设备每笔事务最大为8字节,全速设备每笔最大为64字节,高速设备最大为1024字节;  ③ 有最大传输速度的限制。低速设备最快10ms一笔事务,最高速度为800B/s;全速设备最快1ms一笔事务,最高速度为64KB/s;高速设备最

5、快125μs一笔事务,最高速度为24.576MB/s。  ④ 没有传输速度的保证。  当插入USB设备后,主机会向设备请求各种描述符来识别设备。为了把一个设备识别为HID类别,设备在定义描述符的时候必须遵守HID规范。图1显示了HID各种描述符之间的关系。事实上,每个设备可以有多个接口描述符来实现多接口设备,而且每个接口描述符下应该有多个端点描述符。图1 HID各种描述符之间的关系  从图1中可以看出,除了USB标准定义的一些描述符外,HID设备还必须定义HID描述符。另外设备和主机的通信是通过报告的形式来实现的,所以还必须定义报告描述符;而物理描述符不是必需的。还有就是HID描述

6、符是关联于接口(而不是端点)的,所以设备不需要为每个端点都提供一个HID描述符。  USB设备有4种传输方式与主机进行通信:控制方式、中断方式、批量方式和同步方式。每种方式都有它的应用领域。HID只支持控制和中断传输方式。如图2所示,HID设备必须要有默认的控制管道和一个中断输入端点;中断输出端点是可选的。  图2 HID类设备使用控制和中断传输方式  中断输出传输是USB1.1规范才有的内容,且必须获得Windows系统的支持。从Windows98SE版本开始才支持中断输出传输方式,所以如果需要中断输出传输方式的设备应该选择相应的操作系统。表1列出了传输类型和相关情况。  表1 

7、HID类设备支持的传输方式传输  USB协议定义了11种请求命令,通过这些请求来获得设备的信息及对设备进行设置。HID类设备除了要支持这11种标准的请求外,还要实现以下6种特定请求:  ① Get_Report——主机用控制传输从设备接收数据,所有HID类设备都要支持这个请求;  ② Set_Report——设备用控制传输接收主机的数据,设备可以不支持此请求;③ Get_Idle——主机读取设备当前的空闲速率,设备可以不支持此请求;  ④ Set_Idle——设置闲置状态,设备可不支持此请求;  ⑤ Get_Protocol——主机获得设备的当前活动是引导协议还是报告协议;  ⑥ 

8、Set_Protocol——在引导协议和报告协议间切换,设备如果支持系统引导(如键盘和鼠标),就必须支持Get_Protocol和Set_Protocol请求。  2 HID接口固件设计与实现  该设备采用C8051F120微控制器和PDIUSBD12芯片来实现,如图3所示。  图3 HID系统结构框图  因为PDIUSBD12的主端点(Endpoint2)具有64字节的双缓冲,能够提供比较高的速度,所以在端点描述符里把它配置为中断传输方式,而Endpoint1没有使用。PDIUSBD12通过中断触发CPU来响应主机的各种请求。此系统采用的USB协议版本是1.1,所以能够支持中断输

9、出传输。为了让主机把设备识别为HID类别,定义设备接口描述符时类别这一字段的值必须设置为0x03(HID类别),这样主机就会继续请求获得设备的HID描述符和报告描述符。在主机Get_Descriptor请求中,当值字段的高位字节为0x21时,表示主机要求获得HID描述符;当值字段高字节为0x22时,就是主机要求获得报告描述符。对于报告描述符,可以参考HIDUsageTables规范。HIDDescriptorTool工具可以帮助建立和测试编写的报告描述符。这里定义了一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。