PS2设备通信协议 时序图
- 格式:ppt
- 大小:303.50 KB
- 文档页数:23
PS2鼠标接口协议协议名称:PS2鼠标接口协议一、介绍PS2鼠标接口协议是一种用于连接计算机和鼠标之间的通信协议。
该协议规定了数据传输格式、通信流程以及错误处理等方面的内容,以确保计算机和鼠标之间的稳定通信。
二、数据传输格式1. 数据帧格式PS2鼠标接口协议使用异步串行通信方式传输数据,数据帧由8个bit组成,其中包括1个起始位、1个停止位和6个数据位。
数据帧的格式如下所示:起始位数据位0 数据位1 数据位2 数据位3 数据位4 数据位5 停止位2. 通信速率PS2鼠标接口协议支持的通信速率为1200bps。
三、通信流程1. 初始化计算机在启动时,需要向鼠标发送初始化命令,以建立通信连接。
初始化命令的格式如下所示:发送:0xFF接收:0xFA2. 数据传输一旦通信连接建立成功,计算机可以向鼠标发送指令,鼠标将根据指令执行相应的操作,并将结果返回给计算机。
指令的格式如下所示:发送:0xFX(X为指令码)接收:0xFA(表示指令执行成功)或0xFE(表示指令执行失败)3. 中断当鼠标有新的数据需要传输给计算机时,会发送一个中断信号,以通知计算机接收数据。
计算机在接收到中断信号后,可以通过读取数据寄存器来获取鼠标发送的数据。
四、错误处理1. 通信错误如果在通信过程中发生错误,计算机会发送复位命令给鼠标,以重新建立通信连接。
复位命令的格式如下所示:发送:0xFF接收:0xFA2. 指令错误如果鼠标接收到无法识别的指令,将返回错误码给计算机,表示指令执行失败。
计算机可以根据错误码来判断具体的错误类型,并进行相应的处理。
五、安全性考虑为了保证通信的安全性,PS2鼠标接口协议还提供了数据校验功能。
每个数据帧的最后一个bit是校验位,计算机和鼠标都会对数据进行校验,以确保数据的完整性和准确性。
六、总结PS2鼠标接口协议是一种用于连接计算机和鼠标之间的通信协议,它规定了数据传输格式、通信流程以及错误处理等方面的内容。
FPGA基础设计_PS2键盘控制及短按、长按
PS2键盘也是一个经典的实验,可能很多人接触如何对通信协议、时序编程就是从这个实验开始学习的。
USB键盘已经很普及,现在市场上还是有一些USB转PS2的转接头,还有一些转换芯片。
这个实验虽然简单,不过不知道您有考虑过单按一次输出一个有效脉冲、短按、长按等这些是如何实现的么?这就涉及到一些时钟、边沿检测等设计问题。
PS2协议实现
我们见到的PS2的接口电路应该都是这样的:
一根时钟线、一根数据线完成通信,PS2通信的帧格式如下所示,时钟的下降沿数据有效:
按键在被按下时,会发送一个字节,这个码就是通码;按键在释放时,会发送两个字节,这个码就做断码(当然也有例外)。
每一个按键都有唯一的通码和断码,据此进行判断按下的是哪个键,从而执行对应的功能。
如一部分按键的通码和断码如下所示:
可以看出断码其实就是在通码前加了一个F0,比如A的通码是1C,则它的断码是F01C。
另外一些特殊功能的按键,在通码和断码前都会加个E0。
PS2解码的代码如下所示:
//-----------------ps2_clk下降沿捕获--------------------
//clk相当于中间采样点的作用,第一个下降沿到来说明起始位开始
reg ps2_clk0,ps2_clk1,ps2_clk2;//缓冲寄存器
wire ps2_clk_neg; //1表示检测到下降沿
reg ps2_state;
always @ (posedge clk or negedge rst_n)
if (!rst_n)
{ps2_clk0,ps2_clk1,ps2_clk2} 《= 3‘d0;
else。
中小系统上位机通讯协议2004-11-2DL451-91(CDT)通讯规约采用RS232通讯接口;波特率支持1200、2400、4800、9600,字符格式10位(1位起始位、8位数据、1位停止位)。
1.帧定义1.1.帧结构1.2.同步字发送:EBH 90H EBH 90H EBH 90H,共6个字节。
1.3.控制字控制字共有B7 – B12 共6个字节,定义如下:1.3.1.控制字节控制字节定义如下:E:扩展位,E=0 表示使用本协议已定义帧类别码,E=1帧类别码可自定义,本协议中总为0L:帧长定义位,E=0 表示本帧无信息字,E=1 表示本帧有信息字,本协议中总为1S:源站地址有效D:目的站地址有效(上行信息中,S=1,D=1,源站地址为直流设备设置地址,目的站地址为上位机地址,固定为01H。
)(下行信息中,D=1, 目的站地址为直流设备设置地址)1.3.2.帧类别码帧类别码定义如下:1.3.3.信息字数信息字数n表示该帧中所含信息字数量;n=0表示本帧无信息。
1.3.4.校验码本协议采用CRC校验,校验多项式为107H,为信息字前5字节构成码流,后面加8个0,得到48位码流,用校验多项式作为除数除以码流,相除时做异或;最后得到8位余数取反后既为校验码。
例如:信息字为;43h E8h 7DH 33H 56H 计算余数为2FH,取反后为D0H,发送序列为:43h E8h 7DH 33H 56H D0H。
1.4.信息字1.4.1.信息字结构每个信息字由6个字节构成:功能码1字节,信息4字节校验码1字节。
功能码定义功能码定义如下:1.4.2.信息字格式遥测:每个信息字传送2路遥测量,每个遥测量包含2字节,先送低字节,后送高字节。
b11 – b0 表示一路模拟量,以2进值表示,b11=0表示正,b11=1表示负,以二进值补码表示负数。
b14=1表示溢出,b15=1表示无效,b12 b13 未使用。
遥信:每个信息字传送32个遥信量。
PS2键盘与鼠标的接口定义针脚定义:原理PS/2鼠标接口采用一种双向同步串行协议。即每在时钟线上发一个脉冲,就在数据线上发送一位数据。在相互传输中,主机拥有总线控制权,即它可以在任何时候抑制鼠标的发送。方法是把时钟线一直拉低,鼠标就不能产生时钟信号和发送数据。在两个方向的传输中,时钟信号都是由鼠标产生,即主机不产生通信时钟信号。如果主机要发送数据,它必须控制鼠标产生时钟信号。方法如下:主机首先下拉时钟线至少100μs 抑制通信,然后再下拉数据线,最后释放时钟线。通过这一时序控制鼠标产生时钟信号。当鼠标检测到这个时序状态,会在10ms内产生时钟信号。如图3中A 时序段。主机和鼠标之间,传输数据帧的时序如图2、图3所示。2.2 数据包结构在主机程序中,利用每个数据位的时钟脉冲触发中断,在中断例程中实现数据位的判断和接收。在实验过程中,通过合适的编程,能够正确控制并接收鼠标数据。但该方案有一点不足,由于每个CLOCK都要产生一次中断,中断频繁,需要耗用大量的主机资源。PS/2鼠标的四种工作模式是:Reset模式,当鼠标上电或主机发复位命令0xFF给它时进入这种模式;Stream模式鼠标的默认模式,当鼠标上电或复位完成后,自动进入此模式,鼠标基本上以此模式工作;Remote模式,只有在主机发送了模式设置命令0xF0后,鼠标才进入这种模式;Wrap模式,这种模式只用于测试鼠标与主机连接是否正确。PS/2鼠标在工作过程中,会及时把它的状态数据发送给主机。发送的数据包格式如表1所示。Byte1中的Bit0、Bit1、Bit2分别表示左、右、中键的状态,状态值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 设备它们使用了一种完全不同的接口。
PS/2鼠标协议原理(中文)按照PS/2协议,移动时,鼠标会输出一组时钟和数据信号;而在静止时,时钟和数据信号将一直保持为逻辑高电平,表示处于空闲状态。
每次移动时,鼠标会向主机发送3个数据帧,每个数据帧11位,包括1个起始位“0”、8个数据位(低位在前)、1个奇校验位和一个结束位“1”,因此每次移动时,鼠标会向主机发送33位数据,其中第0、11和22位是起始位“0”,第10、21和32位是结束位“1”,如图5.7所示。
图5.7 PS/2鼠标的数据传送在图5.7 中,“Mouse status byte”、“X direction byte”和“Y direction byte”三个字节的数据是鼠标移动产生的相关数据,包括状态、X方向数据和Y方向数据。
按照PS/2协议,鼠标数据在时钟CLK的下降沿有效,而时钟CLK的频率要求在20KHz~30KHz之间。
基于PS/2协议的鼠标采用相对坐标的形式来追踪它的移动轨迹,如图5.8所示。
如果鼠标水平向右移动,则得到一个正的X值;否则,得到一个负的X值。
如果鼠标竖直向上移动,则得到一个正的Y值;否则,得到一个负的Y值。
使用“0”表示正值;而使用“1”表示负值。
在“Mouse status byte”数据字节中,XS和YS就表示了鼠标的移动方向。
图5.8 PS/2鼠标的相对坐标相对坐标中,X值和Y值表示了鼠标的移动速度,值越大表示鼠标的移动速度越大。
“Mouse status byte”数据字节中,XV和YV则标识鼠标的移动是否超出了范围,包括X方向和Y 方向。
如果超出了范围,则XV或YV置位为1。
“Mouse status byte”数据字节中,L和R 则分别表示鼠标的左键和右键,如果有键按下,则相应的L或R置位。
如果鼠标一直移动,则图 5.7所示的33个位的数据不停发送,重复周期约为50ms。
按照PS/2协议,移动时,鼠标会输出一组时钟和数据信号;而在静止时,时钟和数据信号将一直保持为逻辑高电平,表示处于空闲状态。
PS2键盘在单片机上的应用摘要:在嵌入式PC应用系统中,作为人机交互设备的键盘,往往采用结构简单按键少的矩阵键盘。
标准键盘虽然能直接与嵌入式PC机的PS/2接口相连,但是体积大,按键多,不能满足需求,本文提出用一种AT89C52单片机实现具有标准PS/2接口的矩阵键盘,具有便捷,实用的特点。
关键词:PS/2接口,PS/2键盘,拨号键,AT89C52,LCD1602Abstract:PS/2 interface is one of the most useful mouse interface.It was IBM’s patent named osulum before. It is the dedicate interface of mouse and keyboard. This text implied a plan using PS/2 to make a system. PS/2 tansmit the data which was pressed, and AT89C52 receive it ,disposed it and transmit it to Lcd1602. Lcd1602 discover it to make us know which key has been pressed. PS/2 simulate a phone’s dial keyboard. This system’s feature is the circuit is sample and useful.Keywords:PS/2 keyboard, AT89C52, LCD1602,PS/2 interface,dial keyboard目录1、前言 (1)2、整体方案设计 (2)2.1方案论证 (2)2.2方案比较 (3)3、单元模块设计 (4)3.1PS2键盘模块 (4)3.2单片机模块 (6)3.3LCD显示模块 (7)4、软件设计 (9)5、系统技术指标及精度和误差分析 (10)6、结论 (11)7、设计小结 (12)8、致谢 (14)9、参考文献 (14)附录1:电路总图 (15)附录2:仿真图 (16)附录3:软件代码 (17)1、前言单片机因其性价比高, 处理能力强, 且抗干扰能力好, 在医疗器械、机电液控制、数据传输等各类工控系统和设备仪器中得到广泛应用。
PS2键盘接口协议2009-06-03 16:11一.电气特性PS/2 键盘接口为 6 针母插,外观为:上图为接口底座引脚图1DATA Key Data2n/c Not connected3GND Gnd4VCC Power , +5 VDC5CLK Clock6n/c Not connected二.数据格式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设备时,可以拉低时钟线至少100μS,然后再下拉数据线,最后释放时钟线为高。
PS2设备的时钟线和数据线都是集电极开路的,容易实现拉低电平。
PC在时钟的下降沿读取数据.PS: ps2协议是现在大多数鼠标,键盘与PC通讯的标准协议,鼠标的通讯更为简单些,只是传送的数据内容不一样而已。
三.数据发送时序键盘接口时序(a) 键盘发送时序;(b) 键盘接收时序从PS/2向PC机发送一个字节可按照下面的步骤进行:(1)检测时钟线电平,如果时钟线为低,则延时50μs;(2)检测判断时钟信号是否为高,为高,则向下执行,为低,则转到(1);(3)检测数据线是否为高,如果为高则继续执行,如果为低,则放弃发送(此时PC机在向PS/2设备发送数据,所以PS/2设备要转移到接收程序处接收数据);(4)延时20μs(如果此时正在发送起始位,则应延时40μs);(5)输出起始位(0)到数据线上。
键盘接口时序(a) 键盘发送时序;(b) 键盘接收时序从PS/2向PC机发送一个字节可按照下面的步骤进行:(1)检测时钟线电平,如果时钟线为低,则延时50μs;(2)检测判断时钟信号是否为高,为高,则向下执行,为低,则转到(1);(3)检测数据线是否为高,如果为高则继续执行,如果为低,则放弃发送(此时PC机在向PS/2设备发送数据,所以PS/2设备要转移到接收程序处接收数据);(4)延时20μs(如果此时正在发送起始位,则应延时40μs);(5)输出起始位(0)到数据线上。
这里要注意的是:在送出每一位后都要检测时钟线,以确保PC机没有抑制PS/2设备,如果有则中止发送;(6)输出8个数据位到数据线上;(7)输出校验位;(8)输出停止位(1);(9)延时30μs(如果在发送停止位时释放时钟信号则应延时50μs);通过以下步骤可发送单个位:(1)准备数据位(将需要发送的数据位放到数据线上);(2)延时20μs;(3)把时钟线拉低;(4)延时40μs;(5)释放时钟线;(6)延时20μs。
PS/2设备从PC机接收一个字节由于PS/2设备能提供串行同步时钟,因此,如果PC机发送数据,则PC机要先把时钟线和数据线置为请求发送的状态。
PC机通过下拉时钟线大于100μs来抑制通讯,并且通过下拉数据线发出请求发送数据的信号,然后释放时钟。
当PS/2设备检测到需要接收的数据时,它会产生时钟信号并记录下面8个数据位和一个停止位。
主机此时在时钟线变为低时准备数据到数据线,并在时钟上升沿锁存数据。
而PS/2设备则要配合PC机才能读到准确的数据。
具体连接步骤如下:(1)等待时钟线为高电平。
(2)判断数据线是否为低,为高则错误退出,否则继续执行。
(3)读地址线上的数据内容,共8个bit,每读完一个位,都应检测时钟线是否被PC机拉低,如果被拉低则要中止接收。
(4)读地址线上的校验位内容,1个bit。
(5)读停止位。
(6)如果数据线上为0(即还是低电平),PS/2设备继续产生时钟,直到接收到1且产生出错信号为止(因为停止位是1,如果PS/2设备没有读到停止位,则表明此次传输出错)。
一ps2接口(1)母插头母插头引脚定义:(2)公插头公插头引脚定义:二ps2设备数据帧格式1个起始位总是逻辑08个数据位(LSB)低位在前1个奇偶校验位奇校验1个停止位总是逻辑11个应答位仅用在主机对设备的通讯中表中,如果数据位中1的个数为偶数,校验位就为1;如果数据位中1的个数为奇数,校验位就为0;总之,数据位中1的个数加上校验位中1的个数总为奇数,因此总进行奇校验。
三PS/2设备和PC机的通讯PS/2设备的clock(时钟脚)和data(数据脚)都是集电极开路的,平时都是高电平。
当PS/2设备等待发送数据时,它首先检看clock(时钟脚)以确认其是否为高电平。
如果是低电平,则认为是PC机抑制了通讯,此时它必须缓冲需要发送的数据直到重新获得总线的控制权(一般PS/2键盘有16个字节的缓冲区,而PS/2鼠标只有一个缓冲区仅存储最后一个要发送的数据)。
如果clock(时钟脚)为高电平,PS/2设备便开始将数据发送到PC机。
一般都是由PS/2设备产生时钟信号。
发送时一般都是按照数据帧格式顺序发送。
其中数据位在clock(时钟脚)为高电平时准备好,在clock时钟脚的下降沿被PC机读入。
当时钟频率为15kHz时,从clock(时钟脚)的上升沿到数据位转变时间至少要5μs。
数据变化到clock(时钟脚)下降沿的时间至少也有5μs,但不能大于25μs,这是由PS/2通讯协议的时序规定的。
如果时钟频率是其它值,参数的内容应稍作调整。
上述讨论中传输的数据是指对特定键盘的编码或者对特定命令的编码。
一般采用第二套扫描码集所规定的码值来编码。
其中键通码(Make)和断码(Break)。
通码是按键接通时所发送的编码,用两位十六进制数来表示,断码通常是按键断开时所发送的编码,用四位十六进制数来表示。
实例:从键盘/鼠标发送到主机的数据在时钟信号的下降沿(当时钟从高变到低的时候)被读取;从主机发送到键盘/鼠标的数据在上升沿(当时钟从低变到高的时候)被读取。
一,PS2引脚定义1,DATA引脚:数据引脚*集电极开路:空闲高电平2,N/C:没有连接3,GND:电源地4,VCC:电源5,CLK:时钟:一般由PS2设备产生*集电极开路:空闲高电平6,N/C:没有连接二,数据格式1个起始位:逻辑08个数据位:LSB先行1个奇偶位:奇校验1个停止位:逻辑11个应答位:用在主机对设备的通讯中*奇校验:数据位中1的个数+校验位中1的个数=奇数三,数据逻辑PS2发送数据:1,检测CLK电平,如果电平位低->主机抑制通讯如果电平位高->主机正常通讯2,PS2设备产生CLK时钟,数据位在高电平期间准备数据位在下降沿期间被主机读取注意:CLK有PS2从机产生,但是主机对CLK有优先权。
PS2接收数据:拉低CLK至少100us下拉DATA释放时钟为高四,时序逻辑发送时序:a接受时序:b发送一个字节步骤:1,检测CLK电平,如果CLK为低->延时50us2,检测CLK电平,为高执行步骤3,为低执行步骤13,检测DATA电平,为高继续执行,为低放弃操作转为接收4,延时20us5,输出起始位0:每准备发送一次数据,检测一次CLK,确保PC没有抑制发送6,输出数据位(LSB先行)7,输出校验位8,输出停止位19,延时30us单个位发送逻辑:1,准备DATA2,延时20us3,拉低时钟4,延时40us5,释放时钟6,延时20us接收一个字节步骤:1,等待CLK为高2,判断DATA是否为低,为高退出3,读DATA位内容,共8Bit,(每读一位检测CLK是否被主机拉低,拉低中断) 4,读取地址线校验内容5,读停止位内容(非1,继续产生时钟,直到接收到1且产生出错信号)6,输出应答位7,检测奇偶校验位(失败则放弃)8,延时45us,以便PC下次传输接收一个位步骤:1,延时20us2,把CLK拉低3,延时40us4,释放CLK5,延时20us6,读数据应答信号1,延时15us2,把DATA拉低3,延时5us4,把CLK拉低5,延时40us6,释放CLK7,延时5us8,释放DATA五,键码键盘处理器检测到有按键按下or释放时,会发送扫描码信号给主机。
基于51单片机的PS2键盘密码锁设计摘要:AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K在系统可编程Flash 存储器,被广泛应用于各个领域。
LCD1602液晶显示器以其微功耗、体积小、超薄轻巧等诸多优点而备受人们喜爱。
本作品是以AT89S52作为主控芯片,LCD1602作为显示器,以PS2键盘作为输入设备的密码锁。
PS2键盘与AT89S52通过PS2接口协议进行通信,可以完成密码设置,密码重置及显示等诸多功能。
本作品还使用了24C02存储器来实现密码锁的掉电保存功能。
关键词:AT89S52;LCD1602;24C02;PS2键盘Abstract:AT89S52 is a low power,high performance CMOS 8 bit microcontroller, with 8K flash memory, is widely applied in various fields. LCD1602 liquid crystalDisplay with its low power consumption, small size, thin lightweight and many other advantages, is liked by people.This work is based on the AT89S52 as the main chip, the LCD1602 as display, PS2 keyboard as an input device of the cipher lock. PS2 keyboard and AT89S52 through PS2 interface protocolFor communication, can complete password, password reset and display and other functions. This work we also used the 24C02 memory to realize the password lock the power-down save function.Keywork: A T89C52; LCD1602; 24C02;PS/2 keyboard1 实验目的及意义在单片机系统中,经常使用的键盘都是专用键盘.此类键盘为单独设计制作的,成本高、使用硬件连接线多,且可靠性不高,这一状况在那些要求键盘按键较多的应用系统中更为突出.与此相比,在PC系统中广泛使用PS/2键盘具有价格低、通用可靠,且使用连接线少(仅使用2根信号线)的特点,并可满足多种系统的要求.因此在单片机系统中应用PS/2键盘是一种很好的选择.对于单片机初学者的我而言,AT89S52简单易学,非常适合我学习。