PS2设备通信协议
电气特性
• PS/2通讯协议是一种双向同步串行通讯协议。通 讯的两端通过Clock(时钟脚)同步,并通过 DATA(数据脚)交换数据。任何一方如果想抑制另 外一方通讯时,只需要把Clock(时钟脚)拉到低电 平。如果是PC机和PS/2键盘间的通讯,则PC机 必须做主机,也就是说,PC机可以抑制PS/2键 盘发送数据,而PS/2键盘则不会抑制PC机发送数 据。一般两设备间传输数据的最大时钟频率是3 3kHz,大多数PS/2设备工作在10~20kHz。推 荐值在15kHz左右,也就是说,Clock(时钟脚)高、 低电平的持续时间都为40μs。每一数据帧包含 11~12个位,具体含义如表1所列。
PS2设备通信协议
时序图
PS2接口和协议
• 接口简介 • 1981年IBM推出了IBM PC/XT键盘及其接 口标准。 经过多年演变成6脚mini-DiN连 接器接口,封装上更小巧,用双向串行通 讯协议并且提供有可选择的第三套键盘扫 描码集,同时支持17个主机到键盘的命令。 现在,市面上的键盘都和PS/2及AT键盘兼 容
主机(即PC)到PS/2设备的传输
• 主机若想影响传输,必须能够控制总线时钟!对于 主机而言,控制PS/2总线有三种状态 状态 PS2D ATA 高 高 低 PS2 Note CLK 高 低 为了传输能够发送串 行数据到一位寄存器 高 输出端,控制器要求 PS2设备产生PTransmission Host Send Request
Ps2键盘
• 如果它发现有键被按下,释放或按住,键盘 将发送 扫描码的信息包到计算机。扫描码有 两种不同的类型 通码 和 断码 。当一个键被 按下或按住就发送通码,当一个键被释放就 发送断码。每个按键被分配了唯一的通码和 断码。这样主机通过查找唯一的扫描码就可 以测定是哪个按键。每个键一整套的通断码 组成了扫描码集,有三套标准的扫描码集分 别是第一套 第二套和第三套。 所有现代的 键盘默认使用第二套扫描码。
Description
3
4 5
6
7 2 3 0-7 0-7
Left button status;1=pressed Right button status;1=pressed Middle button status;1=pressed Reserve X data sign; 1=negative Y data sign; 1=negative Reserve Reserve X data (D0-D7) Y data (D0-D7)
带滚轮的鼠标的数据包格式
Byte 1 Bit 0 1 2 3 4 5 6 Description Left button status;1=pressed Right button status;1=pressed Middle button status;1=pressed always 1 X data sign; 1=negative Y data sign; 1=negative X overflow
7
2 3 4 0-7 0-7 0-7
Y overflow
X data (D0-D7) Y data (D0-D7) 高四位是符号扩展位,低四位是滚轮的移动计数值
Ps2设备到主机的通信
• 图中绿色的信号表示由Ps2设备产生的。也就是 说PS2设备在产生时钟的同时向主机送出数据, 主机在PS2CLK信号的下降沿读取每个位 。 • 当PS2CLK频率为15kHz时,从PS2CLK(时钟脚) 的上升沿到数据位转变时间至少要5μs。数据变化 到PS2CLK(时钟脚)下降沿的时间至少也有5 μs, 但不能大于25 μs,这是由PS/2通讯协议的时序规 定的。(一般不用考虑,这由键盘或者鼠标产生)
从主机到PS/2设备的数据的传输时序图
• 绿色信号由ps2设备产生,黄色信号由主机产生 • 由于PS/2设备能提供串行同步时钟,因此,如果主 机发送数据,则主机要先把时钟线和数据线置为请 求发送的状态。主机通过下拉时钟线大于 100μs来 抑制通讯,并且通过下拉数据线发出请求发送数据 的信号,然后释放时钟,PS/2设备检测到需要接收 的数据时,它会产生时钟信号并记录下面8个数据位 和一个停止位。主机此时在时钟线变为低时准备数 据到数据线,并在时钟上升沿锁存数据。
• 表1 数据帧格式说明 1个起始位 总是逻辑0 8个数据位 ,低位在前 1个奇偶校验位(奇校验) 1个停止位 总是逻辑1 1个应答位 仅用在主机对设备的通讯中
奇校验
• 如果数据位中1的个数为偶数,校验位就为 1;如果数据位中1的个数为奇数,校验位 就为0
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机读入。PS/2设备到PC机的通讯时序如图2所 示。
键盘缺省设置状态
• 在上电或软件复位 (见 Reset 命令) 后 键盘执行诊断自检叫做 BAT( 基本保证测 试)并载入如下的缺省值 : • 击打延迟为 500ms • 击打速率为 10.9cps • *第二套扫描码集 • *置所有按键为机打/通码/断码
Ps2鼠标的工作模式和协议数据包格式
• Ps2鼠标四种工作模式
– Reset模式,当鼠标上电或者主机发出reset命 令(ff)时,进入这种模式 – Stream模式:鼠标默认的模式,当鼠标上电或 者复位完成后,自动进入此模式 – Remote模式:和主机交互模式 – Wrap模式,用于测试鼠标和主机连接是否正确
流模式下数据包格式
Byte Bit
1 0 1 2
PS/2接口硬件
• 物理连接器 这两种连接器都只有四个脚有意义。 它们分 别是Clock(时钟脚)、DATA数据脚 、+5V (电源脚)和Ground(电源地)。在PS/2键盘与 PC机的物理连接上只要保证这四根线 一一对应 就可以了。PS/2键盘靠PC的PS/2端口提供+5V 电源,另外两个脚Clock(时钟脚)和DATA数据脚 都是集电极开路的,所以必须接大阻值的上拉电 阻。它们平时保持高电平,有输出时才被拉到低 电平,之后自动上浮到高电平。
主机到PS/2设备的传输
• PS2控制器必须进入主机发送请求(Host Send Request)的状态。这可以通过以下动作实现: • PS2CLK线首先被拉低至少在一个时钟周期(进 入禁止传输Inhibit Transmission状态) • PS2DATA线随后被拉低(提供的起始位帧传送) • PS2CLK线随后被释放(仍然保持PS2DATA低)。 • PS/2设备定期检查数据和时钟线是否为这种状态, 当检测到,开始产生PS2CLK信号。 • 在从主机向PS/2设备发送数据时,PS2一帧数据由 10个域构成。见时序图