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

上传人:woxinch****an2018 文档编号:38971255 上传时间:2018-05-10 格式:DOC 页数:10 大小:829.50KB
返回 下载 相关 举报
PS2通信协议说明与接口定义(键盘和鼠标)_第1页
第1页 / 共10页
PS2通信协议说明与接口定义(键盘和鼠标)_第2页
第2页 / 共10页
PS2通信协议说明与接口定义(键盘和鼠标)_第3页
第3页 / 共10页
PS2通信协议说明与接口定义(键盘和鼠标)_第4页
第4页 / 共10页
PS2通信协议说明与接口定义(键盘和鼠标)_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《PS2通信协议说明与接口定义(键盘和鼠标)》由会员分享,可在线阅读,更多相关《PS2通信协议说明与接口定义(键盘和鼠标)(10页珍藏版)》请在金锄头文库上搜索。

1、PS2PS2 键盘与鼠标的接口定义键盘与鼠标的接口定义针脚定义:原理PS/2 鼠标接口采用一种双向同步串行协议即每在时钟线上发一个脉冲,就在数据线上发送一 位数据在相互传输中,主机拥有总线控制权,即它可以在任何时候抑制鼠标的发送方法是把时钟线一直 拉低,鼠标就不能产生时钟信号和发送数据在两个方向的传输中,时钟信号都是由鼠标产生,即主机不产 生通信时钟信号如果主机要发送数据,它必须控制鼠标产生时钟信号方法如下:主机首先下拉时钟线至少 100s 抑制通信,然后再下拉数据线,最后释放时钟线通过这一时序控制鼠标产生时钟信号当鼠标检测到这个 时序状态,会在 10ms 内产生时钟信号如图 3 中 A 时序

2、段主机和鼠标之间,传输数据帧的时序如图 2 图 3 所示2.2 数据包结构在主机程序中,利用每个数据位的时钟脉冲触发中断,在中断例程中实现数据 位的判断和接收在实验过程中,通过合适的编程,能够正确控制并接收鼠标数据但该方案有一点不足, 由于每个 CLOCK 都要产生一次中断,中断频繁,需要耗用大量的主机资源PS/2 鼠标的四种工作模式是:Reset 模式,当鼠标上电或主机发复位命令 0xFF 给它时进入这种 模式;Stream 模式鼠标的默认模式,当鼠标上电或复位完成后,自动进入此模式,鼠标基本上以此模式工作;Remote 模式,只有在主机发送了模式设置命令 0xF0 后,鼠标才进入这种模式;

3、Wrap 模式,这种模式只用 于测试鼠标与主机连接是否正确PS/2 鼠标在工作过程中,会及时把它的状态数据发送给主机发送的数据包格式如表 1 所示Byte1 中的 Bit0Bit1Bit2 分别表示左右中键的状态,状态值 0 表示释放,1 表示按下Byte2 和 Byte3 分别表示 X 轴和 Y 轴方向的移动计量值,是二进制补码值Byte4 的低四位表示滚轮的移动计量 值,也是二进制补码值,高四位作为扩展符号位这种数据包由带滚轮的三键三维鼠标产生若是不带滚轮 的三键鼠标,产生的数据包没有 Byte4 其余的相同一.PS/2 鼠标键盘协议PC 键盘可以有 6 脚的 mini-DIN 或 5 脚

4、的 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 并且键盘/鼠 标的地连接到

5、 host 的电源地上数据和时钟都是集电极开路的这就意味着它们通常保持高电平而且很容 易下拉到地逻辑 0 任何你连接到 PS/2 鼠标键盘或 host 的设备在时钟和数据线上要 PS/2 技术参考 著 Adam Chapweske 译 Roy Show 第 4 页共 4 页 02-11-22 发布有一个大的上拉电阻置 0 就把线拉低 置 1 就让线上浮成高电平参考图 1 中数据和时钟线的一般接口结构注意如果你打算使用象 PIC 这样 的微控制器由于它们的 I/O 管脚是双向的你可以跳过晶体管和缓冲门并且通用同一个管脚进行输入和 输出在这种组态情况下要设置管脚为输入就写入 1 使得电阻上拉线上的

6、电平要改变管脚为输出就写入 0 到那个管脚把线路下拉到地。 )PS/2 鼠标和键盘履行一种双向同步串行协议。换句话说每次数据线上发送一位数据并且每在时 钟线上发一个脉冲就被读入。键盘/鼠标可以发送数据到主机,而主机也可以发送数据到设备,但主机 总是在总线上有优先权,它可以在任何时候抑制来自于键盘/鼠标的通讯,只要把时钟拉低即可。从键盘/鼠标发送到主机的数据在时钟信号的下降沿当时钟从高变到低的时候被读取从主机发送 到键盘/鼠标的数据在上升沿(当时钟从低变到高的时候)被读取;不管通讯的方向怎样键盘/鼠标总 是产生时钟信号如果主机要发送数据它必须首先告诉设备开始产生时钟信号这个过程在下一章节中被 描

7、述) 。最大的时钟频率是 33kHz ,而且大多数设备工作在 10 20kHz 。如果你要制作一个 PS/2 设备。 我推荐你把频率控制在 15kHz 左右。这就意味着时钟应该是高 40 微秒低 40 微秒。所有数据安排在字节中,每个字节为一帧,包含了 11-12 个位。这些位的含义如下:如果数据位中包含偶数个 1,校验位就会置 1;如果数据位中包含奇数个 1, 校验位就会置 0 。 数据位中 1 的个数加上校验位总为奇数(这就是奇校验)这是用来错误检测。当主机发送数据给键盘/鼠标时,设备回送一个握手信号来应答数据包已经收到。这个位不会出现在设备发送数据到主机的过程中。设备到主机的通讯过程:数

