




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于单片机的嵌入式系统的人机接口设计基于基于 HID 的人机接口设备的设计及应用的人机接口设备的设计及应用摘摘 要要通用串行总线(USB) ,是连接计算机系统与外部设备的一个串口总线标准,也是输入输出接口的技术规范,被广泛应用于个人电脑和移动设备等信息通讯产品,并扩展至摄影器材、数字电视(机顶盒) 、游戏机等相关领域。HID(Human Interface Device)类设备是 USB 设备类型中的一种,是直接与人交互的设备,如键盘、鼠标等。HID 类设备并不一定是标准的外设类型,只要交换的数据格式存储在报文的结构中,并且设备固件支持报文的格式,则任何工作在该限制之内的设备均可称为HID 设
2、备,如电压计、温度计、读卡器等。因此,人机接口设备有巨大的应用市场。针对以上需求,本文致力于开发一个基于 HID 的人机接口设备,在上位机编写相应的应用软件,实现人机接口设备与主机的通信。本文首先阐述了开发基于 HID 的人机接口设备在经济和技术上的意义,继而描述了系统架构,基于 VC 的上位机软件开发,以及设备端固件代码的编写。文中对 USB 接口通信协议做了简要的介绍,并介绍了基于 VC 的 Windows 下 USB 接口驱动软件开发。最后,本文对在研究和开发人机接口设备工作中的不足之处和需要改进的地方进行了总结,同时也展望了低成本的人机接口设备的市场潜力和 USB 发展的美好前景。关键
3、词: HID 类 人机接口设备 USB 通信协议基于单片机的嵌入式系统的人机接口设计HID device based on HID classABSTRACTUniversal Serial Bus is a serial bus standard which connects the computer system and the peripheral equipments. It is the input output interface specification as well. It is widely used in communication products such as p
4、ersonal computers and mobile devices. It is extending to the related fields, such as Camera Equipment, Digital Television (STB), and Game Console.HID class which short for Human Interface Device, is one of the USB device class. As we know, the Typical HID device are mouse, keyboard etc. HID class de
5、vice didnt always be the standard USB device. If only the data format is contained by the report structure which is supported by the USB firmware. Then we can call all of those devices as HID device, such as Voltmeter, Thermometer, Card reader and so on. Therefore, the human interface device has a v
6、ast potential market.So as this, this project aims to develop a HID device based on HID class .To implement the communication between PC host and the device, I need to program the PC application program software etc. Firstly, this paper set forth the economic and technical importance of the HID devi
7、ce based on HID class. And then describe the system framework. Also, briefly describe the USB specification.This paper concludes the shortage during the developing. And also prospect the bright future for the low-cost HID device.Key words: HID class, HID, USB specification基于单片机的嵌入式系统的人机接口设计目 录摘 要.IA
8、BSTRACT.II1 绪 论.11.1 选题背景 .11.2 选题目标 .11.3 需求分析 .21.3.1 用户需求分析 .21.3.2 功能需求分析 .21.4 主要内容 .21.5 本章小结 .32 USB 接口技术介绍 .42.1 USB 接口技术 .42.1.1 USB 简介 .42.1.2 USB 的总线拓扑结构.4基于单片机的嵌入式系统的人机接口设计2.1.3 USB 系统分层 .52.1.4 USB 的编码方式 .62.1.5 USB 的即插即用 .72.2 USB 接口 HID 设备类 .72.2.1 HID 设备类简介 .72.2.2 HID 数据传输方式 .82.2.3
9、 HID 设备枚举过程 .82.2.4 HID 设备类描述符 .92.3 本章小结 .103 人机接口设备系统设计.113.1 系统框架 .113.2 人机接口设备平台简介 .123.2.1 USB 控制器方案 .123.2.2 ST2211U 芯片简介 .133.3 主要功能.143.4 本章小结.144 基于 VC 的 HID 上位机软件开发.154.1 Windows 驱动程序模式 .154.1.1 Windows 驱动方式 .154.1.2 WDM 驱动程序的分层结构 .154.2 USB 接口 HID 类驱动原理 .164.2.1 USB 设备驱动体系 .16基于单片机的嵌入式系统的
10、人机接口设计4.2.2 与 HID 设备通信的主要 API 函数.174.3 基于 VC 的应用程序开发 .184.3.1 开发流程.184.3.2 打开设备功能模块.194.3.3 LCD 显示功能模块 .234.3.4 键盘功能模块.234.4 本章小结.245 HID 设备软硬件设计与实现 .255.1 HID 设备系统设计 .255.2 HID 功能模块设计与实现 .255.2.1 USB HID 驱动开发 .255.2.2 LCD 驱动开发 .295.2.3 键盘驱动开发 .305.3 本章小结 .326 整机系统调试.336.1 调试流程.336.2 Bus Hound 调试工具简
11、介 .336.3 HID 设备接口通信调试 .336.4 基于 VC 的应用软件调试 .346.5 测试结果 .367 总结与展望.39参考文献.40基于单片机的嵌入式系统的人机接口设计附 录.41谢 辞.54基于单片机的嵌入式系统的人机接口设计1 绪 论1.1 选题背景随着计算机硬件飞速发展,外围设备日益增多,键盘、鼠标、调制解调器、打印机、扫描仪早已为人所共知,数码相机、MP3随身听接踵而至,这么多的设备,如何接入个人计算机?为了满足用户的需求,以Intel 为首的七家公司(Intel, Compaq, Microsoft, IBM, DEC, Northern Telecom 以及日本N
12、EC) 于1994 年11月推出了USB (Universal Serial Bus,通用串行总线)协议的第一个草案专用于低中速的计算机外设。USB可把多达127个外设同时连到用户的系统上,所有的外设通过协议来共享USB的带宽,其12Mbps的带宽对于键盘鼠标等低中速外设是完全足够的。USB允许外设在主机和其它外设工作时进行连接配置使用及移除,即所谓的即插即用(Plug & Play) 。同时USB总线的应用可以清除PC 上过多的I/O 端口,而以一个串行通道取代,使PC与外设之间的连接更容易。自从1996 年2月USB规范版本1.0 发布,随着微软在Windows 98中内置了对US
13、B接口的支持模块,加上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设备进行归类并制定了相应的设备类规范,设备类规范规定了该类设备的行为和协议。其中,人与计算机交
14、互的设备,定义为HID类设备,用于控制计算机操作的一些方面,如USB鼠标,USB键盘,USB游戏操纵杆,USB触摸板,VCR遥控等等设备。另外,使用HID设备的好处之一就是,操作系统自带了HID类的驱动程序,而用户无需去开发很麻烦的上位机驱动程序,只要直接使用API调用即可完成通信。所以很多简单的USB设备,喜欢枚举成HID设备,这样就可以不用安装驱动而直接使用。1.2 选题目标基于HID的人机接口设备的设计及应用开发包括两个方面:主机端与设备端。HID设备端,即下位机方面,采用APG8021开发平台,该平台的ST221U微控制器,内置USB控制器,支持USB全速设备(12Mbps) 。在开发
15、平台上,需要开发的驱动有USB HID驱动、键盘驱动及LCD驱动,这些是本项目的难点。主机端,即上位机方面,设备端为USB HID设备,属于用HID类设备USB的标准设备类之一,故而无需开发内核模块客户驱动程序,因为基于单片机的嵌入式系统的人机接口设计Win98之后的操作系统基本都提供了HID类驱动程序,故只需开发客户程序,调用HID类驱动程序提供的Win32 API服务,即可实现与设备端通信。本项目通过键盘与LCD显示功能,演示了设备端与主机端之间的通信。1.3 需求分析1.3.1 用户需求分析随着电脑的普及,USB 接口技术的飞速发展,使得越来越的外围设备都提供了 USB 接口。开发一个读
16、卡器、键盘、鼠标等等设备,提供 USB 接口是必不可少的。这不仅关系到用户的使用感受,也影响了产品的易用性与方便性。学习 USB 接口技术已经成为势不可挡的潮流。USB 连接的优点数不胜数,即插即用是其最大的特色,也是推动 USB 发展的重要因素之一。即插即用的特性不仅为 USB 接口赢得了声誉,更赢得了广大消费者的青睐。自微软提供了 USB 驱动以来,只要有电脑的地方,就离不开 USB 接口技术,足见其发展势头之强大。不仅如此,无线 USB 也已悄然盛行。这意味着,新的 USB 时代的即将到来。市场价值推动技术发展,为了简化 USB 总线开发流程,USB-IF 将常用的具有相同或相似功能的设
17、备归为一类,并制定了相关的设备类规范,使得不同的厂商开发的 USB 设备可以使用同样的驱动程序。本项目中的 USB HID 设备即是基于 HID 类开发的,定义此类设备则无须编写主机端的 USB 驱动程序,大大降低了开发难度。无须安装驱动这一诱人的特性,不仅增强了其在同类产品中的竞争力,也使得用户使用起来更加方便,开发基于 HID 的人机接口设备有着巨大的市场价值。1.3.2 功能需求分析(1)数据通信功能。用户在上位机端点击“打开设备”按钮,主机端进行设备配置,为下一步的数据传输做准备。(2)键盘功能。设备端的按键按下,LCD 显示相应的数值,主机端亦可读取相应的键值。(3)LCD 显示功能
18、。显示主机与设备的通信数据。1.4 主要内容基于 HID 人机接口设备的设计及应用的主要内容有:主机端的客户程序的编写;设备端各驱动模块的开发,包括 USB HID 驱动、LCD 驱动以及键盘驱动。基于单片机的嵌入式系统的人机接口设计主机端方面:客户程序是指在主机上运行的,负责与 HID 设备通信的应用程序。对于 USB 接口的 HID 设备,Win98 之后的操作系统都提供了 HID 类驱动。不需要再编写内核模式下的驱动程序,只要调用 Win32 API 来访问 HID 设备即可。设备端方面:采用 APG8021 平台,该平台的 ST2211U 8 位集成微处理器,提供了 USB控制器、Sm
19、art Card 控制器,广泛应用于读卡器等消费产品。USB HID 驱动模块定义了USB 接口的描述符,这些描述符定义了改 HID 设备的基本信息。键盘驱动模块采用行列扫描法实现了 4*5 键盘。LCD 模块则通过 ST7070 控制器来驱动 LCD 显示。USB HID 驱动的开发是本项目的重点与难点。1.5 本章小结本章主要介绍本项目的选题背景、意义,选题目标、项目需求分析以及主要内容。开发一个人机接口设备需要做很多硬件和软件的工作,包括设计人机接口设备的硬件,编写设备协议,开发设备驱动程序等等,通过这些工作我对 USB 协议的整个体系有了比较清晰的认识。基于单片机的嵌入式系统的人机接口
20、设计2 USB 接口技术介绍2.1 USB 接口技术2.1.1 USB 简介USB 是一种支持热插拔的高速串行传输总线,它使用差分信号来传输数据,最高速度可达 480Mb/S。USB 支持“总线供电”和“自供电”两种供电模式。在总线供电模式下,设备最多可以获得 500mA 的电流。USB2.0 被设计成为向下兼容的模式,当有全速(USB 1.1)或者低速(USB 1.0)设备连接到高速(USB 2.0)主机时,主机可以通过分离传输来支持它们。一条 USB 总线上,可达到的最高传输速度等级由该总线上最慢的“设备”决定,该设备包括主机、HUB 以及 USB 功能设备。2.1.2 USB 的总线拓扑
21、结构整个 USB 总线拓扑体系由三个元素组成:主机(Host) 、集线器(Hub)和设备(device) 。USB 设备是通过 USB 总线连接到 USB 主机上的。整个 USB 的物理连接是一个菊链式星型拓扑结构,如图 2-1 所示。图 2-1 USB 总线拓扑图基于单片机的嵌入式系统的人机接口设计每个 USB 的系统有且只有一个主机,它负责管理整个 USB 系统,包括 USB 设备的连接与删除、主机与 USB 设备的通信、总路线的控制等等。主机端有一个根集线器,可提供一个或多个 USB 下行端口。每个端口可以连接一个 USB 集线器或一个 USB 设备。以HOST-ROOT HUB 为起点
22、,最多支持 7 层(Tier) ,也就是说任何一个 USB 系统中最多可以允许 5 个 USB 集线器级联。一个复合设备(Compound Device)将同时占据两层或更多的层。USB 集线器是用于 USB 端口扩展的,即 USB 集线器可以将一个 USB 端口扩展为多个端口。图 2-1 中的每个功能设备(Func)就是一个 USB 设备,如 USB 键盘、USB 鼠标、USB MODEM、USB 硬盘等等。复合设备是指带一个集线器和一个或多个不可删除的 USB 设备的复合设备。一个 USB 系统可连接多达 127 个设备。理论上,一个 USB 主控制器最多可接 127 个设备,这是由数据包
23、中的 7 位地址位决定的,但是实际上不会接这么多的设备。一个 USB 主控制器可以连接多个 USB 设备,并不是直接简单的将多个设备并联或者串联,而是要由集线器负责端口扩展,才能连接更多的设备。在我们的电脑上,也有一个(或者多个,视 USB 主控制器的个数而定)集线器,它叫做根集线器,直接连在 USB 主控制器上。2.1.3 USB 系统分层为了便于理解主机和 USB 设备间的数据传输机制,图 2-2 对 USB 系统的分层结构进行了更为详细的描述。从逻辑上看,客户软件通过一组管道来与 USB 设备的功能单元进行通信;USB 系统软件和 USB 逻辑设备间的通信是通过缺省控制管道 0 来实现的
24、;所有实际的 USB 数据传输是由主机和 USB 的串行接口引擎(SIE)来完成的。各应用软件-功能设备对之间的通讯相互独立,应用软件通过 USB 设备驱动程序(USBD)发起 IRQ 请求,请求数据传输。主机控制器驱动程序(HCD)接收 IRQ 请求,并解析成为 USB 传输和传输事务(Transaction) ,并对 USB 系统中的所有传输事务进行任务排定(因为可能同时有多个应用软件发起 IRQ 请求) 。主机控制器(Host Controller)执行排定的传输任务,在同一条共享的 USB 总线上进行数据包的传输。基于单片机的嵌入式系统的人机接口设计Client SWUSB Syste
25、m SWUSB Host ControllerFunctionUSB Bus InterfaceUSB Logical Device(USBD)(HCD)BuffersEndpointsHost:Device:InterfaceSIESIEClient SWUSB System SWUSB Host ControllerFunctionUSB Bus InterfaceUSB Logical Device(USBD)(HCD)BuffersEndpointsHost:Device:InterfaceClient SWUSB System SWUSB Host ControllerFunctio
26、nUSB Bus InterfaceUSB Logical Device(USBD)(HCD)BuffersEndpointsHost:Device:InterfaceClient SWUSB System SWUSB Host ControllerFunctionUSB Bus InterfaceUSB Logical Device(USBD)(HCD)BuffersEndpointsHost:Device:Client SWUSB System SWUSB Host ControllerFunctionUSB Bus InterfaceUSB Logical Device(USBD)(HC
27、D)BuffersEndpointsClient SWUSB System SWUSB Host ControllerFunctionUSB Bus InterfaceUSB Logical Device(USBD)(HCD)BuffersEndpointsBuffersEndpointsHost:Device:InterfaceInterfaceSIESIE图 2-2 USB 系统分层2.1.4 USB 的编码方式对于一个设备而言,不仅要无误的接收主机端送来的数据,更要正确的发出响应信号,因此,在 D与 D差动数据线上就必须采用一种特别的编码方式再加以传送出去,以解决在 USB 线缆所产生信
28、号延迟及误差等问题。USB 采用 NRZI(Non return to zero invert)的编码方式,无需同步的时钟信号也能产生同步的数据存取。NRZI 的编码规则是:当数据为“1”时不转换,为“0”时再作转换。图 2-3 是 NRZI 编码的一个实例。图 2-3 NRZI 编码但是 NRZI 编码方式容易出现“塞车”现象。所以需要执行“位填塞”工作。即连续6 个“1”后填一个“0” 。因此在发送端作数据传输之前,需要先执行位填塞和 NRZI 编码,而在接收端接收数据之前,需要先执行 NRZI 译码再作位反填塞。这一部分的电路会通过USB 模块中的串行接口引擎(SIE)来实现。基于单片机
29、的嵌入式系统的人机接口设计2.1.5 USB 的即插即用USB 即插即用包括两方面,一是热插拔,一是自动配置。热插拔依赖于物理上的实现,自动配置则依赖于软件设计。USB 采用四线电缆来传输信号于电源,如图 2-4。其中 D+,D+为差分信号线,VBus 和GND 则提供了+5V 的电源。USB 正是在电缆和连接点的设计上做了处理,使得热插拔所产生的强电流可以被吸收。图 2-4 USB 电缆至于自动配置,主要是指设备在插入 HUB 下行端口后能被主机自动识别,进行信息交换。这一功能主要依赖 USB 总线枚举来实现。总线枚举的具体实现在 5.3 节。2.2 USB 接口 HID 设备类2.2.1
30、HID 设备类简介要完成一个 USB 设备的开发,仅了解 USB 协议是不够的。还需要知道 USB 设备类协议,USB 协议与 USB 设备类协议是相互补充的。为了简化 USB 总线开发流程,USB-IF 将常用的具有相同或相似功能的设备归为一类,并制定了相关的设备类规范,使得只要依照统一规范标准,不同的厂商开发的 USB 设备可以使用同样的驱动程序。所有的设备类都必须支持标准 USB 描述符和标准 USB 设备请求,如有必要,设备类还可自行定义其专用的描述符和设备请求,这分别被称为设备类定义描述符和设备类定义请求。另外,一个完整的设备类还将指明其接口和端点的使用方法,如接口所包含端点的个数、
31、端点的最大数据包长度等。USB 设备分为两大类:标准型的和非标准型的。标准型的,比如音频设备、通信设备、打印机设备、存储设备和本项目采用的 HID 设备等。而非标准型的,比如 USB/RS-232 转换器等。HID 设备属于人机交互操作的设备,它既可以是低速设备,也可以是本项目采用的全速设备。其典型的数据传输类型为中断 IN 传输,适用于主机接收 USB 设备发来的少量数据。HID 设备具有以下的功能特点:适用于传输少量到中量的数据;传输的数据是突发性基于单片机的嵌入式系统的人机接口设计的;有最大传输速度的限制;没有传输速度的保证。2.2.2 HID 数据传输方式HID 设备类仅仅支持 USB
32、4 种传输模式中的两种,即控制传输和中断传输。如表 2-1。表 2-1数据传输管道特点HID 支持程度控制管道利用控制传输方式,传输标准的请求命令数据,以及各种用于主机轮询设备时的消息数据必须支持中断输入 IN 管道利用中断传输方式,把数据从设备发送给主机必须支持中断输出 OUT 管道利用 USB 的中断传输方式,把数据从主机发送给设备可选控制传输:是 USB 中最重要的传输类型,只有执行控制传输后,才能够进一步执行其他的传输类型。这种传输主要用于发送和接收与 USB 设备配置信息有关的数据,如设置设备地址、读取设备描述符等。所有的 USB 设备必须支持控制传输,并且都将端点 0构成的管道作为
33、缺省控制管道。当设备首次连接到主机上时,就是用缺省控制管道传输USB 设备的确认信息、状态信息以及控制信息。控制传输的优先级最高。控制传输至少有两个事物阶段:建立阶段和状态阶段,在两者之间可能存在数据阶段。建立阶段,建立事物向外设的控制端点传输信息,PID 是 SETUP,数据的 PID 使用DATA0。收到 SETUP 包的外设必须接收,并向主机发送 ACK 信号;如果数据被损坏则将其丢掉,不返回 ACK 信号。控制阶段如果存在数据阶段的话,所有的数据阶段的事物必须有相同的方向,在数据阶段中要发送的数据大小和方向在建立阶段给出。控制传输的状态阶段是最后一个操作,并且其传输的方向总是与数据流的
34、方向相反,其 PID 总是DATA1。中断传输:由于 USB 不支持硬件的中断,必须靠 PC 主机周期性的轮询,以便获知是否有设备需要传送数据给 PC。由此可知,中断传输仅是一种轮询的过程,而非我们过去所认知的中断功能。轮询的周期非常的重要,太低的话,数据可能会流失,反之太高的话,会占去太多的总线带宽。对于全速装置(12Mbps)而言,仅能设定 10ms 与 255ms 的轮询间隔,如果因为错误发生传送失败的话,可以在下一个轮询期间重新再传送一次。基于单片机的嵌入式系统的人机接口设计2.2.3 HID 设备枚举过程(1)主机检测到 USB 设备插入;(2)USB 设备复位,主机使用缺省地址 0
35、,向设备发送 get_device_descriptor 请求,来得到端点 0 的 buffer 的大小;(3)主机发送 set_address 请求,分配一个地址给设备;(4)主机再次发送 get_device_descriptor 请求给设备,获取设备描述符;(5)设备发送 device descriptor 给主机;(6)主机发送 get_configuration_descriptor 请求给设备,第一次发送会得到后面所有描述符的总长度;(7)主机再次发送 get_configuration_descriptor 请求给设备;(8)设备返回后面所有的描述符,包括(配置、接口、端点描述符
36、,HID 描述符)(9)总线枚举过程结束,设备开始正常工作。2.2.4 HID 设备类描述符USB 是通用串行总线,是用来传输数据的。而描述符是为了告诉主机,设备是做什么的,实现什么功能,有哪些操作。USB 协议为 USB 设备定义了一套描述设备功能和属性的有固定结构的描述符,包括设备描述符、配置描述符、接口描述符、端点描述符、字符串描述。每个 USB 设备仅有一个设备描述符,设备描述符可以包含一个或多个配置描述符,设备的每一张配置又可以包含一个或多个接口描述符,一个接口使用几个端点,就有几个端点描述符。在 USB 主机访问 USB 设备的时候,是一级一级获取描述符的。如图 2-5所示。USB
37、 设备通过这些描述符告诉主机设备的各种属性,主机通过对这些描述符的访问对设备进行类型识别、配置,并为其提供主机端的驱动程序。基于单片机的嵌入式系统的人机接口设计设设备备描描述述符符配配置置描描述述符符接接口口描描述述符符端端点点描描述述符符HID描描述述符符报报告告描描述述符符物物理理描描述述符符设设备备描描述述符符配配置置描描述述符符接接口口描描述述符符端端点点描描述述符符HID描描述述符符报报告告描描述述符符物物理理描描述述符符图 2-5 HID 设备描述符结构图HID 设备类除了标准描述符(包括设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符)外,还有自己的专有描述符:HID
38、 描述符、报告描述符、物理描述符。正确实现 HID 设备类专用描述符是主机成功识别 HID 设备的关键。HID 描述符和报告描述符是必须要使用的,物理描述符一般不被使用。本项目具体的 HID 属性描述符将在 5.2.1节进行介绍。2.3 本章小结本章简要的介绍了 USB 及 HID 设备类的一些特性,包括 USB 总线拓扑结构、USB 的枚举过程、USB 的传输类型等。基于单片机的嵌入式系统的人机接口设计3 人机接口设备系统设计3.1 系统框架人机接口设备系统设计包括两部分:主机端的客户驱动程序设计和设备端各个模块驱动设计。系统框架如图 3-1 所示。主机端的客户程序是指在主机上运行的,负责与
39、 HID 设备通信的应用程序。主机要使用 USB HID 设备,必须要有驱动程序。HID 类驱动程序为内核模式和用户模式的程序提供了 API(应用程序接口) ,可用来编写基于 HID 类的应用程序。对于 USB 接口的 HID 设备,只需调用 Win32 API 来编写用户模式下的应用程序,即无需编写基于类驱动程序的内核模式下的客户驱动程序。设备端的 MCU 采用 ST2211U 8 位集成微处理器,该微处理器提供了 32K 字节 ROM、2K字节的 SRAM、USB 控制器、Smart Card 控制器及中断控制器等,广泛应用于 PDA,智能卡读卡器等消费产品。HID 驱动模块定义了 USB
40、 接口的描述符,包括设备描述符、配置描述符、接口描述符、端点描述符、HID 描述符及报告描述符。这些描述符定义了 HID 设备的基本信息。键盘驱动模块使用 GPIO 口中的 PA4:0为列线和 PB7:4为行线,采用行列扫描法实现 4*5 键盘驱动。LCD 模块则通过 3 线 SPI 向 ST7070 发送控制命令,并由ST7070 控制器来驱动 LCD 显示。主机端:MCU ST2211UHID类驱动客户程序USB驱动程序栈设备端:键盘模块LCD模块用户模式内核模式USB设备HID驱动主机端:MCU ST2211UHID类驱动客户程序USB驱动程序栈设备端:键盘模块LCD模块用户模式内核模式
41、USB设备HID驱动图 3-1 系统框架图基于单片机的嵌入式系统的人机接口设计3.2 人机接口设备平台简介3.2.1 USB 控制器方案本系统使用的平台是由乐毅软件科技有限公司开发的 APG8021 平台。该平台基于ST2211U 微处理器,最高主频可达 8MHz。该平台支持人机接口,提供数位键盘和高对比度的显示屏,此显示屏可显示 2 行,每行 16 个字符;采用智能电池管理,支持 2 节 AAA电池(可移除) ,电池使用寿命长达五年;支持 Smart Card 接口,能读取 IS0-7816 A,B,C(5V,3V,1.8V)级的卡,可应用于多种银行应用中,典型的有网上银行,电子商务,电话购
42、物等。图 3-2 为 APG8201 开发板平台图。图 3-2 APG8201 开发板平台图在开发一个 USB 人机接口设备的时候,首先要根据使用要求选择合适的 USB 控制器。USB 控制器选择有两种方案,一种是采用外接的 USB 接口芯片,另一种则是带 USB 接口的单片机(MCU) 。纯粹的 USB 接口芯片仅处理 USB 通信,必须有一个外部的微控制器来进行协议的处理和数据的交换。典型产品有 Philips 公司的 PDIUSBD11(I2C 接口) 、PDIUSBD12(并行接口) ,NS 公司的 USBN9603/9604(并行接口),NetChip 公司的 NET2888 等。U
43、SB 接口芯片的特点是价格便宜、接口方便、可靠性高。使用 USB 接口芯片所能实现的功能有限,只处理与 USB 相关的通信工作,而且必须由外部微控制器对其控制才能正常工作,这类芯片必须提供一个串行或并行的数据总线与微控制器进行连接,此外还需要一个中断引基于单片机的嵌入式系统的人机接口设计脚,当数据收到或发送完,这个中断引脚会发出中断请求信号。本项目采用了带 USB 接口的 ST2211U,此方案不需要外接微处理器,最大的好处是开发者对系统结构和指令集非常熟悉,相关资料丰富,易于进行开发。3.2.2 ST2211U 芯片简介ST2211U 芯片是个 8 位集成微控制器,带有硅栅 CMOS 技术。
44、真正的静态 CPU 核心、电源中断模式结合双振荡器的设计,使得 ST2211U 适合于省电且长的电池生命设计。ST2211U 芯片整合各种逻辑,以支持系统设计者所需要的片上功能。这对于系统复杂度低,尺寸小,低成本来说很重要。ST2211U 以内存访问最大达 32M 字节的容量,适合大数据量的产品为特性。为扩展ROM,SRAM 或者其他设备配置了两个芯片的选择。最大的单个设备内存占 8 个字节也是有可能的。一个 DMA 通道保证了高速数据传输的可能性与易用性。源指针及目标指针都可以指向整个带 15 位指针的内存空间及空寄存器。ST2211U 芯片有 28 个 I/O 口,分成 4 个端口,Por
45、t-A Port-D。每个针脚都可以进行输入或输入编程。有两种选择:将 Port-C 上拉或者下拉为输出,并且仅上拉其他端口为输入。一旦输出,Port-C 就有开汲式或者 CMOS 方式可以选择,其他端口仅使用 CMOS方式。当 Port-B/C/D 具有其他系统功能时,Port-A 设计成为去反弹且能触发中断的键盘扫描端口。当被分配其他功能的时候,所有的 I/O 口都可再编程。这样扩展了功能信号的灵活性。ST2211U 配置了一个 SPI 串行通信端口来满足不同的通信方式。USB 通信方式应用越来越广泛,ST2211U 以一个 PLL,一个 3.3V 稳压器,以及一个USB2.0 全速设备引
46、擎来满足市场大数据传输的需求。不仅支持固件库、Windows 驱动,还支持 HID、Smart Card 及 Mass Storage 三大类。Smart card 的接口是 ST2211U 芯片的另一个的特性。ST2211U 支持 ISO7816-3、EMV这些智能卡标准。这个接口可以使用 USB 与计算机使用 CCID 协议进行通信。ST2211U 芯片为电源管理配置了一个低电压探测器。外部电源状态可以被检测,并报告给管理软件。内置的看门狗是良好设计的必备功能。ST2211U 为有效率的开发流程配置了 ICE 调试接口。不仅具有硬件模拟器,软件模拟器也同时节省了开发者进行系统设置与编程。集
47、成了上述的功能,ST2211U 单芯片微处理器适用于读卡器、PDA、翻译器、电子记事本及其他消费性产品。基于单片机的嵌入式系统的人机接口设计3.3 主要功能应用界面模块调用了如HidD_GetHidGuid,SetupDiGetClassDevs,CreaterFile,HidD_GetAttributes 等 API 函数对人机接口设备进行枚举,枚举完成后即可对其进行读写。HID 驱动模块,编写了设备描述符、配置描述符、接口描述符、端点描述符、HID 描述符以及报告描述符。实现了 HID 设备配置过程。键盘模块,实现了 09 这 10 个数字键,以及清除键的功能。LCD 模块,实现 LCD
48、显示功能,可以清晰的显示设备与主机交流的数据,如键值等。3.4 本章小结本章描述了本项目的系统框架,并对开发平台 APG8201 进行了简要介绍,以及各个主要模块的功能描述。基于单片机的嵌入式系统的人机接口设计4 基于 VC 的 HID 上位机软件开发4.1 Windows 驱动程序模式4.1.1 Windows 驱动方式Windows 设备驱动方式主要有三类:即 VxD(虚拟设备驱动程序)、KMD(内核模式驱动程序)和 WDM(Windows 设备驱动程序模型)。VxD(Virtual X Driver),用于对各种硬件资源识别,管理、维持着系统的运作。VxD 运作在 INTEL 系列 CP
49、U 保护模式下的 RINGO,拥有对硬件的最高控制权。KMD(Kernel Mode Driver),该类驱动程序运行于 Windows NT 的 KERNEL 模式下,类似于 RING0。VxD 和 KMD 是两种不同的驱动程序,同一设备在不同的操作系统下,要分别编写驱动程序。WDM(WIN32 DRIVER MODEL)即 WIN32 设备驱动程序模型,是微软从 Windows 98 开始,推出的一个新的驱动类型,它是一个跨平台的驱动程序模型,不仅如此,WDM 驱动程序还可以在不修改源代码的情况下经过重新编译后在非 Intel 平台上运行,毫不夸张地讲,WDM 算得上是 21 世纪的驱动程
50、序框架。它旨在简化驱动程序的开发,在实现对新硬件支持的基础上,减少开发驱动程序的数量和降低驱动程序复杂性。WDM 驱动程序模型,统一驱动程序架构,实际上 WDM 驱动程序,具有 Windows NT 内核态驱动程序、Windows95 即插即用和电源管理特性。WDM 除了核心模型描述设备驱动程序的标准结构外,还为常见类型的设备实现了一个模块化的、分层次类型的总线驱动程序和类驱动程序。WDM 是一种通用的驱动模式,总线驱动程序支持通用串行总线、IEEE 1394 总线等,类驱动程序则为实现标准 Windows 功能提供条件。WDM 支持跨平台,编写的 WDM 驱动程序可以在 Windows98,
51、 Windows2000, Windows XP 下运行。4.1.2 WDM 驱动程序的分层结构WDM 体系结构实现分层处理,即设备驱动被分成了若干层,每层驱动再把 I/O 请求划分成更简单的请求,以传给下次驱动执行。最底层驱动程序在收到 I/O 请求后,通过硬件抽象层,与硬件发生作用,从而完成 I/O 请求工作。驱动程序模型如图 4-1 所示。此外,WDM 模式引入了两个新类描述硬件,一个 PDO 对应一个真实硬件,一个硬件只允许一个 PDO,但可以有多个 FDO,在驱动程序中,我们不直接操作硬件而是操作相应的 PDO 与基于单片机的嵌入式系统的人机接口设计FDO。用户应用模式Win32子系
52、统I/O管理包最高层驱动程序中间层驱动程序最低层驱动程序硬件抽象层(HAL)硬件设备用户模式内核模式用户应用模式Win32子系统I/O管理包最高层驱动程序中间层驱动程序最低层驱动程序硬件抽象层(HAL)硬件设备用户模式内核模式图 4-1 WDM 驱动程序体系结构用户模式与内核模式通讯流程是:应用程序通过 WIN32 提供的 API 调用,向 WIN32 子系统发出命令;WIN32 子系统通过标准的系统调用与内核层的 I/O 管理器通讯,将用户程序的 API 调用转换成 IRP (I/O Request Package)包;I/O 管理器将 1RP 包传递给指定的设备驱动程序;设备驱动程序再将
53、IRP 转换为相应的硬件抽象层 HAL(Hardware Abstraction Layer)调用并传递给 HAL 层,最后由 HAL 与硬件直接打交道,得到用户程序需要的数据,并沿原路通过设备驱动程序、I/O 管理器和 WIN32 子系统返回到用户程序。4.2 USB 接口 HID 类驱动原理4.2.1 USB 设备驱动体系USB 设备驱动程序是基于 WDM 的,USB 驱动程序的构成层次如图 4-2 所示。其中 USB客户驱动程序通过 Windows 系统提供的 USB 类驱动程序接口(USBDI)与下层驱动程序通信。在 USB 设备可用之前,必须对其进行配置和接口选择,然后所选择的接口的
54、各个管道才是可用的。在 USBDI 的基础上进行编程将大大简化,用户不用关心 IRP 的类型,而只需要在相应的分发例程中通过构造 USB 块并将其通过 USBDI 发送下去就可以实现对 USB设备的控制了。基于单片机的嵌入式系统的人机接口设计USB设备驱动程序USB类驱动程序(USBD)通用主机控制驱动(UHCD)TransactionTransaction主机控制器USBIRPsUSBDIHCDIUSB设备驱动程序USB类驱动程序(USBD)通用主机控制驱动(UHCD)TransactionTransaction主机控制器USBIRPsUSBDIHCDI图 4-2 USB 驱动程序的 WDM
55、 结构4.2.2 与 HID 设备通信的主要 API 函数Windows 系列操作系统都内置了 USB HID 类别驱动程序,因此不用额外开发相应的USB 类驱动和总线驱动。Windows 这个多作业系统除了协调应用程序的执行、分配内存、管理系统资源之外,同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程序达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序(Application),所以便称之为 Application Programming Interface,简称 API 函数。WIN32 API 也就是 Microso
56、ft Windows 32 位平台的应用程序编程接口。凡是在 Windows 工作环境底下执行的应用程式,都可以调用 Windows API。应用软件和 HID 设备交换数据的过程如下:在交换数据前,应用软件必须先识别该设备,并且读取它的报表信息;这些动作需要调用一堆 Windows API 函数。应用软件首先需要寻找连接到系统上的是哪些 HID 设备,然后检验每个信息,直到找到所需的属性。如果是客户化的设备,应用软件可以找到特定的厂商 ID 和产品 ID。表 3-1 是 Windows 用来与 HID 通信并交换数据的主要 API 函数。基于单片机的嵌入式系统的人机接口设计表 4-1 Win
57、dows 与 HID 通信的主要 API 函数API 函数DLL 文档用途HidD_GetHidGuidHid.dll取得 HID 类别的 GUIDSetupDiGetClassDevsSetupapi.dll传回一个设备信息群SetupDiEnumDeviceInterfacesSetupapi.dll传回设备信息群的一个设备信息SetupDiGetDeviceInterfaceDetailSetupapi.dll传回设备的路径SetupDiDestroyDeviceInfoListSetupapi.dll西方类设备所使用的资源CreatFileKernel32.dll开启设备的通信HidD
58、_GetAttributesHid.dll传回厂商的 ID 和产品 IDHidD_GetPreparsedDataHid.dll传回设备能力信息的缓冲区代号HidD_GetCapsHid.dll传回描述设备能力的结构HidD_FreePreparsedDataHid.dll释放 GetPreparseData 占用的资源WriteDataKernel32.dll发送一个输出报表给设备ReadFileKernel32.dll从设备读取一个输入报表HidD_SetFeatureHid.dll发送一个特征报表给设备HidD_GetFeatureHid.dll从设备读取一个特征报表CloseHandl
59、eKernel32.dll释放 CreateFile 所使用的资源4.3 基于 VC 的应用程序开发4.3.1 开发流程本项目的上位机程序是基于 Microsoft Visual C+ 6.0 集成开发环境完成的。其中,MFC(Microsoft Foundation Classes)是微软提供的类库,以 C+类的形式封装了Windows 的 API,并且包含了一个应用程序框架。MFC 是 Win API 与 C+的结合,是面向对象程序设计与 Application Framework 的完美结合,他将传统的 API 进行了分类封装,并且创建了程序的一般框架,大大减少了应用程序开发的工作量。用
60、户界面的工作流程如下:应用程序初始化,显示初始界面;点击打开设备按钮,即开始查找设备;若找到目标 HID 设备,则加载人机接口设备,并启动 USB 通信;若启动 LCD 显示数据功能,则向人机接口设备发送数据并显示在 LCD 上;若启动开发板键盘功能,则可获取人机接口设备上被按下的键值并返还给主机。如图 4-3 所示。基于单片机的嵌入式系统的人机接口设计开开始始应应用用程程序序初初始始化化打打开开目目标标H HI ID D设设备备启启动动U US SB B设设备备通通信信L LC CD D事事件件或或键键盘盘事事件件L LC CD D显显示示或或获获取取键键盘盘值值Y YY YN NN N结结束束图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省杭州市七县市2025年生物高二下期末监测模拟试题含解析
- 新疆阿瓦提县第四中学2025年高二下物理期末监测试题含解析
- 盐城市阜宁县高二上学期期中考试生物(必修)试题
- 车库租赁与新能源汽车推广合同
- 桉树种植基地经营权转让与租赁合同
- 仓单质押融资贷款合同模板
- 高标准仓储服务与财产担保综合合同范本
- 大宗商品采购合同运输成本控制协议
- 科技创业园区场地租赁与创业孵化合同
- 多功能车间承包经营合同标准范本
- 光伏施工安全措施方案
- 2024年贵州省遵义市仁怀市小升初数学试卷(含答案)
- 2024湖南衡阳县城市和农村建设投资有限公司招聘专业技术人员2人笔试参考题库附带答案详解
- 2025年输变电电力变压器行业市场分析现状
- 专题19 介词和介词短语(清单+专练)-中考英语一轮复习知识清单
- 2025新人教版七年级道德与法治下册教案教学设计11.3 严于律己(含反思)
- 2025年医院基建科面试题及答案
- (一模)临沂市2025届高三高考第一次模拟考试历史试卷(含标准答案)
- 2026年版广西高等职业教育考试(新职教高考)普高生专用升高职大专《职业适应性测试》模拟试卷(第1套)
- 企业营销战略咨询服务协议
- 人教版(2024)七年级下册英语Unit 7 A Day to Remember 单元教学设计(共6课时)
评论
0/150
提交评论