毕业设计(论文)-基于DSP与PS2键盘的通信设计.doc_第1页
毕业设计(论文)-基于DSP与PS2键盘的通信设计.doc_第2页
毕业设计(论文)-基于DSP与PS2键盘的通信设计.doc_第3页
毕业设计(论文)-基于DSP与PS2键盘的通信设计.doc_第4页
毕业设计(论文)-基于DSP与PS2键盘的通信设计.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

xx大学本科生毕业设计(论文)基于DSP与PS/2键盘的通信设计xx大学 xx学院 05信息工程 xx2009年4月目录前言5第1章 PS/2接口硬件6第1.1节 PS/2接口标准的发展过程6第1.2节 物理连接器6第1.3节 电气特性7第1.4节 PS/2协议7第1.5节 从设备到主设备的通信7第1.6节 主设备到从设备的通信9第2章 TMS320C54x的概述11第2.1节 TMS320C54x的硬件结构11第2.2节 TMS320C54x的结构特点11第3章 TMS320C54x的McBSP串口13第3.1节 McBSP串口的工作原理13第3.2节 McBSP串口的工作方式13第4章 硬件设计15第4.1节 PS/2键盘的输出接口15第4.2节 McBSP串口的工作原理15第4.3节 McBSP串口和PS/2键盘的硬件连接16第5章 软件设计18第5.1节 McBSP的初始化子程序18第5.2节 键盘扫描码转换子程序195.2.1. PS/2键盘的编码195.2.2. PS/2键盘的命令集195.2.3. 键盘扫描码195.2.4. 主机向键盘发送命令205.2.5. 键盘的扫描码转换20第5.3节 中断服务子程序20第6章 结 语23第6.1节 本系统的概述23第6.2节 本系统的不足23第6.3节 本人的心得体会23参考文献25致谢26附录27【摘要】:本文主要介绍了基于DSP与PS/2键盘的通信设计。由于在嵌入式系统中,经常使用的键盘都是专用键盘。这类键盘都是单独设计制作的,成本高,连线多,且可靠性不高。这些问题在那些要求键盘按键较多的应用系统中显得更加突出。与此相比,在PC系统中广泛使用的PS/2键盘具有价格低、通用可靠,且使用的连线少(仅使用2根信号线)的特点,并可满足多数系统的要求。因此,在嵌入式系统中应用PS/2键盘是一种很好的选择。本文在分析PS/2协议和PS/2键盘工作原理与特点的基础上,实现和PS/2键盘的硬件连接方法以及驱动程序的设计。 【关键词】:嵌入式系统、PS/2键盘、TMS320C54x DSPAbstract : This article mainly introduces the communication design which based on DSP and PS/2 keyboard. We usually use the special keyboard in the case of embedded system .This kind of keyboard is always individually designed ,with high-cost , a lot of connections and low-reliability. These problems are especially obvious in the application system which needs more keyboard keys .In contrast , the PS/2 keyboard which is widely used in PC system is cheap , general-used ,reliable and uses less connections ( using only two signal lines) ,can meet the requirements of most systems. Therefore , it is a very good choice to use PS/2 keyboard in the embedded system .This article based on the analysis of PS/2 protocol and the working principle of PS/2 keyboard ,realize the hardware connect way of PS/2 keyboard and the design of driver program.Key words:Embedded systems, PS / 2 keyboard, DSP前言随着信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。随着数字化的急速进程,DSP技术的地位也突显出来。DSP芯片的应用几乎电子与信息的每个领域,它的诞生及发展对二十多年来通信、计算机、控制等领域的发展起到十分重要的作用。如,通用数字信号处理、语音识别与处理、图形处理、仪器仪表、自动控制、医学工程、家用电器、通信等。由于DSP其处理能力强,在信号分析、数据采集等领域得到广泛使用。但是,该系列的芯片缺乏必要的人机接口支持。同时在嵌入式领域中有时需要进行大量的文字输入、参数修改和数值设定等操作。通常的处理方法是设计专门的键盘处理电路,这不仅要占用许多硬件资源,而且用于按键处理的软件开销也很大。因此,对标准键盘接口进行必要的研究,并将其用于DSP系统中,将会极大方便操作,提高工作效率。现行的主机键盘种类很多,但PS/2接口的取材广泛、性能稳定、价格低廉,具有一百多个按键,用其作为输入设备具有重要的实际意义。本文在分析PS/2协议、PS/2键盘工作原理和McBSP串口的各种工作方式的基础上,发现PS/2键盘与主机的数据交换采用了类似于同步串口的通信协议,只是没有帧同步信号。通过利用DSP的McBSP串口,当其接收数据时, PS/2接口的DATA数据线的起始位可以作为McBSP串口接收的帧同步信号; McBSP串口发送数据时, PS/2接口CLOCK时钟线可以作为McBSP串口发送的帧同步信号。从而在该系统中利用了最少的硬件资源实现了同PS/2键盘的连接。在软件上利用了McBSP串口的灵活配置并采用了串口初始化子程序、键盘中断服务子程序和键盘扫描转换子程序的方式节约了CPU的软件开销。实践证明设计的通信方法是切实可行的。第1章 PS/2接口硬件第1.1节 PS/2接口标准的发展过程随着计算机工业的发展,作为计算机最常用输入设备的键盘也日新月异。1981年IBM推出了IBMPC/XT键盘及其接口标准。该标准定义了83键,采用5脚DIN连接器和简单的串行协议。实际上,第一套键盘扫描码集并没有主机到键盘的命令。为此,1984年IBM推出了IBMAT键盘接口标准。该标准定义了84101键,采用5脚DIN连接器和双向串行通讯协议,此协议依照第二套键盘扫描码集设有8个主机到键盘的命令。到了1987年,IBM又推出了PS/2键盘接口标准。该标准仍旧定义了84101键,但是采用6脚mini-DIN连接器,该连接器在封装上更小巧,仍然用双向串行通讯协议并且提供有可选择的第三套键盘扫描码集,同时支持17个主机到键盘的命令。现在,市面上的键盘都和PS/2及AT键盘兼容,只是功能不同而已。第1.2节 物理连接器一般,具有五脚连接器的键盘称之为AT键盘,而具有六脚mini-DIN连接器的键盘则称之为PS/2键盘。其实这两种连接器都只有四个脚有意义。它们分别是Clock(时钟脚)、Data(数据脚)、+5V(电源脚)和Ground(电源地)。在PS/2键盘与PC机的物理连接上只要保证这四根线一一对应就可以了。PS/2键盘靠PC的PS/2端口提供+5V电源,另外两个脚Clock(时钟脚)和Data(数据脚)都是集电极开路的,所以必须接大阻值的上拉电阻。它们平时保持高电平,有输出时才被拉到低电平,之后自动上浮到高电平。现在比较常用的连接器如图1-1所示。图1-1 PS/2接口的mini-DIN连接器第1.3节 电气特性PS/ 2通讯协议是一种双向同步串行通讯协议。通讯的两端通过Clock(时钟脚)同步,并通过Data(数据脚)交换数据。任何一方如果想抑制另外一方通讯时,只需要把Clock(时钟脚)拉到低电平。如果是PC机和PS/2键盘间的通讯,则PC机必须做主机,也就是说, PC机可以抑制PS/ 2键盘发送数据,而PS/2键盘则不会抑制PC机发送数据。一般两设备间传输数据的最大时钟频率是33kHz,大多数PS/2设备工作在1020kHz。推荐值在15kHz左右,也就是说, Clock(时钟脚)高、低电平的持续时间都为40s。每一数据帧包含1112个位,具体含义如表1所列。表中,如果数据位中1的个数为偶数,校验位就为1;如果数据位中1的个数为奇数,校验位就为0;总之,数据位中1的个数加上校验位中1的个数总为奇数,因此总进行奇校验。第1.4节 PS/2协议PS/2协议是外设与主机之间通信的一种同步双向串行协议,在该协议中主机端拥有较高的优先级,在一定条件下它可以终止外设正在进行的发送过程。该协议采用的短帧格式传送数据的数据帧格式为:1位起始位(0 ), 8位数据位,1位奇校验位,1位停止位(1)。数据线上的数据发送时低位在前,高位在后,每一位数据的持续时间为60一100 us。在一帧数据的通信过程中主机在时钟的下降沿读取由外设发来的数据,外设在时钟的上升沿读取主机发来的数据。无论是主机端发送信息还是外设端发送信息,同步时钟都是由外设来产生,同步时钟的最大频率为33KHz,一般情况下使用10一20KHz的频率。另外需要注意的一点是外设每接收到主机发来的一帧数据,都需要紧随该帧的停止位发送一个握手位ACK(逻辑0)应答主机;然后外设还要发一帧应答数据,表示外设已完整地了主机的命令。而主机每收到外设发来的一帧数据则不需要发送这个握手位ACK,也不需要另外发送应答帧。第1.5节 从设备到主设备的通信当从设备向主设备发送数据时, 这一通信过程发生在工作人员操作外设或外设应答主机端发来的命令时DATA, CLOCK信号线空闲状态下维持高电平状态。当外设要发送信息时,它首先检测时钟线是否为高。如果时钟线不是高电平,则主机禁止外设发送,外设需把要发送的信息存储起来待总线空闲时再发送数据。如果时钟线为高,表明总线空闲,外设可以发送数据。外设发送数据的时序见图1-2,数据线在时钟的高电平时期改变状态,时钟的下降沿将数据锁定到数据线上。在时钟频率为10一33KHz的范围内,从时钟的上升沿到数据被发送至少需要5协s的时间,从数据被发送到时钟的下降沿的时间大于5us,而小于25us。图1-2外设发送数据时序图外设在时钟高电平时期将数据放到数据线上,主机在接收到时钟下降沿后到数据线上读取数据。为了更清楚地理解这一过程,将其详细步骤描述如下:(1)、 外设检测时钟线,如果时钟线为低,系统禁止外设发送;如果时钟线为高,继续。(2)、 外设检测数据线,如果数据线为低,则主机准备发送数据,外设改变状态,准备接受主机的发送信息、;如果数据线为高,继续。(3)、 外设将数据线拉低,以此作为发送起始位,5一25ws后开始产生时钟进行数据发送。(4)、 外设在发送过程中的前十个时钟周期里以固定的时间间隔定期地在时钟的高电平时期检测时钟线。如果外设发现时钟线已被主机强行拉低,则该发送过程被终止。(5)、 外设最后一次检测时钟线发生在外设产生了第LO个时钟上升沿5ws以后。(6)、 主机在时钟的下降沿到数据线上读取数据,在收到一个完整的信息后,将时钟线拉低禁止外设的下一个发送过程以便处理收到的信息。(7)、 主机释放时钟线(将时钟线置为高)表示允许下一个外设发送过程。(8)、 该通信过程中的时间参数如图1-3所示。上述时间限制有任何一个不满足,主机都将产生一个接收错误。图1-3外设发送数据时间参考图第1.6节 主设备到从设备的通信该过程发生在主机上电自检时,主机发送测试信号检测外设是否存在并判定是何种类型的外设时。在这一通信过程中,同步时钟仍然是由外设产生的,主机发送数据前要通知外设让其产生同步时钟。为了做到这一点,主机首先拉低时钟线以禁止外设的发送,该时钟低电平至少要维持60 w s;其次主机拉低数据线,以这两个低电平通知外设开始产生同步时钟;然后主机释放时钟线(不释放数据线),等待外设产生的时钟将时钟线拉低,这个低电平是第一个时钟脉冲,因为此时数据线为低,这个低电平将作为起始位被发送出去。主机在时钟的低电平时将数据放到数据线上,时钟上升沿将数据锁定在数据线上,外设在时钟上升沿后5一25 w s内采样数据线,将数据读人。这一点与外设到主机的通信过不一样的。该过程的时序关系如图1-4所示:图1-4主机发送数据时序图主机在时钟的低电平时期将数据放到数据线上,外设在发送了时钟的上升沿后到数据线上取数。为使过程易于理解,将主机的详细动作描述如下:(1)、 主机检测外设是否正处于发送过程。若正在发送且已经发送了第10个时钟,则主机必须接收外设发送的信息;若正在进行的发送过程没有超过第10个日寸钟,则主机强行通过将时钟线拉低终止该发送过程。(2)、 主机将时钟线拉低至少60ws,然后主机拉低数据线,以此低电平作为发送起始位通知外设主机有数据要发送。(3)、 主机释放时钟线(将时钟线置为高),然后等待外设将时钟线拉低。(4)、 主机根据待发数据位是0或1将数据线拉低或置高(5)、 主机等待外设将时钟线置高,时钟线被拉高后则等待外设将时钟线拉低。(6)、 重复步骤(4)一(5),直到发送完奇校验位。(7)、 主机释放数据线,该高电平即作为停止位。(8)、 主机等待外设将数据线拉了联外设发给主机的握手应答位ACK)。(9)、 主机等待外设将时钟线拉低。(10)、 主机等待外设释放时钟线和数据线。该图中尤其要注意的是主机在时钟的低电平时期将数据放在数据线上,而握手位ACK则是在时钟的高电平时期被放到数据线上的。该过程的时间参数如下图1-5所示:图1-5主机发送数据时间参考图在此过程中,任何一个时间限制不满足,主机都将终止该发送过程并产生一个错误中断。因为主机每发一个命令后都要求外设给予一个字节的应答。所以当上述主机的发送过程完成后,主机将PS/2物理端口由发送状态转换为接收状态,等待外设发来的字节应答数据。外设的这一应答起始位必须在32ms(以图1-6中主机的发送起始位为时间零点)内送到主机端,否则主机将产生一个错误中断。在主机发送的通信过程中,外设检测到主机有数据要发送时,即为主机产生同步时钟。所以这一通信过程事实上可以分割成两部分,分别由主机和外设来做。按时间可分割如图1-6所示,其中(a)部分是由主机完成的,(b)部分是由外设完成的。(a)部分表示从主机将时钟线拉低到外设开始产生时钟所需的时间,该时间不得超过15mso(b)部分是从外设发送同步时钟开始的主机的发送过程所需的时间,该时间不育亩迢过2ms。该发送过程完成后,主机将拉低时钟线禁止外设发送以便其进行一些必要的处理动作,然后主机将释放时钟线。由于主机发送的命令需要外设的应答,该应答数据必须在主机释放时钟线后的20ms内开始发送,否则主机将产生一个错误。图1-6主机发送数据时钟产生图该图中要注意主机在时钟的低电平时期将数据放在数据线上,而握手位则是在时钟的高电平时期被放到数据线上的。第2章 TMS320C54x的概述第2.1节 TMS320C54x的硬件结构TMS320C54X DSP采用先进的修正哈佛结构和8总线结构,是处理器的性能大大提高。其独立的程序和数据总线,提供了高度的并行操作,允许同时访问程序存储器和数据存储器。此外,还可以在数据总线和程序总线之间相互传递数据,从而使处理器具有在单个周期内同时执行算数运算、逻辑运算、位移操作、乘法累加运算及访问程序和数据存储器的强大功能。TMS320C54X系列DSP芯片虽然产品很多,但其系统结构基本上是系统的。它的硬件结构基本上可分三大块:(1)、 CPU 包括算术逻辑运算单元(ALU)、乘法器、累加器、位移寄存器、各种专门用途的寄存器、地址生成器及内部总线。(2)、 存储器系统 包括片内程序ROM、片内单访问的数据RAM和双访问的数据RAM、外接存储接口。(3)、 片内外设与专用硬件电路 包括片内的定时器、各种类型的串口、主机接口、片内锁相环(PLL)时钟发生器及各种控制电路。(4)、 此外,在芯片中还包含有仿真功能及其IEEE1149.1标准接口,用于芯片开发应用时的仿真。第2.2节 TMS320C54x的结构特点(1)、 改进的哈佛结构。围绕一组程序总线,三组数据总线和四组地址总线建立的哈佛结构,使得性能和多功能性都得以提高。(2)、 具有高度并行性和专用硬件逻辑的CPU设计,使芯片性能大大提高。(3)、 高度专业化指令集,更适用于快捷算法的实现和高级语言编程的优化。(4)、 模块化结构的设计,使器件得到了更快的发展。(5)、 最新的IC制造工艺,提高了芯片性能,降低了功耗。(6)、 最新的静态设计技术使得芯片具有更低的功耗和更强的辐射能力。图2-1 C54x DSP的内部硬件组成框图第3章 TMS320C54x的McBSP串口第3.1节 McBSP串口的工作原理McBSP串口的内部结构2框图如图3-1所示。他是全双工的同步串口,接收通道具有三缓冲的接收数据寄存器,发送通道具有二缓冲的数据寄存器。发送和接收通道除了完成标准同步串口的功能之外,还可以对发送和接收的数据进行率和A率压缩,字宽度可编程为8 b, 12 b, 16 b, 20 b,24 b32 b,最多每帧可以包含128个通道。发送和接收各具有独立的帧和时发生器,帧信号和时钟信号既可以来自于外部又可以来自DSP时钟信号。同时为了与外部慢速设备相接,时钟信号发生器的时钟源可以来自外部CLKS引脚。发送和接收的帧信号和时钟信号的有效极性均可编程控制。发送和接收完数据均可由程序查询或是向CPU发送中断,或是作为DMA的同步事件触发DMA传输。正因为McBSP串口具有如上的灵活性,本文利用TMS320C54x的McBSP串口实了PS/2键盘的所有功能。图3-1 MSP串口内部结构第3.2节 McBSP串口的工作方式McBSP串口可以具有如下3种工作方式:(1)、 McBSP串口可以配置成通用的输入输出口,此时发送通道或者是接收通道必须处于复位状态。也就是:SPCR1,2中的(R/X) RST位为0。同时, PCR控制寄存器中的(R/X) IOEN位为0。接受和发送通道可以单独配置。注意DR和CLKS引脚只能配置为输入口,DX引脚只能配置为输出口。(2)、 McBSP串口可以配置成标准的同步串口,有别于其他方式此时要注意控制位的配置:串口控制寄存器SPCR1中CLKSTP必须置为1xb;针控制寄存器PCR中的CLKXM位用于把McBSP串口配置成主或从方式;发送通道发送字的长度和接收通道接收字的长度必须一致;McBSP的数据延迟参数XCR2中的XDATDLY和RCR2中的RDATDLY必须为01b。(3)、 工作于多通道缓冲串口方式。发送和接收可以分别配置为多通道模式。每一帧都代表时分复用的数据流,每帧发送和接收字的个数就代表有效的通道数。每帧多达128个通道,在每一个128通道的比特流中最多可以使32条通道有效。在发送或接收完一个字或者是无效的通道时,DX引脚成高阻状态。此时接收和发送的数据延迟参数可以设计为0 b, 1 b, 2b。图3-2是发送或接收0 b, 1b, 2 b延时的时序3。本文正是利用此点来接收和发送PS/2协议特定的数据流。图3-2数据延迟时序第4章 硬件设计第4.1节 PS/2键盘的输出接口PS/2 接口有 4 根有效的连接线:2 根电源线 ,1根数据线 (DATA) ,1 根时钟线 (CLK) ,如图 4-1 所示。图4-1 PS/2接口(母头)本文采用中断方式读取键值 ,数据线接 FSX 脚 ,时钟线接 CLKR 脚。因为键盘的数据、时钟线都属于集为主设备发送数据给DSP ,所有的键值发送都使电极开路输出 ,因此在接入DSP端口时都必须接用这种方式;另一种是键盘作为从设备 ,由DSP向上拉电阻 ,如图4-2 所示。图4-2 PS/2键盘与DSP的接口第4.2节 McBSP串口的工作原理McBSP串口的内部结构2框图如图2-1所示。他是全双工的同步串口,接收通道具有三缓冲的接收数据寄存器,发送通道具有二缓冲的数据寄存器。发送和接收通道除了完成标准同步串口的功能之外,还可以对发送和接收的数据进行率和A率压缩,字宽度可编程为8 b, 12 b, 16 b, 20 b,24 b32 b,最多每帧可以包含128个通道。发送和接收各具有独立的帧和时发生器,帧信号和时钟信号既可以来自于外部又可以来自DSP时钟信号。同时为了与外部慢速设备相接,时钟信号发生器的时钟源可以来自外部CLKS引脚。发送和接收的帧信号和时钟信号的有效极性均可编程控制。发送和接收完数据均可由程序查询或是向CPU发送中断,或是作为DMA的同步事件触发DMA传输。正因为McBSP串口具有如上的灵活性,本文利用TMS320C54x的McBSP串口实了PS/2键盘的所有功能。第4.3节 McBSP串口和PS/2键盘的硬件连接鉴于键盘接收和发送的时序,本文设计的TMS320C54x的McBSP与PS/2键盘的硬件接口电路如图4-3所示。图4-3 McBSP与PS/2接口电路McBSP的发送通道由XF引脚置高来启动(DSP上电复位XF引脚就为高电平),此时, CLOCK时钟线被拉低。由软件延时100 ms以上置低XF引脚, CLOCK时钟线被置成高电平。同时FSX引脚也产生100 ms左右的一个低脉冲。由软件把FSX引脚配置为低脉冲有效,就会启动发送通道进行发送。由于发送的是12位数据,键盘仅产生12个时钟信号,所以发送通道没有数据延时(XCR2的XDATDLY为00b)。发送数据时要注意:McBSP是先发送MSB位,而键盘是先接收LSB位。McBSP的接收通道把DR引脚和FRS引脚与DATA数据线相连,这样键盘发送的起始位就可以启动McBSP的接收通道接收数据。为了避免接收通道被重复触发,与发送通道一样应该忽略以后的所有帧信号。McBSP的接收通道有2种状态。当处于主机向键盘发送命令状态时,由于DR引脚和DX引脚相连,所以先接收主机向键盘发送的12 b数据,然后接收键盘向主机回送的11 b数据。为了正确的接收,接收通道的接收字的长度应设为20 b,忽略前2位和最后1位停止位。接受数据位延时为2。当处于正常接收状态时,由于每次要接收11 b键盘发送过来的数据,而接收字的长度只能设为8 b, 12 b等,同时为了保证下一次数据的正确接收,FSR引脚必须有一个完整的下降沿。本文采用了接收字的长度为8 b,忽略起始位和数据位的LSB位,不接收停止位。这样只接收了数据字节的高7位和奇校验位,通过简单的算法完全可以确定所要接收的字节。更为简便的方法是,只需把相应的扫描码集按每个字节只取高7位和该字节的奇校验位组成一个新的字节重新确定新的扫描码集。然后,由该新的扫描码集制成检索表。第5章 软件设计本应用程序采用C语言和TMS320C54x汇编语言混合编程。与PS/2键盘通信有关的子程序包括:串口初始化子程序、键盘中断服务子程序和键盘扫描转换子程序。第5.1节 McBSP的初始化子程序McBSP是全双工的同步串口,接收通道具有三缓冲的接收数据寄存器,发送通道具有二缓冲的数据寄存器。发送和接收各具有独立的帧和时发生器,帧信号和时钟信号既可以来自于外部又可以来自DSP时钟信号。同时为了与外部慢速设备相接,时钟信号发生器的时钟源可以来自外部CLKS引脚。发送和接收的帧信号和时钟信号的有效极性均可编程控制。发送和接收完数据均可由程序查询或是向CPU发送中断,或是作为DMA的同步事件触发DMA传输。McBSP的初始化程序中,首先将发送通道配置为下降沿采样,低同步信号,此时等待发命令状态,如果发送则将接收通道配置为下降沿采样,帧同步,反则将接收通道配置为上升沿采样,帧忽略。McBSP初始化子程序流程图如图5-1所示:图5-1串口初始化流程图第5.2节 键盘扫描码转换子程序5.2.1. PS/2键盘的编码现在PC机使用的PS/2键盘都默认采用第二套扫描码集。扫描码有两种不同的类型:通码(make code)和断码(break code)。当一个键被按下或持续按住时,键盘会将该键的通码发送给主机;而当一个键被释放时,键盘会将该键的断码发送给主机。根据键盘按键扫描码的不同,在此可将按键分为如下几类:第一类按键,通码为1字节,断码为0xF0+通码形式。如A键,其通码为0x1C,断码为0xF0 0x1C。第二类按键,通码为2字节0xE0+0xXX形式,断码为0xE0+0xF0+0xXX形式。如right ctrl键,其通码为0xE0 0x14,断码为0xE0 0xF0 0x14。第三类特殊按键有两个,print screen键通码为0xE0 0x12 0xE0 0x7C,断码为0xE0 0xF0 0x7C 0xE0 0xF0 0x12; pause键通码为0x E1 0x14 0x77 0xE1 0xF0 0x14 0xF0 0x77,断码为空。5.2.2. PS/2键盘的命令集主机可以通过向PS/2键盘发送命令来对键盘进行设置或者获得键盘的状态等操作。每发送一个字节,主机都会从键盘获得一个应答0xFA(“重发resend”和“回应echo”命令例外)。下面简要介绍驱动程序在键盘初始化过程中所用的指令:0xED主机在本命令后跟随发送一个参数字节,用于指示键盘上num lock, caps lock, scroll lock led的状态;0xF3主机在这条命令后跟随发送一个字节参数来定义键盘机打的速率和延时;0xF4用于在当主机发送0xF5禁止键盘后,重新使能键盘。5.2.3. 键盘扫描码键盘上的微处理器采用行列扫描的方式来管理按键矩阵。他能识别键盘上处于正在按下的键、刚释放的键、持续按下的键3种状态下的按键,并能以数据包的形式发送给主机。该数据包称为键盘扫描码。每一个按键都有惟一的2种不同类型扫描码:接通扫描码和断开扫描码。顾名思义,按键接通时键盘发送接通扫描码,按键断开时发送断开扫描码。例如模拟PC机上的“A”是如何由键盘来发送的。按键顺序:先按住键盘上的左“Shift”键,按下“A”键,释放“A”键,释放“Shift”键。“A”键的接通扫描码为0x1C,断开扫描码为0xF0, 0x1C,左“Shift”键的接通扫描码为0x12,断开扫描码为0xF0, 0x12。则键盘发送数据顺序为:0x12, 0x1C, 0xF0, 0x1C, 0xF0, 0x12。5.2.4. 主机向键盘发送命令主机可以在任何时候发送诸如复位、设置状态灯、使能键盘、禁止键盘、设置键盘重复率、设置扫描码、读取标识码等命令。主机每向键盘发送一个字节的数据,键盘接收的令字或参数正确便以0xFA响应,否则键盘回送0xFE数据要求,请求主机重发上一个字节的数据。5.2.5. 键盘的扫描码转换由于键盘扫描码无规律可循,因此由键盘扫描码获得相应按键的键值(字符键为其ASCII值,控制键如F1, Ctrl等为自定义值),只能通过查表的方式获得7.由于按键的3种类型及部分按键对应着两个键值(如A键的键值根据C ap、和Shift键状态有0x41(A)和0x61( a)两种),因此综合考虑查表转换速度和资源消耗,设计中使用4个键盘表:键盘扫描码转换基本集和切换集(kb_plain_map NR_KEYS与kb_shift_ map NR_KEYS ) ;包含EO前缀的键盘扫描码转换基本集和切换集(kbe0_plain_map NR_KEYS与kbc0_shift_ map NR_ KEYS ).PS/ 2 104键盘按键扫描码最大值为0x83,所以设置NR_KEYS为132.所有4个键盘表的定义均为如下形式:kb_plain_map N R_KEY S=NULL_KEY; Ox2C; Ox6B; 0x69; Ox6F; 0x30; 0x39;NU LL_KEY; /扫描码Ox40-0x47/对应按键空,逗号,K,I,0,0,9,空/对应键值0x00, , , k , i , O 0 ,9,0x00如此设计键盘转换表的另一个好处在于,以后如需扩展支持有ACPI ,Windows多媒体按键键盘时,只需要将键表中相应处修改即可,如ACPIPow er按键通码为OxEO 0x37,修改kbe0_plain_map0x37= KB_ ACPI_ PWR即可。特殊按键Pause使用单独程序处理,如果接收到OxEl就转入这段程序.而Print Screen键则将其看作是两个通码分别为OxEO Ox 12和OxEO Ox7C的“虚键”的组合键处理。在驱动程序中设定如下全局变量:led_ status记录Scroll Lock Led, Num Lock Led和Caps LockLe1的状态(关为0,开为1) ; agcs_status记录左右Shift Ctrl Gui Alt状态,相应键按下则对应位为1,释放为0. E0_ FLAG接到OxEO置1; E1_FLAG接收到OxE 1置1; FO_FLAG接收到OxFO置1。按键键值通过KeyV al提供上层程序使用。第5.3节 中断服务子程序本中断子程序是通过判断FORRSV、RSVING、THREE三个标志位来判断的。如图5-2所示:在 PS/2 的串行通信协议 ,有四个部分组成:1 个起始位、8 个数据位、1 个奇校验位、1 个停止位 ,其中起始位为低电平 ,数据位先传高位 ,停止位为高电平。这儿定义了三个字节的键值缓冲区 ,5 个标志位 ,他们分别是:DATA0:按键不放单键值的通码、按键不放双键值通码的 0xE0、松键时单键值断码的0xF0、松键时双键值断码的 0xE0 (本文只考虑忪键时断码情况 ,即 0xE0 和0xF0) ,其它的数据丢弃 。DATA1:按键不放双键值通码的第二字节、松键时单键值断码的第二字节 (就是单键值的通码) 、松键时双键值断码的第二字节0xF0。DATA2:松键时上键值断码的第三个字节 (就是断码的第二个字节) 。FORRSV:标志位 ,表示第一次接收数据;第一次中断时置位 ,收到通码复位 ,收到断码最后一个字节时复位。RSVING:标志位 ,表示有多个字节要接收;收到第一个字节非通码则置位 ,收到第二个字节非 0xF0 则复位 ,收到断码最后一个字节也复位。RSVED:标志位 ,表示有一个键值被读入;收到断码最后一个字节置位 ,在主程序中复位。TWO:标志位 ,表示有第二个字节要输入。THREE:标志位 ,表示有第三个字节要输入。图5-2中断程序服务框图第6章 结 语第6.1节 本系统的概述由于在嵌入式系统中,经常使用的键盘都是专用键盘。这类键盘都是单独设计制作的,成本高,连线多,且可靠性不高。这些问题在那些要求键盘按键较多的应用系统中显得更加突出。本文在分析PS/2协议和PS/2键盘工作原理与特点的基础上,给出在上TMS320C54x DSP实现对PS/2键盘支持的硬件连接方法以及驱动程序的设计实现。通过利用最少的硬件资源实现了同PS/2键盘的连接。在软件上利用了McBSP串口的灵活配置并采用了中断的方式节约了CPU的软件开销。本文的设计方法对含有McBSP接口的DSP系统实现人机接口提供了一个可以参考的实例。第6.2节 本系统的不足本系统从设计到实现,遇到了许多困难,因为我对PS/2协议还不是太了解,虽然系统是开发出来,但仍然还有一些不足,具体如下所示:(1)、本系统虽然有理论的基础,但是没有经过实际的制作和调试。因此它还不能算是一个合格的系统。(2)、本系统软件的编写过于繁琐,中断服务子程序的设计方面还有待改进。第6.3节 本人的心得体会这个毕业设计由于是基于DSP系统设计,刚开始做项目前觉得比较难于实现,因此设计本课题前自己巩固了DSP的知识,查阅了PS/2键盘的相关资料。边学边用,在实际用的过程中遇到了困难,一时不能解决,我在网上查找相关资料,弄请楚了McBSP串口的用法后,实现技术难点就容易多了,问题就随之解决了。通过了这个项目的设计,使我项目开发方法和流程有了一个更深层的认识。之前在学校中学习的DSP技术,是理论多于实践,不知道在真正项目中如何发挥其作用的,只有真正用了才会更好的掌握,这算是我的较大收获。我在使用DSP时,对其编程语言和接口电路比较模糊,现在通过实际使用,知道了McBSP的工作原理,McBSP是全双工的同步串口,接收通道具有三缓冲的接收数据寄存器,发送通道具有二缓冲的数据寄存器。发送和接收通道除了完成标准同步串口的功能之外,还可以对发送和接收的数据进行率和A率压缩,字宽度可编程为8 b, 12 b, 16 b, 20 b,24 b32 b,最多每帧可以包含128个通道。 在这次设计系统过程中,我的自学能力得到了提高,以前对与DSP的接口设计比较薄弱,通过学习别人好的设计方法,对自己的思考方式有拓宽。在整个系统设计时,我遇到了很多困难,但通过老师的指导和同学的帮助,让我一一克服。我想在今后的人生中还会遇到各种困难,但我有信心克服。参考文献1. TMS320C54x DSP Reference Set,Volume1:CPU and Peripherals,TI公司2. TMS320C54x DSP Reference Set,Volume5:Enhanced Peripherals,TI公司3. 刘艳萍、DSP技术原理及应用教程、2005年、北京航空航天大学出版社4. 戴明桢、周建江、TMS320C54x实用教程、2004年、电子科技大学出版社5. 汪安民、TMS320C54x DSP实用技术、清华大学出版社、2002年、6. 赵红怡、DSP技术与应用实例、2003年、电子工业

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论