Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2149369
  • 博文数量: 361
  • 博客积分: 10828
  • 博客等级: 上将
  • 技术积分: 4161
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-20 14:34
文章分类

全部博文(361)

文章存档

2011年(132)

2010年(229)

分类:

2010-07-01 13:59:51

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键盘兼容,只是功能不 同而已。 

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个起始位 总是逻辑0
8个数据位 (LSB)低位在前
1个奇偶校验位 奇校验
1个停止位 总是逻辑1
1个应答位 仅用在主机对设备的通讯中


表中,如果数据位中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)。通码是按键接通时所发送的编码,用两位十六进制数来表示,断码通常是按键断开时所发送的编码,用四位十六进制数来表示。

 
现在PC机广泛采用的PS/2接口为mini-DIN6引脚的连接器。其引脚的连接器如图2。其中时钟线接P3.2,数据线接P3.1 
插头        插座

1 数据线 (DATA);3 电源 地;4 电源+5V5 时钟;26 未实现,保留。

2 PS/2连接器

PS/2设备有主从之分,主设备(计算机) 采用插座,从设备(键盘)采用插头。PS/2接口的时钟与数据线都是集电极开路结构的,必需外接上拉电阻(设置在主设备中)。主从设备之间数据通 信采用双向同步串行方式传输,时钟信号由从设备产生。

       PS/2键盘履行一种双向同步串行协议。换句话说,每次数据线上发送一位数据都是在时钟线上发一个脉冲就被 读入。键盘可以发送数据到主机,主机也可以发送数据到设备,但主机总是在总线上有优先权,在任何时候通过把时钟信号拉低抑制来自于 键盘的通讯。

3、3.通信协议

       要使专用键盘能与计算机进行联接,首先要对标准键盘的编码规则、通信协议和接口进行分析,以便进行程 序设计。

3.1 键盘编码

键盘的处理器的主要 工作是扫描或监视按键矩阵,发现有按键被按下、释放或按住,键盘将发送“扫描码”的信息包到计算机。扫描码有两种不同的类型:“通码”和“断码”。当一个 按键被按下或按住就发送通码;当一个按键被释放就发送断码。每个按键被分配了唯一的通码和断码,这样主机通过查找唯一的扫描码就可以测定是哪个按键被按下 或释放。每个键盘一整套的通断码组成了“扫描码集”。常见的有三套标准的扫描码集,分别是第一套、第二套和第三套。因为第一套扫描码无法双向通信,第三套 现在计算机很少使用,所以现代的键盘默认使用第二套扫描码。

3.2 键盘扫描码的发送

根据键盘按键扫描 码的不同,在此可将按键分为如下三类,但本次设计的专用键盘只用到前二类,其通码和断码格式分别如下:

第一类按键,通码为1字 节,断码为0xF0+通码形式。

       第二类按键,通码为2字节0xE0+0xXX形式,断码为0xE0+0xF0+0xXX形式。

3.3 从设备到主设备的通信(键盘发送数据到主机)

由于数据和时钟线都 是集电极开路结构正常情况下保持高电平。当键盘要发送数据时,首先检查时钟线,以确认它是否是高电平。如果不是,说明 是主机抑制了通讯,设备必须缓冲任何要发送的数据直到重新获得总线的控制权。如果时钟线是高电平设备就可以开始传送数据。传输的每一帧由11位组成,发送时序及每一位 的含义图3所示[2]
 
 
 

4 主设备到从设备的通信

与从设备到主设备通信相比,其每帧数据多了一个ACK位。这是从设备接收完主机一帧数据后,由从设备通过接低数据 线产生,应答位ACK总是为0。主设备到从设备通信过程中,主设备总是在时钟为低电平时改变数据线的状态,从设备在时钟的上升沿读入数据线状态。
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个bit。

(5)读停止位。

(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)释放数据线。
阅读(3917) | 评论(0) | 转发(0) |
0

上一篇:PS/2 PC键盘编程参考资料

下一篇:tar命令

给主人留下些什么吧!~~