




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PS2键盘与鼠标的接口定义针脚定义:原理 PS/2鼠标接口采用一种双向同步串行协议即每在时钟线上发一个脉冲,就在数据线上发送一位数据在相互传输中,主机拥有总线控制权,即它可以在任何时候抑制鼠标的发送方法是把时钟线一直拉低,鼠标就不能产生时钟信号和发送数据在两个方向的传输中,时钟信号都是由鼠标产生,即主机不产生通信时钟信号 如果主机要发送数据,它必须控制鼠标产生时钟信号方法如下:主机首先下拉时钟线至少100s抑制通信,然后再下拉数据线,最后释放时钟线通过这一时序控制鼠标产生时钟信号当鼠标检测到这个时序状态,会在10ms内产生时钟信号如图3中 A 时序段主机和鼠标之间,传输数据帧的时序如图2图3所示2.2 数据包结构在主机程序中,利用每个数据位的时钟脉冲触发中断,在中断例程中实现数据位的判断和接收在实验过程中,通过合适的编程,能够正确控制并接收鼠标数据但该方案有一点不足,由于每个CLOCK都要产生一次中断,中断频繁,需要耗用大量的主机资源 PS/2鼠标的四种工作模式是:Reset模式,当鼠标上电或主机发复位命令 0xFF给它时进入这种模式;Stream模式鼠标的默认模式,当鼠标上电或复位完成后,自动进入此模式,鼠标基本上以此模式工作;Remote模式,只有在主机发送了模式设置命令 0xF0后,鼠标才进入这种模式;Wrap模式,这种模式只用于测试鼠标与主机连接是否正确 PS/2鼠标在工作过程中,会及时把它的状态数据发送给主机发送的数据包格式如表1所示 Byte1中的Bit0Bit1Bit2分别表示左右中键的状态,状态值0表示释放,1表示按下Byte2和Byte3分别表示X轴和Y轴方向的移动计量值,是二进制补码值Byte4的低四位表示滚轮的移动计量值,也是二进制补码值,高四位作为扩展符号位这种数据包由带滚轮的三键三维鼠标产生若是不带滚轮的三键鼠标,产生的数据包没有Byte4 其余的相同一.PS/2 鼠标键盘协议 PC 键盘可以有6 脚的mini-DIN 或5 脚的DIN 连接器如果你的键盘是6 脚的mini-DIN 而你的计算机是5 脚的DIN 或者相反这两类连接器可以用上面提到的适配器来兼容具有6 脚mini-DIN 的键盘通常被叫做PS/2 键盘而那些有5 脚DIN 叫做AT 设备XT 键盘也使用5 脚DIN 但它们非常古老并且多年前就不生产了所有现代的为PC 建造的键盘不是PS/2,AT 就是USB 的这篇文章不适用于USB 设备它们使用了一种完全不同的接口。每种连接器的引脚定义如下所示 在刚才提到连接器上有四个有趣的管脚电源地5V 数据和时钟host 计算机提供5V 并且键盘/鼠标的地连接到host 的电源地上数据和时钟都是集电极开路的这就意味着它们通常保持高电平而且很容易下拉到地逻辑0 任何你连接到PS/2 鼠标键盘或host 的设备在时钟和数据线上要PS/2 技术参考 著Adam Chapweske 译Roy Show第4 页共4 页 02-11-22发布有一个大的上拉电阻置0 就把线拉低置1 就让线上浮成高电平参考图1 中数据和时钟线的一般接口结构注意如果你打算使用象PIC 这样的微控制器由于它们的I/O 管脚是双向的你可以跳过晶体管和缓冲门并且通用同一个管脚进行输入和输出在这种组态情况下要设置管脚为输入就写入1 使得电阻上拉线上的电平要改变管脚为输出就写入0 到那个管脚把线路下拉到地。) PS/2 鼠标和键盘履行一种双向同步串行协议。换句话说每次数据线上发送一位数据并且每在时钟线上发一个脉冲就被读入。键盘/鼠标可以发送数据到主机,而主机也可以发送数据到设备,但主机总是在总线上有优先权,它可以在任何时候抑制来自于键盘/鼠标的通讯,只要把时钟拉低即可。 从键盘/鼠标发送到主机的数据在时钟信号的下降沿当时钟从高变到低的时候被读取从主机发送到键盘/鼠标的数据在上升沿(当时钟从低变到高的时候)被读取;不管通讯的方向怎样键盘/鼠标总是产生时钟信号如果主机要发送数据它必须首先告诉设备开始产生时钟信号这个过程在下一章节中被描述)。最大的时钟频率是33kHz ,而且大多数设备工作在10 20kHz 。如果你要制作一个PS/2 设备。我推荐你把频率控制在15kHz 左右。这就意味着时钟应该是高40 微秒低40 微秒。 所有数据安排在字节中,每个字节为一帧,包含了11-12 个位。这些位的含义如下: 如果数据位中包含偶数个1,校验位就会置1;如果数据位中包含奇数个1, 校验位就会置0 。数据位中1 的个数加上校验位总为奇数(这就是奇校验)这是用来错误检测。 当主机发送数据给键盘/鼠标时,设备回送一个握手信号来应答数据包已经收到。这个位不会出现在设备发送数据到主机的过程中。 设备到主机的通讯过程: 数据和时钟线都是集电极开路结构(正常保持高电平)。当键盘或鼠标等待发送数据时,它首先检查时钟以确认它是否是高电平。如果不是,那么是主机抑制了通讯,设备必须缓冲任何要发送的数据直到重新获得总线的控制权(键盘有16 字节的缓冲区而鼠标的缓冲区仅存储最后一个要发送的数据包)。如果时钟线是高电平,设备就可以开始传送数据。 如我在上一节提及的,键盘和鼠标使用一种每帧包含11 位的串行协议。这些位含义是: 1 start bit. This is always 0. 1 个起始位总是为0 8 data bits, least significant bit first. 8 个数据位低位在前 1 parity bit (odd parity). 1 个校验位奇校验 1 stop bit. This is always 1. 1 个停止位总是为1 每位在时钟的下降沿被主机读入,如图2 和3 所示 时钟频率为10 16.7kHz。从时钟脉冲的上升沿到一个数据转变的时间至少要有5 微秒。数据变化到时钟脉冲的下降沿的时间至少要有5 微秒并且不大于25 微秒。这个定时非常重要你应该严格遵循它。主机可以在第11 个时钟脉冲(停止位)之前把线拉低,导致设备放弃发送当前字节(这是非常罕见的)。在停止位发送后,设备在发送下个包前至少应该等待50 毫秒。这将给主机时间当它处理接收到的字节时抑制发送(主机在收到每个包时,通常自动做这个)。在主机释放抑制后,设备至少应该在发送任何数据前等50 毫秒。我推荐下面的过程发送一个单一字节从仿真键盘/鼠标到主机:1) 等待Clock = high2) 延时 50 微秒3) Clock s 仍旧为 high? No到第1 步4) Data = high? No放弃 (并且从主机读取字节)5) 延迟 20 毫秒 (=40 微秒 to the time Clock is pulled low in sending the start bit.)6) 输出起始位 (0) / 在发送所有这些位的每一位后7) 输出 8 个数据位 测试时钟确认主机是否把它拉低了8) 输出校验位 / 这说明主机要放弃这次10) 延迟30 毫秒 (=50 微秒 from the tim传送9) 输出停止位 (1) e Clock is released in sending the stop bit)按如下的过程发送单个位:1) Set/Reset Data2) Delay 20 microseconds3) Bring Clock low4) Delay 40 microseconds5) Release Clock6) Delay 20 microseconds1) 设置/复位数据2) 延迟20 微秒3) 把时钟拉低4) 延迟40 微秒5) 释放时钟6) 延迟20 微秒 主机到设备的通讯 被发送的包有点不同于主机到设备通讯过程。首先,PS/2 设备总是产生时钟信号。如果主机要发送数据,它必须首先把时钟和数据线设置为请求发送状态,如下示: 通过下拉时钟线至少100 微秒来抑制通讯。 通过下拉数据线来应用请求发送,然后释放时钟。 设备应该在不超过10 毫秒的间隔内就要检查这个状态。当设备检测到这个状态,它将开始产生时钟信号,并且时钟脉冲标记下输入八个数据位和一个停止位。主机仅当时钟线为低的时候改变数据线,而数据在时钟脉冲的上升沿被锁存。这在发生在设备到主机通讯的过程中正好相反。 在停止位发送后,设备要应答接收到的字节,就把数据线拉低并产生最后一个时钟脉冲。如果主机在第11 个时钟脉冲后不释放数据线,设备将继续产生时钟脉冲直到数据线被释放(然后设备将产生一个错误)。 主机可以在第11 个时钟脉冲(应答位)前中止一次传送,只要下拉时钟线至少100 微秒。 要使得这个过程易于理解,主机必须按下面的步骤发送数据到PS/2 设备:1) 把时钟线拉低至少100 微秒2) 把数据线拉低3) 释放数据线4) 等待设备把时钟线拉低5) 设置/复位数据线发送第一个数据位6) 等待设备把时钟拉高7) 等待设备把时钟拉低8) 重复 5-7 步 发送剩下的7 个数据位和校验位9) 释放数据线10) 等待设备把数据线拉低11) 等待设备把时钟线拉低12) 等待设备释放数据线和时钟线 图3 用图形表示图4 以单独的时序表示了由主机产生的信号。及由PS/2 设备产生的信号。注意应答位时序的改变-数据改变发生在时钟线为高的时候(不同于其它11 位是当它为低的时候)。 图4 描述了两个重要的定时条件:a 和b 。a 在主机最初把书记现拉低后,设备开始产生时钟脉冲的时间,必须步大于15ms ;b 数据包被发送的时间必须不大于2ms 。如果这两个条件不满足,主机将产生一个错误。在包收到后,主机为了处理数据立刻把时钟线拉低来抑制通讯。如果主机发送的命令要求有一个回应,这个回应必须在书籍释放时钟线后20ms 之内被收到。如果没有收到,则主机产生一个错误。在设备到主机通讯的情况中,时钟改变后的5 微秒内不应该发生数据改变的情况。 如果呢要仿真一个鼠标或键盘,我推荐你按如下的过程从主机读入数据; 在你的主程序中,至少每10 毫秒检测数据线是否为低。 如果数据线已被主机拉低,则从主机读取一个字节。1) 等待时钟线为高2) 数据线仍然为低吗不-有错误发生;放弃。3) 读入8 个数据位 / 在读入这些位后4) 读入校验位 测试时钟线数否被主机拉低5) 读入停止位 / 这就意味着放弃这次传送6) 数据线仍旧为0 吗?是保持时钟直到数据=1 然后产生一个错误7) 输出应答位8) 检查校验位如果校验位不正确则产生一个错误9) 延迟45 微秒(给主机时间抑制下次的传送)按如下次序读取每位(8 个数据位检验位和停止位):1) 延迟 20 微秒2) 把时钟拉低3) 延迟 40 微秒4) 释放时钟5) 延迟20 微秒7) 读数据线按如下次序发送应答位:1) 延迟15 微秒2) 把数据线拉低3) 延迟5 微秒4) 把时钟线拉低5) 延迟40 微秒6) 释放时钟线7) 延迟5 微秒8) 释放数据线PS2接口协议及代码分析 (2011-10-14 12:23:40)转载标签:ps2通信ps2协议it分类:嵌入式一.电气特性1DATAKey Data2n/cNot connected3GNDGnd4VCCPower , +5 VDC5CLKClock6n/cNot connected二.数据格式1个起始位总是逻辑08个数据位(LSB)低位在前1个奇偶校验位奇校验1个停止位总是逻辑11个应答位仅用在主机对设备的通讯中表中,如果数据位中的个数为偶数,校验位就为;如果数据位中的个数为奇数,校验位就为;总之,数据位中的个数加上校验位中的个数总为奇数,因此总进行奇校验。ps2设备的clock和data都是集电极开路的,平时都是高电平。当ps2设备等待发送数据时,它首先检查clock是否为高。如果为低,则认为PC抑制了通讯,此时它缓冲数据直到获得总线的控制权。如果clock为高电平,ps2则开始向PC发送数据。一般都是由ps2设备产生时钟信号。发送按帧格式。数据位在clock为高电平时准备好,在clock下降沿被PC读入。数据从键盘/鼠标发送到主机或从主机发送到键盘/鼠标,时钟都是PS2设备产生.主机对时钟控制有优先权,即主机想发送控制指令给PS2设备时,可以拉低时钟线至少100S,然后再下拉数据线,最后释放时钟线为高。PS2设备的时钟线和数据线都是集电极开路的,容易实现拉低电平。PC在时钟的下降沿读取数据.PS: ps2协议是现在大多数鼠标,键盘与PC通讯的标准协议,鼠标的通讯更为简单些,只是传送的数据内容不一样而已。三.数据发送时序键盘接口时序(a) 键盘发送时序;(b) 键盘接收时序从向机发送一个字节可按照下面的步骤进行:()检测时钟线电平,如果时钟线为低,则延时;()检测判断时钟信号是否为高,为高,则向下执行,为低,则转到();()检测数据线是否为高,如果为高则继续执行,如果为低,则放弃发送(此时机在向 设备发送数据,所以设备要转移到接收程序处接收数据);()延时(如果此时正在发送起始位,则应延时);()输出起始位()到数据线上。这里要注意的是:在送出每一位后都要检测时钟线,以确保机没有抑制设备,如果有则中止发送;()输出个数据位到数据线上;()输出校验位;()输出停止位();()延时(如果在发送停止位时释放时钟信号则应延时);通过以下步骤可发送单个位:()准备数据位(将需要发送的数据位放到数据线上);()延时;()把时钟线拉低;()延时;()释放时钟线;()延时。设备从机接收一个字节由于设备能提供串行同步时钟,因此,如果机发送数据,则机要先把时钟线和数据线置为请求发送的状态。机通过下拉时钟线大于来抑制通讯,并且通过下拉数据线发出请求发送数据的信号,然后释放时钟。当设备检测到需要接收的数据时,它会产生时钟信号并记录下面个数据位和一个停止位。主机此时在时钟线变为低时准备数据到数据线,并在时钟上升沿锁存数据。而设备则要配合机才能读到准确的数据。具体连接步骤如下:()等待时钟线为高电平。()判断数据线是否为低,为高则错误退出,否则继续执行。()读地址线上的数据内容,共个,每读完一个位,都应检测时钟线是否被机拉低,如果被拉低则要中止接收。()读地址线上的校验位内容,个。()读停止位。()如果数据线上为(即还是低电平),设备继续产生时钟,直到接收到且产生出错信号为止(因为停止位是,如果设备没有读到停止位,则表明此次传输出错)。( 输出应答位。() 检测奇偶校验位,如果校验失败,则产生错误信号以表明此次传输出现错误。()延时,以便机进行下一次传输。读数据线的步骤如下:()延时;()把时钟线拉低()延时()释放时钟线()延时()读数据线。下面的步骤可用于发出应答位;()延时; ()把数据线拉低;()延时;()把时钟线拉低;()延时;()释放时钟线;()延时; ()释放数据线。四.键盘返回值介绍:键盘的处理器如果发现有键被按下或释放将发送扫描码的信息包到计算机。扫描码有两种不同的类型:通码和断码。当一个键被按下就发送通码,当一个键被释放就发送断码。每个按键被分配了唯一的通码和断码。这样主机通过查找唯一的扫描码就可以测定是哪个按键。每个键一整套的通断码组成了扫描码集。有三套标准的扫描码集:分别是第一套,第二套和第三套。所有现代的键盘默认使用第二套扫描码。虽然多数第二套通码都只有一个字节宽,但也有少数扩展按键的通码是两字节或四字节宽。这类的通码第一个字节总是为E0。正如键按下通码就被发往计算机一样,只要键一释放断码就会被发送。每个键都有它自己唯一的通码和断码。幸运的是你不用总是通过查表来找出按键的断码。在通码和断码之间存在着必然的联系。多数第二套断码有两字节长。它们的第一个字节是F0 ,第二个字节是这个键的通码。扩展按键的断码通常有三个字节,它们前两个字节是E0h,F0h ,最后一个字节是这个按键通码的最后一个字节。下面列出了几个按键的第二套通码和断码:No.KEY通码(第二套)断码(第二套)1A1CF0 1C252EF0 2E3F1009F0 094Right ArrowE0 74E0 F0 745Right CtrlE0 14E0 F0 14一个键盘发送值的例子:通码和断码是以什么样的序列发送到你的计算机从而使得字符G 出现在你的字处理软件里的呢?因为这是一个大写字母,需要发生这样的事件次序:按下Shift 键-按下G键-释放G 键-释放Shift 键。与这些时间相关的扫描码如下:Shift 键的通码12h,G 键的通码34h ,G 键的断码F0h 34h ,Shift 键的断码F0h 12h 。因此发送到你的计算机的数据应该是:12h 34h F0h 34h F0h 12h五:第二套扫描码:101 102 和104 键的键盘:KEY通码断码KEY通码断码KEY通码断码A1CF0 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 1FNUM77F077M3AF0 3AL ALT11F0 11KP /E0 4AE0 F0 4AN31F0 31R SHFT59F0 59KP *7CF07CO44F0 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 2FKP71F0 71S1BF0 1BENTER5AF0 5AKP 070F0 70T2CF0 2CESC76F0 76KP 169F0 69U3CF0 3CF105F0 05KP 272F0 72V2AF0 2AF206F0 06KP 37AF0 7AW1DF0 1DF304F0 04KP 46BF0 6BX22F0 22F40CF0 0CKP 573F0 73Y35F0 35F503F0 03KP 674F
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 道路服务保洁合同范本
- 电脑配件买卖合同范本
- 电脑产品购买合同协议
- 酒水尾货收购合同范本
- 网络公司劳务合同范本
- 酒店会议安全合同范本
- 采购高强钢带合同范本
- 酒吧小吃合作合同范本
- 给酒店培训的合同范本
- 私人饭店出租合同范本
- 剪彩仪式方案超详细流程
- 2024年二级建造师考试《矿业工程管理与实物》真题及答案
- 人教版初中九年级化学上册第七单元课题1燃料的燃烧第2课时易燃物和易爆物的安全知识合理调控化学反应课件
- 发电厂继电保护培训课件
- 校企“双元”合作探索开发轨道交通新型活页式、工作手册式教材
- 肺癌全程管理
- 2024年考研英语核心词汇
- 信息系统定期安全检查检查表和安全检查报告
- 颅脑外伤患者的麻醉管理专家共识(2021版)
- 质量警示卡模板
- DZ∕T 0219-2006 滑坡防治工程设计与施工技术规范(正式版)
评论
0/150
提交评论