《{合同知识}接口协议解析及应用.》由会员分享,可在线阅读,更多相关《{合同知识}接口协议解析及应用.(6页珍藏版)》请在金锄头文库上搜索。
1、PS-2接口协议解析及应用摘要:文中详细介绍了PS/2接口协议的内容、电气特性和标准键盘的第二套键盘扫描码集。给出了基于嵌入式系统的PS/2接口的软、硬件实现方法,并介绍了工控PC外接双键盘的解决方案。通过使用模拟开关CD4052巧妙地解决了工控PC外接双键盘的冲突问题。 关键词:PS/2接口;串行通讯;单片机;键盘;CD4052 接口标准的发展过程随着计算机工业的发展,作为计算机最常用输入设备的键盘也日新月异。年推出了 键盘及其接口标准。该标准定义了键,采用脚连接器和简单的串行协议。实际上,第一套键盘扫描码集并没有主机到键盘的命令。为此,年推出了 键盘接口标准。该标准定义了键,采用脚连接器和
2、双向串行通讯协议,此协议依照第二套键盘扫描码集设有个主机到键盘的命令。到了年,又推出了键盘接口标准。该标准仍旧定义了键,但是采用脚连接器,该连接器在封装上更小巧,仍然用双向串行通讯协议并且提供有可选择的第三套键盘扫描码集,同时支持个主机到键盘的命令。现在,市面上的键盘都和及键盘兼容,只是功能不同而已。接口硬件 物理连接器一般,具有五脚连接器的键盘称之为键盘,而具有六脚连接器的键盘则称之为键盘。其实这两种连接器都只有四个脚有意义。它们分别是(时钟脚)、数据脚、(电源脚)和(电源地)。在键盘与机的物理连接上只要保证这四根线一一对应就可以了。键盘靠的端口提供电源,另外两个脚(时钟脚)和数据脚都是集电
3、极开路的,所以必须接大阻值的上拉电阻。它们平时保持高电平,有输出时才被拉到低电平,之后自动上浮到高电平。现在比较常用的连接器如图所示。 电气特性通讯协议是一种双向同步串行通讯协议。通讯的两端通过(时钟脚)同步,并通过(数据脚)交换数据。任何一方如果想抑制另外一方通讯时,只需要把(时钟脚)拉到低电平。如果是机和键盘间的通讯,则机必须做主机,也就是说,机可以抑制键盘发送数据,而键盘则不会抑制机发送数据。一般两设备间传输数据的最大时钟频率是,大多数设备工作在。推荐值在左右,也就是说,(时钟脚)高、低电平的持续时间都为。每一数据帧包含个位,具体含义如表所列。数据帧格式说明1个起始位 总是逻辑0 8个数
4、据位 (LSB)低位在前 1个奇偶校验位 奇校验 1个停止位 总是逻辑1 1个应答位 仅用在主机对设备的通讯中 如果数据位中的个数为偶数,校验位就为;如果数据位中的个数为奇数,校验位就为;总之,数据位中的个数加上校验位中的个数总为奇数,因此总进行奇校验。 设备和机的通讯设备的(时钟脚)和数据脚都是集电极开路的,平时都是高电平。当设备等待发送数据时,它首先检查(时钟脚)以确认其是否为高电平。如果是低电平,则认为是机抑制了通讯,此时它必须缓冲需要发送的数据直到重新获得总线的控制权(一般键盘有个字节的缓冲区,而鼠标只有一个缓冲区仅存储最后一个要发送的数据)。如果(时钟脚)为高电平,设备便开始将数据发
5、送到机。一般都是由设备产生时钟信号。发送时一般都是按照数据帧格式顺序发送。其中数据位在(时钟脚)为高电平时准备好,在(时钟脚)的下降沿被机读入。设备到机的通讯时序如图所示。当时钟频率为时,从(时钟脚)的上升沿到数据位转变时间至少要。数据变化到(时钟脚)下降沿的时间至少也有 ,但不能大于 ,这是由通讯协议的时序规定的。如果时钟频率是其它值,参数的内容应稍作调整。上述讨论中传输的数据是指对特定键盘的编码或者对特定命令的编码。一般采用第二套扫描码集所规定的码值来编码。其中键盘码分为通码()和断码()。通码是按键接通时所发送的编码,用两位十六进制数来表示,断码通常是按键断开时所发送的编码,用四位十六进
6、制数来表示。 接口的嵌入式软件编程方法设备主要用于产生同步时钟信号和读写数据。 向机发送一个字节从向机发送一个字节可按照下面的步骤进行:()检测时钟线电平,如果时钟线为低,则延时;()检测判断时钟信号是否为高,为高,则向下执行,为低,则转到();()检测数据线是否为高,如果为高则继续执行,如果为低,则放弃发送(此时机在向设备发送数据,所以设备要转移到接收程序处接收数据);()延时(如果此时正在发送起始位,则应延时);()输出起始位()到数据线上。这里要注意的是:在送出每一位后都要检测时钟线,以确保机没有抑制设备,如果有则中止发送;()输出个数据位到数据线上;()输出校验位;()输出停止位();
7、()延时(如果在发送停止位时释放时钟信号则应延时);通过以下步骤可发送单个位:()准备数据位(将需要发送的数据位放到数据线上);()延时;()把时钟线拉低;()延时;()释放时钟线;()延时。 设备从机接收一个字节由于设备能提供串行同步时钟,因此,如果机发送数据,则机要先把时钟线和数据线置为请求发送的状态。机通过下拉时钟线大于来抑制通讯,并且通过下拉数据线发出请求发送数据的信号,然后释放时钟。当设备检测到需要接收的数据时,它会产生时钟信号并记录下面个数据位和一个停止位。主机此时在时钟线变为低时准备数据到数据线,并在时钟上升沿锁存数据。而设备则要配合机才能读到准确的数据。具体连接步骤如下:()等
8、待时钟线为高电平。()判断数据线是否为低,为高则错误退出,否则继续执行。()读地址线上的数据内容,共个,每读完一个位,都应检测时钟线是否被机拉低,如果被拉低则要中止接收。()读地址线上的校验位内容,个。()读停止位。()如果数据线上为(即还是低电平),设备继续产生时钟,直到接收到且产生出错信号为止(因为停止位是,如果设备没有读到停止位,则表明此次传输出错)。( 输出应答位。() 检测奇偶校验位,如果校验失败,则产生错误信号以表明此次传输出现错误。()延时 ,以便机进行下一次传输。读数据线的步骤如下:()延时;()把时钟线拉低()延时()释放时钟线()延时()读数据线。下面的步骤可用于发出应答位
9、;()延时;()把数据线拉低;()延时;()把时钟线拉低;()延时;()释放时钟线;()延时;()释放数据线。用于工控机的双键盘设计工控机通常要接标准键盘,但是为了方便操作,常常需要外接一个专用键盘。此实例介绍了在工控机到总线上再接入一个自制专用键盘的应用方法。该设计应能保证两个键盘单独工作,而且相互不能影响。因此,不能直接把专用键盘和标准键盘一起接到工控的口。鉴于这种情况,本设计使用模拟开关并通过时分复用工控的口,来使在同一个时刻只有一个键盘有效,从而解决上述问题。其硬件原理图如图所示。其中口和口用于键盘扫描电路(图中未画出),为数据端,为时钟端,为模拟开关选通端。由于专用键盘不需要接收工控
10、机的命令,所以软件中并不需要写这部分相应的代码。通过软件可在专用键盘复位后把清,以使模拟开关打开相应的通道。这时工控的标准键盘将开始工作。标准键盘可以完成工控刚启动时对外设检测的应答。复位后的专用键盘不停地扫描有没有按键,如果有键按下则识别按键,并且按照预先的设计进行编码,同时调用发送程序并通过口发送到工控。此时模拟开关关闭相应通道(将置),专用键盘接入工控 口的时钟线和数据线而工作,但标准键盘被模拟开关从的时钟线和数据线中断而不工作,这样,双键盘便可时分复用同一个工控机的口。相应的发送子程序如下: 用做数据线 用做时钟线 用做的端 用口做读入口 用口做写出口 可以实现个自定义键 ( ) - ,_; _; _ ();(;) _;(_)_!_; (!) ; ()_();() ; _();_();(;) ;_();_;(_);()();_();_(); _();_;_();_(); _(); _();_(); ;