基于HID的人机接口设备的设计及应用本科生毕业设计.docx
- 文档编号:27567842
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:69
- 大小:499.31KB
基于HID的人机接口设备的设计及应用本科生毕业设计.docx
《基于HID的人机接口设备的设计及应用本科生毕业设计.docx》由会员分享,可在线阅读,更多相关《基于HID的人机接口设备的设计及应用本科生毕业设计.docx(69页珍藏版)》请在冰豆网上搜索。
基于HID的人机接口设备的设计及应用本科生毕业设计
基于HID的人机接口设备的设计及应用
摘要
通用串行总线(USB),是连接计算机系统与外部设备的一个串口总线标准,也是输入输出接口的技术规范,被广泛应用于个人电脑和移动设备等信息通讯产品,并扩展至摄影器材、数字电视(机顶盒)、游戏机等相关领域。
HID(HumanInterfaceDevice)类设备是USB设备类型中的一种,是直接与人交互的设备,如键盘、鼠标等。
HID类设备并不一定是标准的外设类型,只要交换的数据格式存储在报文的结构中,并且设备固件支持报文的格式,则任何工作在该限制之内的设备均可称为HID设备,如电压计、温度计、读卡器等。
因此,人机接口设备有巨大的应用市场。
针对以上需求,本文致力于开发一个基于HID的人机接口设备,在上位机编写相应的应用软件,实现人机接口设备与主机的通信。
本文首先阐述了开发基于HID的人机接口设备在经济和技术上的意义,继而描述了系统架构,基于VC的上位机软件开发,以及设备端固件代码的编写。
文中对USB接口通信协议做了简要的介绍,并介绍了基于VC的Windows下USB接口驱动软件开发。
最后,本文对在研究和开发人机接口设备工作中的不足之处和需要改进的地方进行了总结,同时也展望了低成本的人机接口设备的市场潜力和USB发展的美好前景。
关键词:
HID类人机接口设备USB通信协议
HIDdevicebasedonHIDclass
ABSTRACT
UniversalSerialBusisaserialbusstandardwhichconnectsthecomputersystemandtheperipheralequipments.Itistheinputoutputinterfacespecificationaswell.Itiswidelyusedincommunicationproductssuchaspersonalcomputersandmobiledevices.Itisextendingtotherelatedfields,suchasCameraEquipment,DigitalTelevision(STB),andGameConsole.
HIDclasswhichshortforHumanInterfaceDevice,isoneoftheUSBdeviceclass.Asweknow,theTypicalHIDdevicearemouse,keyboardetc.HIDclassdevicedidn’talwaysbethestandardUSBdevice.IfonlythedataformatiscontainedbythereportstructurewhichissupportedbytheUSBfirmware.ThenwecancallallofthosedevicesasHIDdevice,suchasVoltmeter,Thermometer,Cardreaderandsoon.Therefore,thehumaninterfacedevicehasavastpotentialmarket.
Soasthis,thisprojectaimstodevelopaHIDdevicebasedonHIDclass.ToimplementthecommunicationbetweenPChostandthedevice,IneedtoprogramthePCapplicationprogramsoftwareetc.
Firstly,thispapersetforththeeconomicandtechnicalimportanceoftheHIDdevicebasedonHIDclass.Andthendescribethesystemframework.Also,brieflydescribetheUSBspecification.
Thispaperconcludestheshortageduringthedeveloping.Andalsoprospectthebrightfutureforthelow-costHIDdevice.
Keywords:
HIDclass,HID,USBspecification
1绪论
1.1选题背景
随着计算机硬件飞速发展,外围设备日益增多,键盘、鼠标、调制解调器、打印机、扫描仪早已为人所共知,数码相机、MP3随身听接踵而至,这么多的设备,如何接入个人计算机?
为了满足用户的需求,以Intel为首的七家公司(Intel,Compaq,Microsoft,IBM,DEC,NorthernTelecom以及日本NEC)于1994年11月推出了USB(UniversalSerialBus,通用串行总线)协议的第一个草案专用于低中速的计算机外设。
USB可把多达127个外设同时连到用户的系统上,所有的外设通过协议来共享USB的带宽,其12Mbps的带宽对于键盘鼠标等低中速外设是完全足够的。
USB允许外设在主机和其它外设工作时进行连接配置使用及移除,即所谓的即插即用(Plug&Play)。
同时USB总线的应用可以清除PC上过多的I/O端口,而以一个串行通道取代,使PC与外设之间的连接更容易。
自从1996年2月USB规范版本1.0发布,随着微软在Windows98中内置了对USB接口的支持模块,加上USB设备的日渐增多,USB接口逐步走进了实用阶段。
短短几年间,USB不光成为了微机主板上的标准端口,而且还成为了所有微机外设(包括键盘、鼠标、显示器、打印机、数字相机、扫描仪和游戏柄等)与主机相连的标准协议之一。
目前USB规范的主要版本是USB1.1、USB2.0、USB2.0及USB3.0,USB2.0向下兼容USB1.1。
USB1.1规定了低速1.5Mbps和全速12Mbps两种传输速率,USB2.0又增加了高速传输,最高传输速率达到480Mbps。
USB论坛把不同的USB设备进行归类并制定了相应的设备类规范,设备类规范规定了该类设备的行为和协议。
其中,人与计算机交互的设备,定义为HID类设备,用于控制计算机操作的一些方面,如USB鼠标,USB键盘,USB游戏操纵杆,USB触摸板,VCR遥控等等设备。
另外,使用HID设备的好处之一就是,操作系统自带了HID类的驱动程序,而用户无需去开发很麻烦的上位机驱动程序,只要直接使用API调用即可完成通信。
所以很多简单的USB设备,喜欢枚举成HID设备,这样就可以不用安装驱动而直接使用。
1.2选题目标
基于HID的人机接口设备的设计及应用开发包括两个方面:
主机端与设备端。
HID设备端,即下位机方面,采用APG8021开发平台,该平台的ST221U微控制器,内置USB控制器,支持USB全速设备(12Mbps)。
在开发平台上,需要开发的驱动有USBHID驱动、键盘驱动及LCD驱动,这些是本项目的难点。
主机端,即上位机方面,设备端为USBHID设备,属于用HID类设备——USB的标准设备类之一,故而无需开发内核模块客户驱动程序,因为Win98之后的操作系统基本都提供了HID类驱动程序,故只需开发客户程序,调用HID类驱动程序提供的Win32API服务,即可实现与设备端通信。
本项目通过键盘与LCD显示功能,演示了设备端与主机端之间的通信。
1.3需求分析
1.3.1用户需求分析
随着电脑的普及,USB接口技术的飞速发展,使得越来越的外围设备都提供了USB接口。
开发一个读卡器、键盘、鼠标等等设备,提供USB接口是必不可少的。
这不仅关系到用户的使用感受,也影响了产品的易用性与方便性。
学习USB接口技术已经成为势不可挡的潮流。
USB连接的优点数不胜数,即插即用是其最大的特色,也是推动USB发展的重要因素之一。
即插即用的特性不仅为USB接口赢得了声誉,更赢得了广大消费者的青睐。
自微软提供了USB驱动以来,只要有电脑的地方,就离不开USB接口技术,足见其发展势头之强大。
不仅如此,无线USB也已悄然盛行。
这意味着,新的USB时代的即将到来。
市场价值推动技术发展,为了简化USB总线开发流程,USB-IF将常用的具有相同或相似功能的设备归为一类,并制定了相关的设备类规范,使得不同的厂商开发的USB设备可以使用同样的驱动程序。
本项目中的USBHID设备即是基于HID类开发的,定义此类设备则无须编写主机端的USB驱动程序,大大降低了开发难度。
无须安装驱动这一诱人的特性,不仅增强了其在同类产品中的竞争力,也使得用户使用起来更加方便,开发基于HID的人机接口设备有着巨大的市场价值。
1.3.2功能需求分析
(1)数据通信功能。
用户在上位机端点击“打开设备”按钮,主机端进行设备配置,为下一步的数据传输做准备。
(2)键盘功能。
设备端的按键按下,LCD显示相应的数值,主机端亦可读取相应的键值。
(3)LCD显示功能。
显示主机与设备的通信数据。
1.4主要内容
基于HID人机接口设备的设计及应用的主要内容有:
主机端的客户程序的编写;设备端各驱动模块的开发,包括USBHID驱动、LCD驱动以及键盘驱动。
主机端方面:
客户程序是指在主机上运行的,负责与HID设备通信的应用程序。
对于USB接口的HID设备,Win98之后的操作系统都提供了HID类驱动。
不需要再编写内核模式下的驱动程序,只要调用Win32API来访问HID设备即可。
设备端方面:
采用APG8021平台,该平台的ST2211U8位集成微处理器,提供了USB控制器、SmartCard控制器,广泛应用于读卡器等消费产品。
USBHID驱动模块定义了USB接口的描述符,这些描述符定义了改HID设备的基本信息。
键盘驱动模块采用行列扫描法实现了4*5键盘。
LCD模块则通过ST7070控制器来驱动LCD显示。
USBHID驱动的开发是本项目的重点与难点。
1.5本章小结
本章主要介绍本项目的选题背景、意义,选题目标、项目需求分析以及主要内容。
开发一个人机接口设备需要做很多硬件和软件的工作,包括设计人机接口设备的硬件,编写设备协议,开发设备驱动程序等等,通过这些工作我对USB协议的整个体系有了比较清晰的认识。
2USB接口技术介绍
2.1USB接口技术
2.1.1USB简介
USB是一种支持热插拔的高速串行传输总线,它使用差分信号来传输数据,最高速度可达480Mb/S。
USB支持“总线供电”和“自供电”两种供电模式。
在总线供电模式下,设备最多可以获得500mA的电流。
USB2.0被设计成为向下兼容的模式,当有全速(USB1.1)或者低速(USB1.0)设备连接到高速(USB2.0)主机时,主机可以通过分离传输来支持它们。
一条USB总线上,可达到的最高传输速度等级由该总线上最慢的“设备”决定,该设备包括主机、HUB以及USB功能设备。
2.1.2USB的总线拓扑结构
整个USB总线拓扑体系由三个元素组成:
主机(Host)、集线器(Hub)和设备(device)。
USB设备是通过USB总线连接到USB主机上的。
整个USB的物理连接是一个菊链式星型拓扑结构,如图2-1所示。
图2-1USB总线拓扑图
每个USB的系统有且只有一个主机,它负责管理整个USB系统,包括USB设备的连接与删除、主机与USB设备的通信、总路线的控制等等。
主机端有一个根集线器,可提供一个或多个USB下行端口。
每个端口可以连接一个USB集线器或一个USB设备。
以HOST-ROOTHUB为起点,最多支持7层(Tier),也就是说任何一个USB系统中最多可以允许5个USB集线器级联。
一个复合设备(CompoundDevice)将同时占据两层或更多的层。
USB集线器是用于USB端口扩展的,即USB集线器可以将一个USB端口扩展为多个端口。
图2-1中的每个功能设备(Func)就是一个USB设备,如USB键盘、USB鼠标、USBMODEM、USB硬盘等等。
复合设备是指带一个集线器和一个或多个不可删除的USB设备的复合设备。
一个USB系统可连接多达127个设备。
理论上,一个USB主控制器最多可接127个设备,这是由数据包中的7位地址位决定的,但是实际上不会接这么多的设备。
一个USB主控制器可以连接多个USB设备,并不是直接简单的将多个设备并联或者串联,而是要由集线器负责端口扩展,才能连接更多的设备。
在我们的电脑上,也有一个(或者多个,视USB主控制器的个数而定)集线器,它叫做根集线器,直接连在USB主控制器上。
2.1.3USB系统分层
为了便于理解主机和USB设备间的数据传输机制,图2-2对USB系统的分层结构进行了更为详细的描述。
从逻辑上看,客户软件通过一组管道来与USB设备的功能单元进行通信;USB系统软件和USB逻辑设备间的通信是通过缺省控制管道0来实现的;所有实际的USB数据传输是由主机和USB的串行接口引擎(SIE)来完成的。
各应用软件-功能设备对之间的通讯相互独立,应用软件通过USB设备驱动程序(USBD)发起IRQ请求,请求数据传输。
主机控制器驱动程序(HCD)接收IRQ请求,并解析成为USB传输和传输事务(Transaction),并对USB系统中的所有传输事务进行任务排定(因为可能同时有多个应用软件发起IRQ请求)。
主机控制器(HostController)执行排定的传输任务,在同一条共享的USB总线上进行数据包的传输。
图2-2USB系统分层
2.1.4USB的编码方式
对于一个设备而言,不仅要无误的接收主机端送来的数据,更要正确的发出响应信号,因此,在D+与D-差动数据线上就必须采用一种特别的编码方式再加以传送出去,以解决在USB线缆所产生信号延迟及误差等问题。
USB采用NRZI(Nonreturntozeroinvert)的编码方式,无需同步的时钟信号也能产生同步的数据存取。
NRZI的编码规则是:
当数据为“1”时不转换,为“0”时再作转换。
图2-3是NRZI编码的一个实例。
图2-3NRZI编码
但是NRZI编码方式容易出现“塞车”现象。
所以需要执行“位填塞”工作。
即连续6个“1”后填一个“0”。
因此在发送端作数据传输之前,需要先执行位填塞和NRZI编码,而在接收端接收数据之前,需要先执行NRZI译码再作位反填塞。
这一部分的电路会通过USB模块中的串行接口引擎(SIE)来实现。
2.1.5USB的即插即用
USB即插即用包括两方面,一是热插拔,一是自动配置。
热插拔依赖于物理上的实现,自动配置则依赖于软件设计。
USB采用四线电缆来传输信号于电源,如图2-4。
其中D+,D+为差分信号线,VBus和GND则提供了+5V的电源。
USB正是在电缆和连接点的设计上做了处理,使得热插拔所产生的强电流可以被吸收。
图2-4USB电缆
至于自动配置,主要是指设备在插入HUB下行端口后能被主机自动识别,进行信息交换。
这一功能主要依赖USB总线枚举来实现。
总线枚举的具体实现在5.3节。
2.2USB接口HID设备类
2.2.1HID设备类简介
要完成一个USB设备的开发,仅了解USB协议是不够的。
还需要知道USB设备类协议,USB协议与USB设备类协议是相互补充的。
为了简化USB总线开发流程,USB-IF将常用的具有相同或相似功能的设备归为一类,并制定了相关的设备类规范,使得只要依照统一规范标准,不同的厂商开发的USB设备可以使用同样的驱动程序。
所有的设备类都必须支持标准USB描述符和标准USB设备请求,如有必要,设备类还可自行定义其专用的描述符和设备请求,这分别被称为设备类定义描述符和设备类定义请求。
另外,一个完整的设备类还将指明其接口和端点的使用方法,如接口所包含端点的个数、端点的最大数据包长度等。
USB设备分为两大类:
标准型的和非标准型的。
标准型的,比如音频设备、通信设备、打印机设备、存储设备和本项目采用的HID设备等。
而非标准型的,比如USB/RS-232转换器等。
HID设备属于人机交互操作的设备,它既可以是低速设备,也可以是本项目采用的全速设备。
其典型的数据传输类型为中断IN传输,适用于主机接收USB设备发来的少量数据。
HID设备具有以下的功能特点:
适用于传输少量到中量的数据;传输的数据是突发性的;有最大传输速度的限制;没有传输速度的保证。
2.2.2HID数据传输方式
HID设备类仅仅支持USB4种传输模式中的两种,即控制传输和中断传输。
如表2-1。
表2-1
数据传输管道
特点
HID支持程度
控制管道
利用控制传输方式,传输标准的请求命令数据,以及各种用于主机轮询设备时的消息数据
必须支持
中断输入IN管道
利用中断传输方式,把数据从设备发送给主机
必须支持
中断输出OUT管道
利用USB的中断传输方式,把数据从主机发送给设备
可选
控制传输:
是USB中最重要的传输类型,只有执行控制传输后,才能够进一步执行其他的传输类型。
这种传输主要用于发送和接收与USB设备配置信息有关的数据,如设置设备地址、读取设备描述符等。
所有的USB设备必须支持控制传输,并且都将端点0构成的管道作为缺省控制管道。
当设备首次连接到主机上时,就是用缺省控制管道传输USB设备的确认信息、状态信息以及控制信息。
控制传输的优先级最高。
控制传输至少有两个事物阶段:
建立阶段和状态阶段,在两者之间可能存在数据阶段。
建立阶段,建立事物向外设的控制端点传输信息,PID是SETUP,数据的PID使用DATA0。
收到SETUP包的外设必须接收,并向主机发送ACK信号;如果数据被损坏则将其丢掉,不返回ACK信号。
控制阶段如果存在数据阶段的话,所有的数据阶段的事物必须有相同的方向,在数据阶段中要发送的数据大小和方向在建立阶段给出。
控制传输的状态阶段是最后一个操作,并且其传输的方向总是与数据流的方向相反,其PID总是DATA1。
中断传输:
由于USB不支持硬件的中断,必须靠PC主机周期性的轮询,以便获知是否有设备需要传送数据给PC。
由此可知,中断传输仅是一种轮询的过程,而非我们过去所认知的中断功能。
轮询的周期非常的重要,太低的话,数据可能会流失,反之太高的话,会占去太多的总线带宽。
对于全速装置(12Mbps)而言,仅能设定10ms与255ms的轮询间隔,如果因为错误发生传送失败的话,可以在下一个轮询期间重新再传送一次。
2.2.3HID设备枚举过程
(1)主机检测到USB设备插入;
(2)USB设备复位,主机使用缺省地址0,向设备发送get_device_descriptor请求,来得到端点0的buffer的大小;
(3)主机发送set_address请求,分配一个地址给设备;
(4)主机再次发送get_device_descriptor请求给设备,获取设备描述符;
(5)设备发送devicedescriptor给主机;
(6)主机发送get_configuration_descriptor请求给设备,第一次发送会得到后面所有描述符的总长度;
(7)主机再次发送get_configuration_descriptor请求给设备;
(8)设备返回后面所有的描述符,包括(配置、接口、端点描述符,HID描述符)
(9)总线枚举过程结束,设备开始正常工作。
2.2.4HID设备类描述符
USB是通用串行总线,是用来传输数据的。
而描述符是为了告诉主机,设备是做什么的,实现什么功能,有哪些操作。
USB协议为USB设备定义了一套描述设备功能和属性的有固定结构的描述符,包括设备描述符、配置描述符、接口描述符、端点描述符、字符串描述。
每个USB设备仅有一个设备描述符,设备描述符可以包含一个或多个配置描述符,设备的每一张配置又可以包含一个或多个接口描述符,一个接口使用几个端点,就有几个端点描述符。
在USB主机访问USB设备的时候,是一级一级获取描述符的。
如图2-5所示。
USB设备通过这些描述符告诉主机设备的各种属性,主机通过对这些描述符的访问对设备进行类型识别、配置,并为其提供主机端的驱动程序。
图2-5HID设备描述符结构图
HID设备类除了标准描述符(包括设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符)外,还有自己的专有描述符:
HID描述符、报告描述符、物理描述符。
正确实现HID设备类专用描述符是主机成功识别HID设备的关键。
HID描述符和报告描述符是必须要使用的,物理描述符一般不被使用。
本项目具体的HID属性描述符将在5.2.1节进行介绍。
2.3本章小结
本章简要的介绍了USB及HID设备类的一些特性,包括USB总线拓扑结构、USB的枚举过程、USB的传输类型等。
3人机接口设备系统设计
3.1系统框架
人机接口设备系统设计包括两部分:
主机端的客户驱动程序设计和设备端各个模块驱动设计。
系统框架如图3-1所示。
主机端的客户程序是指在主机上运行的,负责与HID设备通信的应用程序。
主机要使用USBHID设备,必须要有驱动程序。
HID类驱动程序为内核模式和用户模式的程序提供了API(应用程序接口),可用来编写基于HID类的应用程序。
对于USB接口的HID设备,只需调用Win32API来编写用户模式下的应用程序,即无需编写基于类驱动程序的内核模式下的客户驱动程序。
设备端的MCU采用ST2211U8位集成微处理器,该微处理器提供了32K字节ROM、2K字节的SRAM、USB控制器、SmartCard控制器及中断控制器等,广泛应用于PDA,智能卡读卡器等消费产品。
HID驱动模块定义了USB接口的描述符,包括设备描述符、配置描述符、接口描述符、端点描述符、HID描述符及报告描述符。
这些描述符定义了HID设备的基本信息。
键盘驱动模块使用GPIO口中的PA[4:
0]为列线和PB[7:
4]为行线,采用行列扫描法实现4*5键盘驱动。
LCD模块则通过3线SPI向ST7070发送控制命令,并由ST7070控制器来驱动LCD显示。
图3-1系统框架图
3.2人机接口设备平台简介
3.2.1USB控制器方案
本系统使用的平台是由乐毅软件科技有限公司开发的APG8021平台。
该平台基于ST2211U微处理器,最高主频可达8MHz。
该平台支持人机接口,提供数位键盘和高对比度的显示屏,此显示屏可显示2行,每行16个字符;采用智能电池管理,支持2节AAA电池(可移除),电池使用寿命长达五年;支持SmartCard接口,能读取IS0-7816A,B,C(5V,3V,1.8V)级的卡,可应用于多种银行应用中,典型的有网上银行,电子商务,电话购物等。
图3-2为APG8201开发板平台图。
图3-2APG8201开发板平台图
在开发一个USB人机接口设备的时候,首先要根据使用要求选择合适的USB控制器。
USB控制器选择有两种方案,一种是采用外接的USB接口芯片,另一种则是带USB接口的单片机(MCU)。
纯粹的USB接口芯片仅处理USB通信,必须有一个外部的微控制器来进行协议的处理和数据的交换。
典型产品有Philips公司的PDIUSBD11(I2C接口)、PDIUSBD12(并行接口)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 HID 人机 接口 设备 设计 应用 本科生 毕业设计