好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

PS2接口协议解析与应用.doc

9页
  • 卖家[上传人]:平***
  • 文档编号:4369883
  • 上传时间:2017-08-18
  • 文档格式:DOC
  • 文档大小:156.50KB
  • / 9 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • ps/2 接口标准的发展过程随着计算机工业的发展,作为计算机最常用输入设备的键盘也日新月异1981年 IBM 推出了 IBM pc/XT 键盘及其接口标准该标准定义了 83 键,采用 5 脚 DIN 连接器和简单的串行协议实际上,第一套键盘扫描码集并没有主机到键盘的命令为此, 1984 年 IBM 推出了 IBM AT 键盘接口标准该标准定义了 84~101 键,采用 5 脚 DIN 连接器和双向串行通讯协议,此协议依照第二套键盘扫描码集设有 8 个主机到键盘的命令到了 1987 年,IBM 又推出了 ps/2 键盘接口标准该标准仍旧定义了 84~101 键,但是采用 6 脚 mini-DIN 连接器,该连接器在封装上更小巧,仍然用双向串行通讯协议并且提供有可选择的第三套键盘扫描码集,同时支持 17 个主机到键盘的命令现在,市面上的键盘都和 ps/2 及 AT 键盘兼容,只是功能不同而已ps/2 接口硬件2.1 物理连接器一般,具有五脚连接器的键盘称之为 AT 键盘,而具有六脚 mini-DIN 连接器的键盘则称之为 ps/2 键盘其实这两种连接器都只有四个脚有意义它们分别是 Clock(时钟脚)、DATA(数据脚 )、+5V(电源脚) 和 Ground(电源地)。

      在 ps/2 键盘与 pc 机的物理连接上只要保证这四根线一一对应就可以了ps/2 键盘靠 pc 的 ps/2 端口提供+5V 电源,另外两个脚Clock(时钟脚) 和 DATA(数据脚) 都是集电极开路的,所以必须接大阻值的上拉电阻它们平时保持高电平,有输出时才被拉到低电平,之后自动上浮到高电平现在比较常用的连接器如图 1 所示2.2 电气特性ps/2 通讯协议是一种双向同步串行通讯协议通讯的两端通过 Clock(时钟脚)同步,并通过 DATA(数据脚 )交换数据任何一方如果想抑制另外一方通讯时,只需要把 Clock(时钟脚) 拉到低电平如果是 pc 机和 ps/2 键盘间的通讯,则 pc 机必须做主机,也就是说,pc 机可以抑制 ps/2 键盘发送数据,而 ps/2 键盘则不会抑制 pc 机发送数据一般两设备间传输数据的最大时钟频率是 33kHz,大多数 ps/2 设备工作在 10~20kHz推荐值在 15kHz 左右,也就是说,Clock(时钟脚)高、低电平的持续时间都为 40μs每一数据帧包含11~12 个位,具体含义如表 1 所列表 1 数据帧格式说明1 个起始位 总是逻辑 08 个数据位 (LSB)低位在前1 个奇偶校验位 奇校验1 个停止位 总是逻辑 11 个应答位 仅用在主机对设备的通讯中表中,如果数据位中 1 的个数为偶数,校验位就为 1;如果数据位中 1 的个数为奇数,校验位就为 0;总之,数据位中 1 的个数加上校验位中 1 的个数总为奇数,因此总进行奇校验。

      2.3 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 所示当时钟频率为 15kHz 时,从 Clock(时钟脚)的上升沿到数据位转变时间至少要 5μs数据变化到 Clock(时钟脚) 下降沿的时间至少也有 5 μs,但不能大于 25 μs,这是由 ps/2通讯协议的时序规定的如果时钟频率是其它值,参数的内容应稍作调整上述讨论中传输的数据是指对特定键盘的编码或者对特定命令的编码。

      一般采用第二套扫描码集所规定的码值来编码其中键盘码分为通码(make)和断码 (Break)通码是按键接通时所发送的编码,用两位十六进制数来表示,断码通常是按键断开时所发送的编码,用四位十六进制数来表示3 ps/2 接口的嵌入式软件编程方法ps/2 设备主要用于产生同步时钟信号和读写数据3.1 ps/2 向 pc 机发送一个字节从 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。

      3.2 ps/2 设备从 pc 机接收一个字节由于 ps/2 设备能提供串行同步时钟,因此,如果 pc 机发送数据,则 pc 机要先把时钟线和数据线置为请求发送的状态pc 机通过下拉时钟线大于 100μs来抑制通讯,并且通过下拉数据线发出请求发送数据的信号,然后释放时钟当 ps/2 设备检测到需要接收的数据时,它会产生时钟信号并记录下面 8 个数据位和一个停止位主机此时在时钟线变为低时准备数据到数据线,并在时钟上升沿锁存数据而 ps/2 设备则要配合 pc 机才能读到准确的数据具体连接步骤如下:(1)等待时钟线为高电平2)判断数据线是否为低,为高则错误退出,否则继续执行3)读地址线上的数据内容,共 8 个 bit,每读完一个位,都应检测时钟线是否被 pc 机拉低,如果被拉低则要中止接收4)读地址线上的校验位内容, 1 个 bit5)读停止位6)如果数据线上为 0(即还是低电平),ps/2 设备继续产生时钟,直到接收到 1 且产生出错信号为止( 因为停止位是 1,如果 ps/2 设备没有读到停止位,则表明此次传输出错)7 输出应答位8) 检测奇偶校验位,如果校验失败,则产生错误信号以表明此次传输出现错误。

      9)延时45 μs,以便 pc 机进行下一次传输读数据线的步骤如下:(1)延时 20μs;(2)把时钟线拉低(3)延时40μs(4)释放时钟线(5)延时 20μs(6)读数据线下面的步骤可用于发出应答位;(1)延时 15μs;(2)把数据线拉低;(3)延时 5μs;(4)把时钟线拉低;(5)延时40μs;(6)释放时钟线;(7)延时 5μs;(8)释放数据线 4 用于工控机的双键盘设计工控机通常要接标准键盘,但是为了方便操作,常常需要外接一个专用键盘此实例介绍了在工控 pc 机到 ps/2 总线上再接入一个自制专用键盘的应用方法该设计应能保证两个键盘单独工作,而且相互不能影响因此,不能直接把专用键盘和标准键盘一起接到工控 pc 的 ps/2 口鉴于这种情况,本设计使用模拟开关CD4052并通过时分复用工控 pc 的 ps/2 口,来使在同一个时刻只有一个键盘有效,从而解决上述问题其硬件原理图如图 3 所示其中P2 口和P1 口用于键盘扫描电路 (图中未画出),p0. 0 为数据端,p0.1 为时钟端, p0.2 为模拟开关选通端由于专用键盘不需要接收工控 pc 机的命令,所以软件中并不需要写这部分相应的代码。

      通过软件可在专用键盘复位后把 p0.2 清 0,以使模拟开关CD4052 打开相应的通道这时工控 pc 的标准键盘将开始工作标准键盘可以完成工控 pc 刚启动时对外设检测的应答复位后的专用键盘不停地扫描有没有按键,如果有键按下则识别按键,并且按照预先的设计进行编码,同时调用发送程序并通过 ps/2 口发送到工控 pc此时模拟开关关闭相应通道(将 p0.2 置 1),专用键盘接入工控 pc ps/2 口的时钟线和数据线而工作,但标准键盘被模拟开关从 ps/2 的时钟线和数据线中断而不工作,这样,双键盘便可时分复用同一个工控 pc 机的 ps/2 口相应的发送子程序如下:#define DATA p00 用 p0. 0 做数据线#define CLK p01 用 p0.1 做时钟线#define INHIbit p02 用 p0.2 做CD4052 的 INH 端#define PORTR p1 用 P1 口做读入口#define PORTW p2 用 P2 口做写出口 可以实现64个自定义键void send(uchar x) /* function for send a char data*/{uchar i,temp,char_temp;bit flag_check =1;INHIBIT =1; //disable standard keyboarddelay_ms(3);temp = x;for( i=0; i>1;}CLK =1; //send 1 to P1 then read P1while(!CLK) //if CLK is low wait{;} CLK =1;DATA =1; //send 1 to P1 then read P1if(CLK ==1){delay_us(30);}if(CLK==1 && DATA==1) //send data{DATA =0; //start bit 0delay_us(10);CLK =0;delay_us(5);temp =x;for(i=0;i>1;}CLK = 1; //send check bit delay_us(5);DATA = flag_check;delay_us(10);CLK = 0;delay_us(5);CLK =1; //send stop bitdelay_us(5);DATA =1;dalay_us(10);CLK = 0;delay_us(5);CLK =1;delay_us(30);CLK =1;DATA =1 ; //send 1 to P1 then read P1if(CLK ==1 && DATA == 0){return ; //pc is sending data to mcu,goto//receiving function}INHIBIT = 0; //enable standard keyboard}5 结论ps/2 接口协议是现在大多数键盘、鼠标与 pc 机通讯的标准协议。

      其中鼠标对pc 机的通讯更为简单,只是传输数据的内容不一样而已充分理解 ps/2 接口协议,可以帮助设计者自主开发一些工控机上的专用键盘等外设,并能够按照用户的要求开发出专用的多功能键盘该工控机的双键盘设计目前已被某工控公司所采纳,并已作为组件加入到产品当中。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.