ps2协议Word文档格式.docx
- 文档编号:17477908
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:8
- 大小:21.60KB
ps2协议Word文档格式.docx
《ps2协议Word文档格式.docx》由会员分享,可在线阅读,更多相关《ps2协议Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
所有数据安排在字节中,每个字节为一帧,包含了11-12个位。
这些位的含义如下:
如果数据位中包含偶数个1,校验位就会置1;
如果数据位中包含奇数个1,校验位就会置0。
数据位中1的个数加上校验位总为奇数(这就是奇校验)这是用来错误检测。
当主机发送数据给键盘/鼠标时,设备回送一个握手信号来应答数据包已经收到。
这个位不会出现
在设备发送数据到主机的过程中。
设备到主机的通讯过程:
数据和时钟线都是集电极开路结构(正常保持高电平)。
当键盘或鼠标等待发送数据时,它首先检查时钟以确认它是否是高电平。
如果不是,那么是主机抑制了通讯,设备必须缓冲任何要发送的数据直到重新获得总线的控制权(键盘有16字节的缓冲区而鼠标的缓冲区仅存储最后一个要发送的数据包)。
如果时钟线是高电平,设备就可以开始传送数据。
如我在上一节提及的,键盘和鼠标使用一种每帧包含11位的串行协议。
这些位含义是:
1startbit.thisisalways0.1个起始位总是为0
8databits,leastsignificantbitfirst.8个数据位低位在前
1paritybit(oddparity).1个校验位奇校验
1stopbit.thisisalways1.1个停止位总是为1
每位在时钟的下降沿被主机读入,如图2和3所示
时钟频率为1016.7khz。
从时钟脉冲的上升沿到一个数据转变的时间至少要有5微秒。
数据变化到时钟脉冲的下降沿的时间至少要有5微秒并且不大于25微秒。
这个定时非常重要你应该严格遵循它。
主机可以在第11个时钟脉冲(停止位)之前把线拉低,导致设备放弃发送当前字节(这是非常罕见的)。
在停止位发送后,设备在发送下个包前至少应该等待50毫秒。
这将给主机时间当它处理接收到的字节时抑制发送(主机在收到每个包时,通常自动做这个)。
在主机释放抑制后,设备至少应该在发送任何数据前等50毫秒。
我推荐下面的过程发送一个单一字节从仿真键盘/鼠标到主机:
1)等待clock=high
2)延时50微秒
3)clocks仍旧为highno—到第1步
4)data=highno—放弃(并且从主机读取字节)
5)延迟20毫秒(=40微秒tothetimeclockispulledlowinsendingthestartbit.)
6)输出起始位(0)/在发送所有这些位的每一位后
7)输出8个数据位>
测试时钟确认主机是否把它拉低了
8)输出校验位/这说明主机要放弃这次
10)延迟30毫秒(=50微秒fromthetim传送
9)输出停止位
(1)eclockisreleasedinsendingthestopbit)
按如下的过程发送单个位:
1)set/Resetdata
2)delay20microseconds
3)bringclocklow
4)delay40microseconds
5)Releaseclock
6)delay20microseconds
1)设置/复位数据
2)延迟20微秒
3)把时钟拉低
4)延迟40微秒
5)释放时钟
6)延迟20微秒
主机到设备的通讯
被发送的包有点不同于主机到设备通讯过程。
首先,ps/2设备总是产生时钟信号。
如果主机要发送数据,它必须首先把时钟和数据线设置为‘请求
发送’状态,如下示:
通过下拉时钟线至少100微秒来抑制通讯。
通过下拉数据线来应用‘请求发送’,然后释放时钟。
设备应该在不超过10毫秒的间隔内就要检查这个状态。
当设备检测到这个状态,它将开始产生时钟信号,并且时钟脉冲标记下输入八个数据位和一个停止位。
主机仅当时钟线为低的时候改变数据线,而数据在时钟脉冲的上升沿被锁存。
这在发生在设备到主机通讯的过程中正好相反。
在停止位发送后,设备要应答接收到的字节,就把数据线拉低并产生最后一个时钟脉冲。
如果主机在第11个时钟脉冲后不释放数据线,设备将继续产生时钟脉冲直到数据线被释放(然后设备将产生一个错误)。
主机可以在第11个时钟脉冲(应答位)前中止一次传送,只要下拉时钟线至少100微秒。
要使得这个过程易于理解,主机必须按下面的步骤发送数据到ps/2设备:
1)把时钟线拉低至少100微秒
2)把数据线拉低
3)释放数据线
4)等待设备把时钟线拉低
5)设置/复位数据线发送第一个数据位
6)等待设备把时钟拉高
7)等待设备把时钟拉低
8)重复5-7步发送剩下的7个数据位和校验位
9)释放数据线
10)等待设备把数据线拉低
11)等待设备把时钟线拉低
12)等待设备释放数据线和时钟线
图3用图形表示图4以单独的时序表示了由主机产生的信号。
及由ps/2设备产生的信号。
注意应答位时序的改变-数据改变发生在时钟线为高的时候(不同于其它11位是当它为低的时候)。
图4描述了两个重要的定时条件:
a和b。
a在主机最初把书记现拉低后,设备开始产生时钟脉冲的时间,必须步大于15ms;
b数据包被发送的时间必须不大于2ms。
如果这两个条件不满足,主机将产生一个错误。
在包收到后,主机为了处理数据立刻把时钟线拉低来抑制通讯。
如果主机发送的命令要求有一个回应,这个回应必须在书籍释放时钟线后20ms之内被收到。
如果没有收到,则主机产生一个错误。
在设备到主机通讯的情况中,时钟改变后的5微秒内不应该发生数据改变的情况。
如果呢要仿真一个鼠标或键盘,我推荐你按如下的过程从主机读入数据;
在你的主程序中,至少每10毫秒检测数据线是否为低。
如果数据线已被主机拉低,则从主机读取一个字节。
1)等待时钟线为高
2)数据线仍然为低吗
不-有错误发生;
放弃。
3)读入8个数据位/在读入这些位后
4)读入校验位>
测试时钟线数否被主机拉低
5)读入停止位/这就意味着放弃这次传送
6)数据线仍旧为0吗?
是保持时钟直到数据=1然后产生一个错误
7)输出应答位
8)检查校验位
如果校验位不正确则产生一个错误
9)延迟45微秒(给主机时间抑制下次的传送)
按如下次序读取每位(8个数据位检验位和停止位):
1)延迟20微秒
2)把时钟拉低
3)延迟40微秒
4)释放时钟
5)延迟20微秒
7)读数据线
按如下次序发送应答位:
1)延迟15微秒
3)延迟5微秒
4)把时钟线拉低
5)延迟40微秒
6)释放时钟线
7)延迟5微秒8)释放数据线
ps2接口协议及代码分析
(20xx-10-1412:
23:
40)
转载
标签:
ps2通信
ps2协议
it▼分类:
嵌入式
一.电气特性
篇二:
ps2键盘接口协议
ps2键盘接口协议20xx-06-0316:
11一.电气特性
ps/2键盘接口为6针母插,外观为:
上图为接口底座引脚图
二.数据格式
表中,如果数据位中1的个数为偶数,校验位就为1;
如果数据位中1的个数为奇数,校验位就为0;
总之,数据位中1的个数加上校验位中1的个数总为奇数,因此总进行奇校验。
ps2设备的clock和data都是集电极开路的,平时都是高电平。
当ps2设备等待发送数据时,它首先检查clock是否为高。
如果为低,则认为pc抑制了通讯,此时它缓冲数据直到获得总线的控制权。
如果clock为高电平,ps2则开始向pc发送数据。
一般都是由ps2设备产生时钟信号。
发送按帧格式。
数据位在clock为高电平时准备好,在clock下降沿被pc读入。
数据从键盘/鼠标发送到主机或从主机发送到键盘/鼠标,时钟都是ps2设备产生.主机对时钟控制有优先权,即主机想发送控制指令给ps2设备时,可以拉低时钟线至少100μs,然后再下拉数据线,最后释放时钟线为高。
ps2设备的时钟线和数据线都是集电极开路的,容易实现拉低电平。
pc在时钟的下降沿读取数据.
ps:
ps2协议是现在大多数鼠标,键盘与pc通讯的标准协议,鼠标的通讯更为简单些,只是传送的数据内容不一样而已。
三.数据发送时序
键盘接口时序(a)键盘发送时序;
(b)键盘接收时序从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。
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)释放数据线。
四.键盘返回值介绍:
键盘的处理器如果发现有键被按下或释放将发送扫描码的信息包到计算机。
扫描码有两种不同的类型:
通码和断码。
当一个键被按下就发送通码,当一个键
被释放就发送断码。
每个按键被分配了唯一的通码和断码。
这样主机通过查找唯一的扫描码就可以测定是哪个按键。
每个键一整套的通断码组成了扫描码集。
有三套标准的扫描码集:
分别是第一套,第二套和第三套。
所有现代的键盘默认使用第二套扫描码。
虽然多数第二套通码都只有一个字节宽,但也有少数扩展按键的通码是两字节或四字节宽。
这类的通码第一个字节总是为e0。
正如键按下通码就被发往计算机一样,只要键一释放断码就会被发送。
每个键都有它自己唯一的通码和断码。
幸运的是你不用总是通过查表来找出按键的断码。
在通码和断码之间存在着必然的联系。
多数第二套断码有两字节长。
它们的第一个字节是F0,第二个字节是这个键的通码。
扩展按键的断码通常有三个字节,它们前两个字节是e0h,F0h,最后一个字节是这个按键通码的最后一个字节。
下面列出了几个按键的第二套通码和断码:
一个键盘发送值的例子:
通码和断码是以什么样的序列发送到你的计算机从而使得字符g出现在你的字处理软件里的呢?
因为这是一个大写字母,需要发生这样的事件次序:
按下shift键-按下g键-释放g键-释放shift键。
与这些时间相关的扫描码如下:
shift键的通码12h,g键的通码34h,g键的断码F0h34h,shift键的断码F0h12h。
因此发送到你的计算机的数据应该是:
12h34hF0h34hF0h12h
五:
第二套扫描码:
101102和104键的键盘:
acpi扫描码:
篇三:
ps2协议介绍
2ps/2接口硬件
2.1物理连接器
物理上的ps/2端口是两类连接器中的一种:
5脚的din或6脚的mini-din。
这两种连接器在电气特性上是十分类似的,实际上两者只有一点不同那就是管脚的排列。
一般,具有五脚连接器的键盘称之为at键盘,而具有六脚mini-din连接器的键盘则称之为ps/2键盘。
其实这两种连接器都只有四个脚有意义。
它们分别是clock(时钟脚)、data(数据脚)、+5V(电源脚)和ground(电源地)。
在ps/2键盘与pc机的物理连接上只要保证这四根线一一对应就可以了。
ps/2键盘靠pc的ps/2端口提供+5V电源,另外两个脚clock(时钟脚)和data(数据脚)都是集电极开路的,所以必须接大阻值的上拉电阻。
它们平时保持高电平,有输出时才被拉到低电平,之后自动上浮到高电平。
现在比较常用的连接器如图1所示。
每种连接器的引脚定义如下所示:
图1ps/2接口的mini-din连接器
2.2电气特性
在刚才提到连接器上有四个有趣的管脚:
电源地、+5、数据和时钟。
host(计算机)提供+5V,并且键盘/鼠标的地连接到host的电源地上。
数据和时钟都是集电极开路的,这就意味着它们通常保持高电平而且很容易下拉到地(逻辑0)。
任何连接到ps/2鼠标、键盘或host的设备在时钟和数据线上要有一个大
的上拉电阻。
置“0”就把线拉低,置“1”就让线上浮成高电平。
参考图2中数据和时钟线的一般接口结构。
图2:
数据线和时钟线的集电极开路接口。
数据和时钟分别由微控制器的a端口和b端口读入。
这两条线通常保持+5V,但可以往端口c和d写入1来拉到地。
结果是,数据是d的反相,时钟是c的反相。
换句话说,每次数据线上发送一位数据并且每在时钟线上发一个脉冲就被读入。
从键盘/鼠标发送到主机的数据在时钟信号的下降沿(当时钟从高变到低的时候)被读取:
从主机发送到键盘/鼠标的数据在上升沿(当时钟从低变到高的时候)被读取。
不管通讯的方向怎样,键盘/鼠标总是产生时钟信号。
如果主机要发送数据,它必须首先告诉设备开始产生时钟信号(这个过程在下一章节中被描述)。
最大的时钟频率是33khz,而且大多数设备工作在10—20khz。
如果你要制作一个ps/2设备,我推荐你把频率控制在15khz左右。
所有数据安排在字节中,每个字节为一帧包含了11-12个位。
表1数据帧格式说明
数据位中1的个数加上校验位总是为奇数(这就是奇校验)。
这是用来进行错误检测的。
这个位不会出现在设备发送数据到主机的过程中。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ps2 协议
![提示](https://static.bdocx.com/images/bang_tan.gif)