没有合适的资源?快使用搜索试试~ 我知道了~
首页单片机驱动鼠标ps2协议
单片机驱动鼠标ps2协议
5星 · 超过95%的资源 需积分: 50 9 下载量 87 浏览量
更新于2023-06-08
评论 2
收藏 855KB PDF 举报
单片机驱动鼠标,最好用的ps/2协议,由英文翻译来,花了不少时间,本人亲测有效,欢迎下载,多多交流。
资源详情
资源评论
资源推荐
第一章 PS/2 协议
引言
PS/2设备接口用于许多现代的鼠标和键盘,它是由IBM开发并且最初出现在IBM技术参考手册里。但是,
当我知道的时候这篇文件就已经很多年没有印刷了,因此关于这个内容现在没有官方的出版物。我无法访问
IBM的技术参考手册,所以本文中的所有信息都来自于我自己的经验及一些参考的帮助。
这个文件描述了用于PS/2鼠标、PS/2键盘的接口。我将论及物理和电气接口也包括协议。如果你需要更高
级的信息,诸如命令、数据包的格式或者其他关于键盘鼠标的特别细节,详见本文第二章和第三章。
连接器
常用的PS/2端口是6脚的mini-DIN,PC键盘常用的也是6脚的mini-DIN。具有6脚mini-DIN的键盘通常被叫
做“PS/2”键盘。现在流行的键盘(和鼠标)大多是PS/2或USB的。这篇文章不适用于USB设备,它们使用了一
种完全不同的接口。
PS/2连接器的引脚定义如下所示:
在PS/2连接器上有四个管脚:电源地、+5V、数据和时钟。
主机提供+5V,并且键盘/鼠标的地线连接到主机的电源地
上。数据和时钟都是集电极开路(OC)的,因此任何你连接到
PS/2鼠标、键盘或主机的设备在时钟和数据线上都要有一个
大的上拉电阻(一般取10KΩ)。置“0”就把线拉低,置
“1”就让线上浮成高电平。参考右图中数据和时钟线的一
般接口。(注意:如果你打算使用象51这样的微控制器,由
于它们的I/O管脚是双向的,你可以跳过晶体管和缓冲门,
并且通用同一个管脚进行输入和输出。)
一般性描述
PS/2鼠标和键盘履行一种双向同步串行协议。换句话说,
每次数据线上发送一位数据并且每在时钟线上发一个脉冲
就被读入。键盘/鼠标可以发送数据到主机,而主机也可以发送数据到设备,但主机总是在总线上有优先权,
它可以在任何时候抑制来自于键盘/鼠标的通讯,只要把时钟拉低即可。
从键盘/鼠标发送到主机的数据在时钟信号的下降沿(当时钟从高变到低的时候)被读取;从主机发送
到键盘/鼠标的数据在上升沿(当时钟从低变到高的时候)被读取。不管通讯的方向怎样,键盘/鼠标总是产
生时钟信号。如果主机要发送数据,它必须首先告诉设备开始产生时钟信号(这个过程在后面中详细讲解)。
最大的时钟频率是33kHz,而且大多数设备工作在10-20kHz。如果你要制作一个PS/2设备,我推荐你把频率
控制在15kHz左右,这就意味着时钟应该是高40us低40us。
所有数据安排在字节中,每个字节为一帧,包含了11-12个位。这些位的含义如下:
● 1个起始位,总是为0
● 8个数据位,低位在前
● 1个校验位,奇校验
● 1个停止位,总是为1
● 1个应答位,仅在主机对设备的通讯中
当主机发送数据给键盘/鼠标时,设备回送一个握手信号来应答数据包已经收到。这个位不会出现在设备
发送数据到主机的过程中。
设备到主机的通讯过程
数据和时钟线都是集电极开路结构(正常保持高电平)。当键盘或鼠标等待发送数据时,它首先检查时
钟以确认它是否是高电平。如果不是,那么是主机抑制了通讯,设备必须缓冲任何要发送的数据直到重新获
得总线的控制权(键盘有16 字节的缓冲区,而鼠标的缓冲区仅存储最后一个要发送的数据包)。如果时钟线
是高电平,设备就可以开始传送数据。
如在上一节提及的,键盘和鼠标使用一种每帧包含11位的串行协议。这些位含义是:
● 1个起始位,总是为0
● 8个数据位,低位在前
● 1个校验位,奇校验
● 1个停止位,总是为1
每位在时钟的下降沿被主机读入,如图2和3所示:
时钟频率为10-16.7kHz。从时钟脉冲的上升沿到一个数据转变的时间至少要有5us,数据变化到时钟脉
冲的下降沿的时间至少要有5us并且不大于25us。这个定时必须严格遵循。主机可以在第11个时钟脉冲(停止
位)之前把时钟线拉低,导致设备放弃发送当前字节(这是非常罕见的)。在停止位发送后,设备在发送下
个包前至少应该等待50us。这将给主机一定时间处理接收到的字节(主机在收到每个包时,通常自动做这
个),在处理字节这段时间内,主机应抑制其发送。在主机释放抑制后,设备至少应该在发送任何数据前等5
0us。
我推荐仿真键盘/鼠标采用下面的过程发送一字节的数据到主机:
1) 等待Clock线为高电平,即等待主机释放Clock线;
2) 延时50us;
3) 判断Clock线是否为高电平?
No――跳到第1步;
4) Data线是否为高电平?
No――放弃(跳到从主机读取字节的程序中) 。
5) 延迟20us,输出起始位(0),然后延迟20us,再拉低Clock线保持40us后释放Clock线,形成一个脉冲;
6) 延时20us,测试Clock线是否为高电平?
No――跳到第1步;
7) 输出第1个数据位,然后延时20us,再拉低Clock线保持40us后释放Clock线,形成一个脉冲;
图2 设备到主机的通讯;
当时钟为高,数据线改变状态;
在时钟信号的下降沿数据被锁存。
图3 ”Q”键的扫描码从键盘发送到计算
机;通道A是时钟信号;
通道B是数据信号。
8) 重复6-7步发送剩下的7个数据位和校验位;
9) 延时20us,测试Clock线是否为高电平?
No――跳到第1步;
10) 输出停止位(1),然后延时30us,再拉低Clock线保持50us后释放Clock线,形成最后一个脉冲。
主机到设备的通讯过程
在这里,被发送的数据包有点不同于设备到主机的通讯过程。
首先,PS/2设备总是产生时钟信号。如果主机要发送数据,它必须首先把时钟和数据线设置为“请求发
送”状态,即:
● 通过下拉时钟线至少100us来抑制通讯;
● 通过下拉数据线来应用“请求发送”,然后释放时钟。
PS/2设备应该在不超过10ms的间隔内就要检查这个状态。当设备检测到这个状态,它将开始产生标记下
的八个数据位和一个停止位的时钟脉冲。主机仅当时钟线为低的时候改变数据线,而数据在时钟脉冲的上升
沿被锁存。这与发生在设备到主机的通讯过程中正好相反。
在停止位发送后,设备要应答接收到的字节,就把数据线拉低并产生最后一个时钟脉冲。如果主机在第1
1 个时钟脉冲后不释放数据线,设备将继续产生时钟脉冲,直到数据线被释放(然后设备将产生一个错误)。
主机可以在第11个时钟脉冲(应答位)前中止一次传送,只要下拉时钟线至少100us。
要使得这个过程易于理解,主机必须按下面的步骤发送数据到PS/2设备:
1) 把Clock线拉低至少100us;
2) 把Data线拉低;
3) 释放Clock线;
4) 等待PS/2设备把Clock线拉低;
5) 设置/复位Data线发送第一个数据位;
6) 等待PS/2设备把时钟拉高;
7) 等待PS/2设备把时钟拉低;
8) 重复5-7步发送剩下的7个数据位和校验位;
9) 释放Data线,即发送停止位(1);
10) 等待PS/2设备把Clock线拉高; //此步可省略,因为下一步PS/2设备还是会把Data线拉低的
11) 等待PS/2设备把Data线拉低;
12) 等待PS/2设备把Clock线拉低;
13) 等待PS/2设备释放Clock线和Data线。
图3用图形,图4以单独的时序,表示了由主机产生的信号及由PS/2设备产生的信号。注意应答位时序的
改变-数据改变发生在Clock线为高的时候(不同于其它11位是Clock线为低的时候)。
图4描述了两个重要的定时条件:(a)和(b)。(a)-从主机最初把Clock线拉低,到PS/2设备开始产生时钟
脉冲(即Clock线被PS/2设备拉低),这段时间间隔必须不大于15ms。(b)- 发送数据包(8位数据位和校验位
图3 主机到设备的通讯
图4 主机到设备通讯的详细过程
的总时间必须不大于2ms。如果这两个条件不满足,主机将产生一个错误。在包收到后,主机为了处理数据应
立刻把时钟线拉低来抑制通讯。如果主机发送的命令要求有一个应答,这个应答必须在主机释放Clock线后20
ms之内被收到;如果没有收到,则主机产生一个错误。在设备到主机通讯的情况中,时钟改变后的5us内不应
该发生数据改变的情况。
如果你要仿真一个鼠标或键盘,我推荐你按如下的过程从主机读入数据:
● 在你的主程序中,至少每10ms检测一次Data线是否为低;
● 如果Data线已被主机拉低,则从主机读取一个字节的数据。
即:
1) 等待Clock线为高电平,即等待主机释放Clock线;
2) Data线仍然为低吗?
No-有错误发生;放弃。
3) 读入8个数据位; //在读入这些位后,
4) 读入校验位; //测试时钟线数否被主机拉低,
5) 读入停止位; //这就意味着放弃这次传送。
6) Data线仍旧为低吗?
Yes-继续产生Clock信号,直到Data线为高电平,然后产生一个错误;
7) 输出应答位;
8) 检查校验位; //如果校验位不正确,则产生一个错误;
9) 延迟45us(给主机时间抑制下次的传送)。
按如下次序读取每位(8个数据位、校验位和停止位):
1) 延迟20us;
2) 把Clock线拉低;
3) 延迟40us;
4) 释放Clock线;
5) 延迟20us;
7) 读Data线。
按如下次序发送应答位:
1) 延迟15us;
2) 把Data线拉低;
3) 延迟5us;
4) 把Clock线拉低;
5) 延迟40us;
6) 释放Clock线;
7) 延迟5us;
8) 释放Data线。
(后注:PS/2设备发送8个数据位时,是按照从最低位到最高位的顺序依次发出的。)
第二章 AT-PS/2 键盘接口
引言
本章试着囊括AT和PS/2键盘各方面的问题,它包含了如低级别信号和协议、扫描码、命令集、初始化、兼容
性问题和其他各种信息。我还包含了关于PC键盘控制器的信息,这是由于它们非常相关。
应该说明的是,在这篇文章里提到的信息来自我自己的经验和其他资源,因此可能不正确。我没有参考
任何官方的文件,因为没有我能用到的。因而我提出如下的弃权:
ALL INFORMATION WITHIN THIS ARTICLE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND
FITNESS FOR A PARTICULAR PURPOSE. I DO NOT GUARANTEE ANY INFORMATION IN THIS ARTICLE IS
ACCURATE, AND IT SHOULD BE USED FOR ABSTRACT EDUCATIONAL PURPOSES ONLY.
(译者注:大伙们自己看原文吧,这个申明对要使用该文的人来说很重要!)
相关的历史
现今仍在使用中的绝大多数流行的键盘包括:
USB键盘――最后出现的键盘,被所有新式的计算机支持(Macintosh 和IBM/及其兼容机)。它们有自己
相关的复杂接口,并且不包含这篇文章中。
IBM机器兼容键盘――也叫做“AT键盘”或“PS/2键盘”,所有现代的PC都支持这个设备。它们是最容易
使用的接口,也是本文的主题。
ADB键盘――连接到老式Macintosh系统的Apple桌面总线,不包含在这篇文章中。
IBM引入了一种新型的键盘作为它每种主要桌面计算机型号的配备。最早的IBM PC和后来的IBM XT使用的
我们称之为“XT键盘”。它们很古老并和现代的键盘一点都不相同;关于XT 键盘没有在本文中论及。后来出
现了IBM AT系统,再后来出现IBM PS/2。他们引进的键盘我们至今还在使用,也是本文的主题。AT键盘和PS/2
键盘是十分相似的设备,但是PS/2使用了更小的连接器并且支持少量附加的特征。虽然如此,它仍保留了与A
T系统向后兼容,以及一些曾经流行的附加特征(因为软件总要保持向后兼容)。下面是IBM三种主要键盘的
概要:
IBM PC/XT键盘(1981):
83键
5脚DIN连接器
简单的单向串行协议
采用我们现在提及的作为第一套扫描码集
没有主机到键盘的命令
IBM AT键盘(1984):-(不向后兼容XT系统)
84-101键
5脚DIN 连接器
双向串行协议
采用我们现在提及的作为第二套扫描码集
八个主机到键盘的命令
IBM PS/2键盘(1987): - (兼容AT系统,不兼容XT系统)
84-101键
6脚mini-DIN连接器
双向串行协议
提供可选的第三套扫描码集
17个主机到键盘的命令
PS/2键盘最初是AT键盘的扩展,它支持少量附加的主机到键盘的命令并以小型连接器为特征,在这两种
设备之间只有这两个区别。但是计算机硬件决不会有象兼容性这样多的标准。由于这种原因,你今天买到的任
何键盘都与PS/2和AT系统兼容,但它可能不完全支持原始键盘的所有特征。
今天,“AT键盘”和“PS/2键盘”仅涉及它们的连接器大小。任何给定的键盘支持或不支持哪些设置及
命令是每个人的猜测。例如,我现在使用的键盘有一个PS/2风格的连接器,但它仅完全支持七个命令,部分
支持两个命令,对其他的命令只是“应答”。作为对照,我做测试的键盘有一个AT风格的连接器但是支持原
始PS/2设备的每个特征/命令(还加上少量额外的命令)。这就重要的说明了现代的键盘是兼容性的,而不是
标准。如果你的工程依赖于某些不一般的特征,它可能在一些系统上工作,而在另一些上却不能。
剩余27页未读,继续阅读
千世灵药
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1