为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > PS2通信协议说明与接口定义键盘和鼠标

PS2通信协议说明与接口定义键盘和鼠标

2018-05-18 6页 doc 259KB 143阅读

用户头像

is_997338

暂无简介

举报
PS2通信协议说明与接口定义键盘和鼠标PS2键盘与鼠标的接口定义针脚定义:Make公的female母的6*Mmi-DIXlPS2)【一数揩2—未实现”螺留3—电源地4一电源一V《pi顿插头(SockeO插座5-Wi6-未疝.flffl原理PS2鼠标接口采用一种双向同步串行协议?即每在时钟线上发一个脉冲,就在数据线上发送一位数据?在相互传输中,主机拥有总线控制权,即它可以在任何时候抑制鼠标的发送?方法是把时钟线一直拉低,鼠标就不能产生时钟信号和发送数据?在两个方向的传输中,时钟信号都是由鼠标产生,即主机不产生通...
PS2通信协议说明与接口定义键盘和鼠标
PS2键盘与鼠标的接口定义针脚定义:Make公的female母的6*Mmi-DIXlPS2)【一数揩2—未实现”螺留3—电源地4一电源一V《pi顿插头(SockeO插座5-Wi6-未疝.flffl原理PS2鼠标接口采用一种双向同步串行?即每在时钟线上发一个脉冲,就在数据线上发送一位数据?在相互传输中,主机拥有总线控制权,即它可以在任何时候抑制鼠标的发送?方法是把时钟线一直拉低,鼠标就不能产生时钟信号和发送数据?在两个方向的传输中,时钟信号都是由鼠标产生,即主机不产生通信时钟信号?如果主机要发送数据,它必须控制鼠标产生时钟信号?方法如下:主机首先下拉时钟线至少100ps抑制通信,然后再下拉数据线,最后释放时钟线?通过这一时序控制鼠标产生时钟信号?当鼠标检测到这个时序状态,会在10ms内产生时钟信号?如图3中A时序段?主机和鼠标之间,传输数据帧的时序如图2?图3所示?2.2数据包结构在主机程序中,利用每个数据位的时钟脉冲触发中断,在中断例程中实现数据位的判断和接收?在实验过程中,通过合适的编程,能够正确控制并接收鼠标数据?但该有一点不足,由于每个CLOC睹E要产生一次中断,中断频繁,需要耗用大量的主机资源?时仲~Lf_Lr_Ln_r_Ln_r_L_nj~Lr'Lj_u««位7散携位6敷ffi位3数据位4数推位3«诏位2数%位—数据位O起始位ft停»止位位ffi2鼠标到主机的传村酎序_J_Z应答位LJ「停止位校ft位数赡位TLJLft携位6ULJ歌ffi位4»«妆3Lfttt位2LJL欢蛔位—U致据位OL起始位忡S时Affi3射机到依标的修1•时序PS2鼠标的四种工作模式是:Reset模式,当鼠标上电或主机发复位命令0xFF给它时进入这种模式;Stream模式鼠标的默认模式,当鼠标上电或复位完成后,自动进入此模式,鼠标基本上以此模式工作;Remote模式,只有在主机发送了模式设置命令0xF0后,鼠标才进入这种模式;Wrap模式,这种模式只用于测试鼠标与主机连接是否正确?PS2鼠标在工作过程中,会及时把它的状态数据发送给主机?发送的数据包格式如表1所示?Bytel中的Bit0?Bit1?Bit2分别表示左?右?中键的状态,状态值0表示释放,1表示按下?Byte2和Byte3分别表示X轴和Y轴方向的移动计量值,是二进制补码值?Byte4的低四位表示滚轮的移动计量值,也是二进制补码值,高四位作为扩展符号位?这种数据包由带滚轮的三键三维鼠标产生?若是不带滚轮的三键鼠标,产生的数据包没有Byte4其余的相同?KIR称发遇的裁椎包临人一.PS2鼠标键盘协议PC键盘可以有6脚的mini-DIN或5脚的DIN连接器如果你的键盘是6脚的mini-DIN而你的计算机是5脚的DIN或者相反这两类连接器可以用上面提到的适配器来兼容具有6脚mini-DIN的键盘通常被叫做PS2键盘而那些有5脚DIN叫做AT设备XT键盘也使用5脚DIN但它们非常古老并且多年前就不生产了所有现代的为PC建造的键盘不是PS2,AT就是USB的这篇文章不适用于USB设备它们使用了一种完全不同的接口。每种连接器的引脚定义如下所示在刚才提到连接器上有四个有趣的管脚电源地5V数据和时钟host计算机提供5V并且键盘/鼠标的地连接到host的电源地上数据和时钟都是集电极开路的这就意味着它们通常保持高电平而且很容易下拉到地逻辑0任何你连接到PS/2鼠标键盘或host的设备在时钟和数据线上要PS2技术参考著AdamChapweske译RoyShow第4页共4页02-11-22发布有一个大的上拉电阻置0就把线拉低置1就让线上浮成高电平参考图1中数据和时钟线的一般接口结构注意如果你打算使用象PIC这样的微控制器由于它们的I/O管脚是双向的你可以跳过晶体管和缓冲门并且通用同一个管脚进行输入和输出在这种组态情况下要设置管脚为输入就写入1使得电阻上拉线上的电平要改变管脚为输出就写入0到那个管脚把线路下拉到地。)PS/2鼠标和键盘履行一种双向同步串行协议。换句话说每次数据线上发送一位数据并且每在时钟线上发一个脉冲就被读入。键盘/鼠标可以发送数据到主机,而主机也可以发送数据到设备,但主机总是在总线上有优先权,它可以在任何时候抑制来自于键盘/鼠标的通讯,只要把时钟拉低即可。从键盘/鼠标发送到主机的数据在时钟信号的下降沿当时钟从高变到低的时候被读取从主机发送到键盘/鼠标的数据在上升沿(当时钟从低变到高的时候)被读取;不管通讯的方向怎样键盘/鼠标总是产生时钟信号如果主机要发送数据它必须首先告诉设备开始产生时钟信号这个过程在下一章节中被描述)。最大的时钟频率是33kHz,而且大多数设备工作在1020kHz。如果你要制作一个PS/2设备。我推荐你把频率控制在15kHz左右。这就意味着时钟应该是高40微秒低40微秒。所有数据安排在字节中,每个字节为一帧,包含了11-12个位。这些位的含义如下:如果数据位中包含偶数个1,校验位就会置1;如果数据位中包含奇数个1,校验位就会置0。数据位中1的个数加上校验位总为奇数(这就是奇校验)这是用来错误检测。当主机发送数据给键盘/鼠标时,设备回送一个握手信号来应答数据包已经收到。这个位不会出现在设备发送数据到主机的过程中。设备到主机的通讯过程:数据和时钟线都是集电极开路结构(正常保持高电平)。当键盘或鼠标等待发送数据时,它首先检查时钟以确认它是否是高电平。如果不是,那么是主机抑制了通讯,设备必须缓冲任何要发送的数据直到重新获得总线的控制权(键盘有16字节的缓冲区而鼠标的缓冲区仅存储最后一个要发送的数据包)如果时钟线是高电平,设备就可以开始传送数据。11位的串行协议。这些位含义是:1个起始位总是为08个数据位低位在前1个校验位奇校验1个停止位总是为12和3所示如我在上一节提及的,键盘和鼠标使用一种每帧包含1startbit.Thisisalways0.8databits,leastsignificantbitfirst.1paritybit(oddparity).1stopbit.Thisisalways1.每位在时钟的下降沿被主机读入,如图时钟频率为1016.7kHz。从时钟脉冲的上升沿到一个数据转变的时间至少要有5微秒。数据变化到时钟脉冲的下降沿的时间至少要有5微秒并且不大于25微秒。这个定时非常重要你应该严格遵循它。主机可以在第11个时钟脉冲(停止位)之前把线拉低,导致设备放弃发送当前字节(这是非常罕见的)。在停止位发送后,设备在发送下个包前至少应该等待50毫秒。这将给主机时间当它处理接收到的字节时抑制发送(主机在收到每个包时,通常自动做这个)。在主机释放抑制后,设备至少应该在发送任何数据前等50毫秒。我推荐下面的过程发送一个单一字节从仿真键盘/鼠标到主机:1)等待Clock=high2)延时50微秒3)Clocks仍旧为high?No—到第1步4)Data=high?No—放弃(并且从主机读取字节)5)延迟20毫秒(=40微秒tothetimeClockispulledlowinsendingthestartbit.)6)输出起始位(0)/在发送所有这些位的每一位后7)输出8个数据位>测试时钟确认主机是否把它拉低了8)输出校验位/这说明主机要放弃这次10)延迟30毫秒(=50微秒fromthetim传送9)输出停止位(1)eClockisreleasedinsendingthestopbit)按如下的过程发送单个位:1)Set/ResetData2)Delay20microseconds3)BringClocklow4)Delay40microseconds5)ReleaseClock6)Delay20microseconds1)设置/复位数据2)延迟20微秒3)把时钟拉低4)延迟40微秒5)释放时钟6)延迟20微秒主机到设备的通讯被发送的包有点不同于主机到设备通讯过程。首先,PS2设备总是产生时钟信号。如果主机要发送数据,它必须首先把时钟和数据线设置为’请求发送’状态,如下示:通过下拉时钟线至少100微秒来抑制通讯。通过下拉数据线来应用’请求发送’,然后释放时钟。设备应该在不超过10毫秒的间隔内就要检查这个状态。当设备检测到这个状态,它将开始产生时钟信号,并且时钟脉冲标记下输入八个数据位和一个停止位。主机仅当时钟线为低的时候改变数据线,而数据在时钟脉冲的上升沿被锁存。这在发生在设备到主机通讯的过程中正好相反。在停止位发送后,设备要应答接收到的字节,就把数据线拉低并产生最后一个时钟脉冲。如果主机在第11个时钟脉冲后不释放数据线,设备将继续产生时钟脉冲直到数据线被释放(然后设备将产生一个错误)。主机可以在第11个时钟脉冲(应答位)前中止一次传送,只要下拉时钟线至少100微秒。要使得这个过程易于理解,主机必须按下面的步骤发送数据到PS2设备:1)把时钟线拉低至少100微秒2)把数据线拉低3)释放数据线4)等待设备把时钟线拉低5)设置/复位数据线发送第一个数据位6)等待设备把时钟拉高7)等待设备把时钟拉低8)重复5-7步发送剩下的7个数据位和校验位9)释放数据线10)等待设备把数据线拉低11)等待设备把时钟线拉低12)等待设备释放数据线和时钟线图3用图形表示图4以单独的时序表示了由主机产生的信号。及由PS2设备产生的信号。注意应答位时序的改变-数据改变发生在时钟线为高的时候(不同于其它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-1412:23:40)转载▼分类:嵌入式ps2通信ps2协议.电气特性2DATAKeyDatan/cNotconnected4VCCPower,+5VDC5CLKClock6!n/cNotconnected.数据格式1个起始位总是逻辑08个数据位(LSB)低位在前1个奇偶校验位奇校验1个停止位总是逻辑11个应答位仅用在主机对设备的通讯中表中,如果数据位中1的个数为偶数,校验位就为1;如果数据位中1的个数为奇数,校验位就为0;总之,数据位中1的个数加上校验位中1的个数总为奇数,因此总进行奇校验。ps2设备的clock和data都是集电极开路的,平时都是高电平。当ps2设备等待发送数据时,它首先检查clock是否为高。如果为低,则认为PC抑制了通讯,此时它缓冲数据直到获得总线的控制权。如果clock为高电平,ps2则开始向PC发送数据。一般都是由ps2设备产生时钟信号。发送按帧格式。数据位在clock为高电平时准备好,在clock下降沿被PC读入。数据从键盘/鼠标发送到主机或从主机发送到键盘/鼠标,时钟都是PS2设备产生.主机对时钟控制有优先权,即主机想发送控制指令给PS2设备时,可以拉低时钟线至少100MS,然后再下拉数据线,最后释放时钟线为高。PS2设备的时钟线和数据线都是集电极开路的,容易实现拉低电平。PC在时钟的下降沿读取数据.PS:ps2协议是现在大多数鼠标,键盘与PC通讯的标准协议,鼠标的通讯更为简单些,只是传送的数据内容不一样而已。三.数据发送时序kbdat|e[in]m|m|m|皿|口s|炀[in|p]i~间KRDAT|Upii)[DI|02」L»|LM|皿|UB|5|F]T~|仆)|键盘接口时序(a)键盘发送时序;(b)键盘接收时序从PS/2向PC机发送一个字节可按照下面的步骤进行:(1)检测时钟线电平,如果时钟线为低,则延时50(is;(2)检测判断时钟信号是否为高,为高,则向下执行,为低,则转到(1);(3)检测数据线是否为高,如果为高则继续执行,如果为低,则放弃发送(此时PC机在向PS/2设备发送数据,所以PS/2设备要转移到接收程序处接收数据);(4)延时20监(如果此时正在发送起始位,则应延时40ps);输出起始位(0)到数据线上。这里要注意的是:在送出每一位后都要检测时钟线,以确保PC机没有抑制PS/2设备,如果有则中止发送;输出8个数据位到数据线上;输出校验位;输出停止位(1);延时30芟(如果在发送停止位时释放时钟信号则应延时50监);通过以下步骤可发送单个位:(1)准备数据位(将需要发送的数据位放到数据线上);延时20芟;(3)把时钟线拉低;(4)延时40(is;(5)释放时钟线;(6)延时20(isoPS/2设备从PC机接收一个字节由于PS/2设备能提供串行同步时钟,因此,如果PC机发送数据,则PC机要先把时钟线和数据线置为请求发送的状态。PC机通过下拉时钟线大于100ps来抑制通讯,并且通过下拉数据线发出请求发送数据的信号,然后释放时钟。当PS/2设备检测到需要接收的数据时,它会产生时钟信号并记录下面8个数据位和一个停止位。主机此时在时钟线变为低时准备数据到数据线,并在时钟上升沿锁存数据。而PS/2设备则要配合PC机才能读到准确的数据。具体连接步骤如下:(1)等待时钟线为高电平。判断数据线是否为低,为高则错误退出,否则继续执行。读地址线上的数据内容,共8个bit,每读完一个位,都应检测时钟线是否被PC机拉低,如果被拉低则要中止接收。读地址线上的校验位内容,1个bit。(5)读停止位。(6)如果数据线上为0(即还是低电平),PS/2设备继续产生时钟,直到接收到1且产生出错信号为止(因为停止位是1,如果PS/2设备没有读到停止位,则表明此次传输出错)。(7输出应答位。(8)检测奇偶校验位,如果校验失败,则产生错误信号以表明此次传输出现错误。(9)延时45芟,以便PC机进行下一次传输。读数据线的步骤如下:(1)延时20tis;(2)把时钟线拉低(3)延时40(4)释放时钟线(5)延时20(6)读数据线。下面的步骤可用于发出应答位;(1)延时15s;(2)把数据线拉低;(3)延时5芟;(4)把时钟线拉低;(5)延时40膏;(6)释放时钟线;(7)延时5膏;(8)释放数据线。四.键盘返回值介绍:键盘的处理器如果发现有键被按下或释放将发送扫描码的信息包到计算机。扫描码有两种不同的类型:通码和断码。当一个键被按下就发送通码,当一个键被释放就发送断码。每个按键被分配了唯一的通码和断码。这样主机通过查找唯一的扫描码就可以测定是哪个按键。每个键一整套的通断码组成了扫描码集。有三套标准的扫描码集:分别是第一套,第二套和第三套。所有现代的键盘默认使用第二套扫描码。虽然多数第二套通码都只有一个字节宽,但也有少数扩展按键的通码是两字节或四字节宽。这类的通码第一个字节总是为E0。正如键按下通码就被发往计算机一样,只要键一释放断码就会被发送。每个键都有它自己唯一的通码和断码。幸运的是你不用总是通过查表来找出按键的断码。在通码和断码之间存在着必然的联系。多数第二套断码有两字节长。它们的第一个字节是F0,第二个字节是这个键的通码。扩展按键的断码通常有三个字节,它们前两个字节是E0h,F0h,最后一个字节是这个按键通码的最后一个字节。下面列出了几个按键的第二套通码和断码:12345F02EF009E0F074Right"Ctrl"E014F01CE0F014一个键盘发送值的例子:通码和断码是以什么样的序列发送到你的计算机从而使得字符G出现在你的字处理软件里的呢?因为这是一个大写字母,需要发生这样的事件次序:按下Shift键-按下G键-释放G键-释放Shift键。与这些时间相关的扫描码如下:Shift键的通码12h,G键的通码34h,G键的断码F0h34h,Shift键的断码F0h12h。因此发送到你的计算机的数据应该是:12h34hF0h34hF0h12h五:第二套扫描码:101102和104键的键盘F0214EF04EHOMEE06CE0F06CF02355055PGUPE07DE0F07D24F0245DF05DDELETEE071E0F0712B3433424B3A3144PF04D2D1B2C3C2A1D223545161E252E363D3EF02BF034F033F043F03BF042F04BF03AF031F044015F02DF01BF02CF03CF02AF01DF022F035F01AF045F016F01E026F025F02EF036F03DF03E6SPACEF066ENDE069E0F06929029PGDNE07AE0F07ATABCAPSLSHFTLCTRLLGUIALT0D581214E01F11RSHFT59CTRLE014RGUIRALTAPPSENTERESCF1F2F3F4F5F6F7F8F10F11F12PRNTSCRNE027E011E02F5A760506040C030B830A097807E012E07CSCROLL7EPAUSEACPI扫描码:F00DF058F012F014E0F01FF011F059E0F014E0F027E0F011E0F02FF05AF076F005F006F004F00CF003F00BF083F00AF001F009F078F007E0F07CE0F012F0,7EE11477E1F014-NONE-F077UARROWE075E0F075LARROWE06BE0F06BDARROWE072E0F072RARROWE074E0F074NUMKP/KP*KP-KP+KPENKPKP0KP1KP2KP3KP4KP5KP6KP7KP8KP9]4C524177F077E04AE0F04A7C7B79F07CF07BF079E05AE0F05A717069727A6B73746C757D58494AF071F070F069F072F07AF06BF073F074F06CF075F07DF058F04CF052F041F049F04APowerE0,37E0,F0,37SleepE0,3FE0,F0,3FWakeE0,5EE0,F0,5EWindows多媒体扫描码TOC\o"1-5"\h\zMuteE0,23E0,F0,23VolumeUpE0,32E0,F0,32VolumeDownE0,21E0,F0,21MediaSelectE0,50E0,F0,50E-MailE0,48E0,F0,48CalculatorE0,2BE0,F0,2bMyComputerE0,40E0,F0,40WWWSearchE0,10E0,F0,10WWWHomeE0,3AE0,F0,3aWWWBackE0,38E0,F0,38WWWForwardE0,30E0,F0,20WWWStopE0,28E0,F0,28WWWRefreshE0,20E0,F0,20WWWFavoritesE0,18E0,F0,18
/
本文档为【PS2通信协议说明与接口定义键盘和鼠标】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索