8、据和时钟线都是集电极开路结构(正常保持高电平) 。当键盘或鼠标等待发送数据时,它首先 检查时钟以确认它是否是高电平。如果不是,那么是主机抑制了通讯,设备必须缓冲任何要发送的数 据直到重新获得总线的控制权(键盘有 16 字节的缓冲区而鼠标的缓冲区仅存储最后一个要发送的数 据包) 。如果时钟线是高电平,设备就可以开始传送数据。如我在上一节提及的,键盘和鼠标使用一种每帧包含 11 位的串行协议。这些位含义是:1 start bit. This is always 0. 1 个起始位总是为 08 data bits, least significant bit first. 8 个数据位低位在前1 p

9、arity bit (odd parity). 1 个校验位奇校验1 stop bit. This is always 1. 1 个停止位总是为 1每位在时钟的下降沿被主机读入,如图 2 和 3 所示时钟频率为 10 16.7kHz。从时钟脉冲的上升沿到一个数据转变的时间至少要有 5 微秒。数据变化 到时钟脉冲的下降沿的时间至少要有 5 微秒并且不大于 25 微秒。这个定时非常重要你应该严格遵循 它。主机可以在第 11 个时钟脉冲(停止位)之前把线拉低,导致设备放弃发送当前字节(这是非常 罕见的) 。在停止位发送后,设备在发送下个包前至少应该等待 50 毫秒。这将给主机时间当它处理接 收到的字

10、节时抑制发送(主机在收到每个包时,通常自动做这个) 。在主机释放抑制后,设备至少应该 在发送任何数据前等 50 毫秒。 我推荐下面的过程发送一个单一字节从仿真键盘/鼠标到主机: 1) 等待 Clock = high 2) 延时 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 个数

11、据位 测试时钟确认主机是否把它拉低了 8) 输出校验位 / 这说明主机要放弃这次 10) 延迟 30 毫秒 (=50 微秒 from the tim 传送 9) 输出停止位 (1) e Clock is released in sending the stop bit) 按如下的过程发送单个位: 1) Set/Reset Data 2) Delay 20 microseconds 3) Bring Clock low 4) Delay 40 microseconds 5) Release Clock 6) Delay 20 microseconds1) 设置/复位数据 2) 延迟 20 微秒

12、3) 把时钟拉低 4) 延迟 40 微秒 5) 释放时钟6) 延迟 20 微秒主机到设备的通讯被发送的包有点不同于主机到设备通讯过程。首先,PS/2 设备总是产生时钟信号。如果主机要 发送数据,它必须首先把时钟和数据线设置为请求 发送状态,如下示:通过下拉时钟线至少 100 微秒来抑制通讯。通过下拉数据线来应用请求发送 ,然后释放时钟。设备应该在不超过 10 毫秒的间隔内就要检查这个状态。当设备检测到这个状态,它将开始产生 时钟信号,并且时钟脉冲标记下输入八个数据位和一个停止位。主机仅当时钟线为低的时候改变数据 线,而数据在时钟脉冲的上升沿被锁存。这在发生在设备到主机通讯的过程中正好相反。在停

13、止位发送后,设备要应答接收到的字节,就把数据线拉低并产生最后一个时钟脉冲。如果主 机在第 11 个时钟脉冲后不释放数据线,设备将继续产生时钟脉冲直到数据线被释放(然后设备将产 生一个错误) 。主机可以在第 11 个时钟脉冲(应答位)前中止一次传送,只要下拉时钟线至少 100 微秒。要使得这个过程易于理解,主机必须按下面的步骤发送数据到 PS/2 设备: 1) 把时钟线拉低至少 100 微秒 2) 把数据线拉低 3) 释放数据线 4) 等待设备把时钟线拉低 5) 设置/复位数据线发送第一个数据位 6) 等待设备把时钟拉高 7) 等待设备把时钟拉低 8) 重复 5-7 步 发送剩下的 7 个数据位

14、和校验位 9) 释放数据线 10) 等待设备把数据线拉低 11) 等待设备把时钟线拉低 12) 等待设备释放数据线和时钟线图 3 用图形表示图 4 以单独的时序表示了由主机产生的信号。及由 PS/2 设备产生的信号。注意应 答位时序的改变-数据改变发生在时钟线为高的时候(不同于其它 11 位是当它为低的时候) 。图 4 描述了两个重要的定时条件:a 和 b 。a 在主机最初把书记现拉低后,设备开始产生时钟 脉冲的时间,必须步大于 15ms ;b 数据包被发送的时间必须不大于 2ms 。如果这两个条件不满足, 主机将产生一个错误。在包收到后,主机为了处理数据立刻把时钟线拉低来抑制通讯。如果主机发

15、送 的命令要求有一个回应,这个回应必须在书籍释放时钟线后 20ms 之内被收到。如果没有收到,则主 机产生一个错误。在设备到主机通讯的情况中,时钟改变后的 5 微秒内不应该发生数据改变的情况。如果呢要仿真一个鼠标或键盘,我推荐你按如下的过程从主机读入数据;在你的主程序中,至少每 10 毫秒检测数据线是否为低。如果数据线已被主机拉低,则从主机读取一个字节。 1) 等待时钟线为高 2) 数据线仍然为低吗 不-有错误发生;放弃。 3) 读入 8 个数据位 / 在读入这些位后4) 读入校验位 测试时钟线数否被主机拉低 5) 读入停止位 / 这就意味着放弃这次传送 6) 数据线仍旧为 0 吗? 是保持时

16、钟直到数据=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分类: 嵌入式一一. .电气特性电气特性1 DATA Key Data2 n/cNot connected3 GND Gnd4

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 高中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号