




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章PS2键盘接口程序设计总结2.1 PS/2键盘接口简介键盘上包含了一个大型的按键矩阵,它们是由安装在电路板上的处理器(叫做“键盘编码器”)来监视的。具体的处理器在键盘与键盘之间是多样化的,但是它们基本上都做着同样的事情:监视哪些按键被按下或释放了,并传送适当的数据到主机。如果有必要,处理器处理所有的去抖动并在它的16 字节缓冲区里缓冲数据。你的主板包含了一个“键盘控制器”,负责解码所有来自键盘的数据,并告诉你的软件什么事件发生了。在主机和键盘之间的通讯使用IBM 的协议。2.1.1 扫描码键盘的处理器花费很多的时间来扫描或监视按键矩阵。如果它发现有键被按下、释放或按住,键盘将发送“扫描码”的信息包到计算机。扫描码有两种不同的类型:“通码”和“断码”当一个键被按下或按住就发送通码;当一个键被释放就发送断码。每个按键被分配了唯一的通码和断码,这样主机通过查找唯一的扫描码就可以测定是哪个按键。每个键一整套的通断码组成了“扫描码集”。有三套标准的扫描码集分别是第一套、第二套和第三套。所有现代的键盘默认使用第二套扫描码。2.1.2 通码、断码和机打重复率只要一个键被按下,这个键的通码就被发送到计算机。记住通码只表示键盘上的一个按键,它不表示印刷在按键上的那个字符。这就意味着在通码和ASCII 码之间没有已定义的关联。直到主机把扫描码翻译成一个字符或命令。虽然多数第二套通码都只有一个字节宽,但也有少数扩展按键的通码是两字节或四字节宽。这类的通码第一个字节总是为“E0h”。正如键按下通码就被发往计算机一样,只要键一释放断码就会被发送。每个键都有它自己唯一的通码,它们也都有唯一的断码。幸运的是你不用总是通过查表来找出按键的断码。在通码和断码之间存在着必然的联系,多数第二套断码有两字节长它们的第一个字节是“F0h”, 第二个字节是这个键的通码。扩展按键的断码通常有三个字节,它们前两个字节是“E0h”,“F0h” ,最后一个字节是这个按键通码的最后一个字节。例如:通码和断码是以什么样的序列发送到你的计算机,从而使得字符“G”出现在你的字处理软件里的呢?因为这是一个大写字母,需要发生这样的事件,次序按下“Shift”键,按下“G”键,释放“G”键,释放“Shift”键,与这些时间相关的扫描码如下:“Shift”键的通码12h,“G”键的通码“34h”,“G”键的断码“F0h,34h”,“Shift”键的断码“F0h,12h”。因此发送到你的计算机的数据应该是“12h ,34h, F0h ,34h, F0h,12h”。如果你按了一个键,这个键的通码被发送到计算机,当你按下并按住这个键,则这个键就变成了机打着,就意味着键盘将一直发送这个键的通码直到它被释放或者其他键被按下。要想证实这点只要打开一个文本编辑器,并按下A 键当你首先按下这个键字符a 立刻出现在你的屏幕上在一个短暂的延迟后,接着出现一整串的a 直到你释放A 键。这里有两个重要的参数:机打延时是第一个和第二个a 之间的延迟,机打速率是在机打延时后每秒有多少字符出现你的屏幕。上机打延时的范围可以从0.25 秒到1.00 秒,机打速率的范围可以从2.0cps(字符每秒)到30.0cps。你可以用Set Typematic Rate/Delay “0xF3”命令来改变机打速率和延时。2.1.3、复位在上电或软件复位(见Reset 命令)后,键盘执行诊断自检,叫做BAT(基本保证测试)并载入如下的缺省值: 机打延迟为500ms。 机打速率为10.9cps。* 第二套扫描码集。* 置所有按键为机打/通码/断码。* 所指的项在某些键盘上时可变的,而在其他键盘上时硬件编码的不可变。当进入BAT,键盘点亮它的三个LED指示器,并在完成BAT 后关闭它们。此时,BAT完成代码要么“0xAA” BAT成功或“0xFC”有错误被发送到主机。多数键盘忽略它们的时钟和数据线直到BAT完成代码发送后。所以“抑制”条件时钟线拉低可能不能防止键盘发送它们的BAT完成代码。2.1.4、命令集每个发送到键盘的字节都从键盘获得一个0xFA(应答)的回应,唯一例外的是键盘对Resend和Echo命令的回应。在发送下一个字节给键盘之前,主机要等待“应答”。键盘应答任何命令后清除自己的输出缓冲区。下面列出了所有可能被发给键盘的命令: 0xFF (Reset)引起键盘进入Reset 模式(见复位部分)。 0xFE (Resend)用于只是在接收中出现的错误。键盘的响应就是重发送最后的扫描码或者命令回应给主机。但是0xFE绝不会作为Resend命令的回应而被发送。 *0xFD (Set Key Type Make)允许主机指定一个按键只发送通码。这个按键不发送断码或进行机打重复。指定的按键采用它的第三套扫描码。 *0xFC (Set Key Type Make/Break)类似于Set Key Type Make,只有通码和断码是使能的(机打被禁止了)。 *0xFB (Set Key Type Typematic)类似于前两条命令通码和机打是使能的,而断码被禁止。 *0xFA (Set All Keys Typematic/Make/Break)缺省设置所有键的通码、断码和机打重复都使能(除了Print Screen 键,它在第一套和第二套中没有断码)。 *0xF9 (Set All Keys Make)所有键都只发送通码;断码和机打重复被禁止。 *0xF8 (Set All Keys Make/Break)类似于前两条命令,除了机打重复被禁止外。 *0xF7 (Set All Keys Typematic)类似于前三条命令仅断码被禁止,通码和机打重复是使能的。 0xF6 (Set Default)载入缺省的机打速率/延时(10.9cps/500ms),按键类型(所有按键都使能机打/通码/断码),以及第二套扫描码集。 0xF5 (Disable)键盘停止扫描,载入缺省值键Set Default 命令,等待进一步指令。 0xF4 (Enable)在用上一条命令禁止键盘后,重新使能键盘。 0xF3 (Set Typematic Rate/Delay)主机在这条命令后会发送一个字节的参数来定义机打速率和延时,具体含义如表2.1、2.2所示。表2.1 Repeat RateBits0-4Rate(cps)Bits0-4Rate(cps)Bits0-4Rate(cps)Bits0-4Rate(cps)00h2.008h4.010h8.018h16.001h2.109h4.311h8.619h17.102h2.30Ah4.612h9.21Ah18.503h2.50Bh5.013h10.01Bh20.004h2.70Ch5.514h10.91Ch21.805h3.00Dh6.015h12.01Dh24.006h3.30Eh6.716h13.31Eh26.707h3.70Fh7.517h15.01Fh30.0表2.2 DelayBits5-6Delay(seconds)00b0.2501b0.5010b0.7511b1.00 *0xF2 (Read ID)键盘回应两个字节的设备ID,0xAB、0x83。 *0xF0 (Set Scan Code Set)主机在这个命令后发送一个字节的参数,是定键盘使用哪套扫描码集。参数字节可以是0x01、0x02或0x03分别选择扫描码集第一套、第二套或第三套。如果要获得当前正在使用的扫描码集,只要发送带0x00参数的本命令即可。 0xEE (Echo)键盘用“Echo”0xEE 回应。 0xED (Set/Reset LEDs)主机在本命令后跟随一个参数字节,用于指示键盘上Num Lock, Caps Lock,and Scroll Lock LED的状态这个参数字节的定义如下:MSB LSBAlways0Always0Always0Always0Always0Caps LockNum LockScroll LockScroll Lock - Scroll Lock LED off(0)/on(1)Num Lock - Num Lock LED off(0)/on(1)Caps Lock - Caps Lock LED off(0)/on(1)*只是最初可用于PS/2 键盘。2.1.4、初使化如下的通讯过程发生在计算机和键盘之间,当计算机启动后,前三个命令是初始化键盘控制器,后一条命令(使能Numlock LED),是由BIOS发送的,剩下来的命令是由OS Win98SE发送的。记住在计算机上这个结果是明确的,但是它只是一个一般性的概念,告诉我们启动时发生了什么。Keyboard: AA 自检通过;键盘控制器初使化Host: ED 设置/复位状态指示器Keyboard: FA 键盘应答Host: 00 关闭所有指示灯Keyboard: FA 键盘应答Host: F2 读IDKeyboard: FA 键盘应答Keyboard: AB ID的第一个字节Host: ED 设置/复位状态指示器;BIOS初使化Keyboard: FA 键盘应答Host: 02 点亮 Num Lock指示灯Keyboard: FA 键盘应答Host: F3 设置机打速率和延时;Windows初使化Keyboard: FA 键盘应答Host: 20 500 ms / 30.0 reports/secKeyboard: FA 键盘应答Host: F4 使能键盘Keyboard: FA 键盘应答Host: F3 设置机打速率和延时Keyboard: FA 键盘应答Host: 00 250 ms / 30.0 reports/secKeyboard: FA 键盘应答2.2 PS/2通讯协议PS2通讯协议是一种双向同步串行通讯协议。通讯的两端通过Clock(时钟脚)同步,并通过Data(数据脚)交换数据。任何一方如果想抑制另外一方通讯时,只需要把clock(时钟脚)拉到低电平。如果是PC机和PS2键盘间的通讯,则PC机必须做主机,也就是说,PC机可以抑制PS2键盘发送数据,而PS2键盘则不会抑制PC机发送数据, 也即主机总是在总线上有优先权。一般两设备间传输数据的最大时钟频率是33KHz,大多数PS2设备工作在1020KHz。推荐值在15KHz左右,也就是说,clock(时钟脚)高、低电平的持续时间都为40。每一数据帧包含1112个位,具体含义如表2.3所列。表2.3 PS/2通讯数据帧格式1个起始位总是逻辑08个数据位(LSB)低位在前1个奇偶校验位奇校验1个停止位总是逻辑11个应答位仅用在主机对设备的通讯中表中,如果数据位中1的个数为偶数,校验位就为1;如果数据位中1的个数为奇数,校验位就为0;总之,数据位中1的个数加上校验位中1的个数总为奇数,因此总进行奇校验。2.2.1、PS/2设备到主机的通讯时钟频率为10-16.7kHz 。从时钟脉冲的上升沿到一个数据转变的时间至少要有5 微秒。数据变化到时钟脉冲的下降沿的时间至少要有5 微秒,并且不大于25 微秒。这个定时非常重要你应该严格遵循它。主机可以在第11 个时钟脉冲停止位之前把线拉低,导致设备放弃发送当前字节,这是非常罕见的。在停止位发送后设备在发送下个包前至少应该等待50 微秒。这将给主机时间,当它处理接收到的字节时抑制发送(主机在收到每个包时通常自动做这个)。在主机释放抑制后,设备至少应该在发送任何数据前等50微秒。其通讯时序图如图2.1所示。从PS2向PC机发送一个字节可按照下面的步骤进行:1) 检测时钟线电平,如果时钟线为低,则延时50;2) 检测判断时钟信号是否为高,为高,则向下执行,为低,则转到(1);3) 检测数据线是否为高,如果为高则继续执行,如果为低,则放弃发送(此时PC机在向PS2设备发送数据,所以PS2设备要转移到接收程序处接收数据);4) 延时20(如果此时正在发送起始位,则应延时40);5) 输出起始位(0)到数据线上。这里要注意的是:在送出每一位后都要检测时钟线,以确保PC机没有抑制PS2设备,如果有则中止发送;6) 输出8个数据位到数据线上;7) 输出校验位;8) 输出停止位(1);9) 延时30(如果在发送停止位时释放时钟信号则应延时50);按如下的过程发送单个位1) 设置/复位数据2) 延迟20 微秒3) 把时钟拉低4) 延迟40 微秒5) 释放时钟6) 延迟20 微秒图2.1 设备到主机的通讯2.2.1、主机到PS/2设备的通讯首先PS/2 设备总是产生时钟信号,如果主机要发送数据它必须首先把时钟和数据线设置为请求。发送状态如下示 通过下拉时钟线至少100微秒来抑制通讯 通过下拉数据线来应用请求,发送然后释放时钟设备应该在不超过10 毫秒的间隔内就要检查这个状态。当设备检测到这个状态,它将开始产生时钟信号,并且时钟脉冲标记下输入八个数据位和一个停止位。主机仅当时钟线为低的时候改变数据线而数据在时钟脉冲的上升沿被锁存,当发生在设备到主机通讯的过程中时正好相反。在停止位发送后,设备要应答接收到的字节,就把数据线拉低并产生最后一个时钟脉冲,如果主机在第11 个时钟脉冲后不释放数据线,设备将继续产生时钟脉冲直到数据线被释放然后设备将产生一个错误。通讯时序图如图2.2、2.3所示。主机可以在第11 个时钟脉冲应答位前中止一次传送,只要下拉时钟线至少100微秒。主机必须按下面的步骤发送数据到PS/2设备1) 把时钟线拉低至少100微秒2) 把数据线拉低3) 释放时钟线4) 等待设备把时钟线拉低5) 设置/复位数据线发送第一个数据位6) 等待设备把时钟拉高7) 等待设备把时钟拉低8) 重复 5-7步发送剩下的7 个数据位和校验位9) 释放数据线10) 等待设备把数据线拉低11) 等待设备把时钟线拉低12) 等待设备释放数据线和时钟线图2.2 主机到设备的通讯图2.3 主机到设备通讯的详细过程图2.3描述了两个重要的定时条件:a和b。a在主机最初把数据线拉低后,设备开始产生时钟脉冲的时间,必须不大于15ms;b数据包被发送的时间,必须不大于2ms。如果这两个条件不满足,主机将产生一个错误。在包收到后,主机为了处理数据立刻把时钟线拉低来抑制通讯,如果主机发送的命令要求有一个回应,这个回应必须在主机释放时钟线后20ms之内被收到。如果没有收到则主机产生一个错误,在设备到主机通讯的情况中,时钟改变后的5微秒内不应该发生数据改变的情况。2.3 设计方案2.3.1、设计思想因为键盘的通码和断码存在一定的联系,断码前总为0xF0或0xE0、0xF0,而扩展键通码前总为0xE0,所以可设定两标志位,rx_released(断码标志)/rx_extended(扩展码标志),当键盘输出为断码时rx_released置位;当键盘输出为扩展码时rx_extended置位。同时再设一(rx_shift_key_on)标志位用于表示SHIFT键的状态,SHIFT键按下rx_shift_key_on置位。这样就可以通过三个标志位的状态判断出按键的状态。此外还设置一标志位(rx_data_ready),当rx_data_ready为1时表示有新的数据从键盘发送过来。当外部模块或控制器读出(输入引脚rx_read置1)数据时,rx_data_ready清零,直到有新的数据到来再置位。从键盘发送过来的字符(字符按键)在本模块中也转换成ASCII码输出。每个按键也直接输出扫描码,便于其它主机的控制。收接键盘发送过来的扫描码以及发送指令到键盘主要由一个状态机完成,当外部要对键盘发送指令时,通过输入引脚tx_data(要发送的指令)/tx_write(发送使能)/tx_write_ack(发送状态、应答)/tx_error_no_keyboard_ack(发送出错指示),可对键盘进行控制。2.3.1、接口与控制如上所述,其模块如图2.4所示。 Clock(input)系统时钟,默认为48MHz,如要改为其它频率,需要改动如下几个参数:parameter TIMER_400USEC_VALUE = 19200; /400us延时,系统时钟的计数值parameter TIMER_400USEC_BITS = 15; /400us计时,计数器位宽parameter TIMER_5USEC_VALUE = 240; /5us延时,系统时钟的计数值parameter TIMER_5USEC_BITS = 8; /5us计时,计数器位宽 reset(input)复位信号,高电平有效。复位时不会向PS/2键盘发送复位命令,只用于初使化键盘控制器。 rx_read(input)读控制器数据标志,当有新数据到来时rx_data_ready引脚将输出高电平,如果这时rx_read输入高电平时则表示数据已经读出,同时rx_data_ready引脚被清零。如果rx_read一直为低电平,该控制器也会实时输出新的数据,只不过rx_data_ready引脚将一直为高电平。 tx_data7.0(input)写指令/数据输入口,当需要对键盘进行控制时通过该输入端口写入指令。 tx_wirte(input)写指令/数据使能,高电平有效,当输入为高电平时,控制器转换到发送指令状态,将tx_data7.0的指令/数据发送到PS/2键盘;当输入为低电平时,控制器在接收状态,时刻检测键盘发送过来的扫描码。 ps2_clk(bidir)PS/2时钟线,为双向端口,外围电路需加上拉电阻。 ps2_data(bidri)PS/2数据线,为双向端口,外围电路需加上拉电阻。 rx_extende(output)扩展码标志位,当输出为扩展码时该位置位,(扩展码的通码和断码的扫描码都有0xE0,通过识别接收到的扫描码中是否有0xE0来置位或清零)。 rx_released(output)断码标志位,当输出为断码时该位置位,(所有按键的断码中都含有0xF0,通过识别接收到的扫描码中是否有0xF0来置位或清零)。 rx_shift_key_on(output)SHIFT键状态标志位,当SHIFT键按下时该标志位置位;松开时标志位清零。 rx_scan_code7.0(output)扫描码输出端口。如一个断码为“E0、F0、14”,则输出14。 rx_ascii7.0(output)ASCII码输出端口。输出的ASCII码范围是0x200x7F共96个字符;除“ESC、TAB、ENTER、BACKSPACE、DEL”及字符按键外,其它按键输出为0x2E。 rx_data_ready(output)高电平表示有新数据输出,rx_read为高电平时清零。 rx_write_ack(output)为高电平时表示指令/数据开始传输。 tx_error_no_keyboard_ack(output)为高电平时表示发送指令给键盘时键盘应答出错。图2.4 键盘控制器模块2.4 调试与测试键盘上电后就自动自测初使化到省缺状态后就能发送扫描码了,调试时用逻辑分析仪分析其输入输出波形,能有效的的提高调试效率。调试完毕完进行测试,通过调用之前调试完毕的VGA模块,再加上一个ASCII码字库,就能在显示器显示键盘输入的字符。2.4.1、调试调试过程比较顺利,吸取了PS/2鼠标接口程序同步问题的教训,由于协议相同,所以很快就通过了调试。设计之初,用逻辑分析议分析了数据通讯的一些时序。按住空格键不放,一断时间后松开按键,其时序如图2.5所示。图中的机打延时为500ms,机打速率为10.9CPS。另外上电后大约560ms后键盘自检完成,自检时三个LED点亮,自检后灭。PS/2时钟为12.5KHz,脉冲宽度为40us。程序设计后用逻辑分析仪分析输出的接口,做了一些小的调整后就调试成功。图2.5 键盘通讯时序2.4.2、测试键盘测试模块的原理是,通过VGA接口在显示器上显示输出的字符,首先利用字模软件“LcmZimo”生成一字符库,共包括94个字符,ASCII码为0x200x7E。字符格式为8*16像素,然后编写一主控制程序,通过查字库把键盘模块发送来ASCII码转换成字符图形,并发送到VGA接口,最后通过显示器显示出来。程序见“ps2_keyboard_test”。2.5 第二套键盘扫描码*所有的值都是十六进制的101 102 和104 键的键盘:KEYMAKEBREAKKEYMAKEBREAKKEYMAKEBREAKA1CF0,1C946F0,4654F0,54B32F0,320EF0,0EINSERTE0,70E0,F0,70C21F0,21-4EF0,4EHOMEE0,6CE0,F0,6CD23F0,23=55F0,55PG UPE0,7DE0,F0,7DE24F0,245DF0,5DDELETEE0,71E0,F0,71F2BF0,2BBKSP66F0,66ENDE0,69E0,F0,69G34F0,34SPACE29F0,29PG DNE0,7AE0,F0,7AH33F0,33TAB0DF0,0DU ARROWE0,75E0,F0,75I43F0,43CAPS58F0,58L ARROWE0,6BE0,F0,6BJ3BF0,3BL SHFT12F0,12D ARROWE0,72E0,F0,72K42F0,42L CTRL14F0,14R ARROWE0,74E0,F0,74L4BF0,4BL GUIE0,1FE0,F0,1FNUM77F0,77M3AF0,3AL ALT11F0,11KP /E0,4AE0,F0,4AN31F0,31R SHFT59F0,59KP *7CF0,7CO44F0,44R CTRLE0,14E0,F0,14KP -7BF0,7BP4DF0,4DR GUIE0,27E0,F0,27KP +79F0,79Q15F0,15R ALTE0,11E0,F0,11KP ENE0,5AE0,F0,5AR2DF0,2DAPPSE0,2FE0,F0,2FKP .71F0,71S1BF0,1BENTER5AF0,5AKP 070F0,70T2CF0,2CESC76F0,76KP 169F0,69U3CF0,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025河南新乡经开规划设计研究院有限公司工作人员招聘7人笔试历年参考题库附带答案详解
- 2025年保密基础知识应知应会题(附答案解析)
- 2025-2030中国卡波姆行业行情走势分析与竞争格局展望报告
- 2025-2030中国创客中心行业发展态势与投资规划研究报告
- 政治考试试题及答案大学版
- 2025-2030中国光学加工机械行业应用前景与投资风险预警报告
- 2025-2030中国偏硼酸铅行业运行现状及投资风险分析报告
- 2025-2030中国低膨胀合金市场供需现状与投资前景深度研究报告
- 2025-2030中国仿制药一致性评价市场营销优势与发展前景趋势预测报告
- 2025-2030中国二氧化碳回收市场运行态势及竞争格局走势分析报告
- TD/T 1044-2014生产项目土地复垦验收规程
- 2024北京重点校高一(下)期末数学汇编:三角函数章节综合(填空题)
- T/CAAM 0002-2022针灸临床研究不良事件记录规范
- 2025年北京市西城区中考二模英语试题(含答案)
- DL/T5210.1-2012电力建设施工质量验收及评定附表全套-
- 2025年化学专业课程期末考试试题及答案
- 消防心理测试题目及答案2024
- 魔镜洞察-数字解密 药食同源生意下最香的成分与赛道终版
- 《剖析智能穿戴设备营销》课件
- 过敏性哮喘课件
- 变电站电气安装合同
评论
0/150
提交评论