PS2接口通讯的一些细节问题

PS2协议网上的资料很多,这里不再细述,仅就通讯双方(以键盘和PC为例)交换信息的细节作分析。

1,PS2的基本常识主要包括:

     1.1  PS2通信由CLK和DATA两个线构成

     1.2  PS2的CLK不论PC->KeyBoard,还是PC<-KeyBoard,都是由KeyBoard提供

     1.3  数据帧构成:起始位(1bit) + 数据位(8bit) + 奇校验位(1bit) + 停止位(1bit) + 应答位(1bit, 只在PC->KeyBoard中,KeyBoard产生)

     1.4 CLK平时状态为高电平,低电平表示抑制通讯,说明PC现在处理不过来,需要KeyBoard将发送的数据暂时缓存

     1.5 数据在CLK下降沿被采样

     1.6 数据发送的时序如下:(a) 键盘发送时序;(b) 键盘接收时序

 

2, PC->KeyBoard中,KeyBoard怎么知道PC有数据要发给自己?

      正常情况下,CLK和DATA两根线都是高电平。PC下拉CLK超过100us,再下拉DATA,然后释放CLK 即让KeyBoasd在CLK上升沿采样到DATA为低 。KeyBoard识别这个特征后,意识到PC有东西要传,然后主动提供时钟。

 

3, PC<-KeyBoard中,PC怎么知道KeyBoard有数据要发给自己?

      PC等待CLK拉低,在下降沿时采样DATA 为低时 ,认为KeyBoard有数据传送。

 

4,PC没有作好接收的准备,怎么办?

     PC如果暂时不能接收新的数据,就主动把CLK拉低了。KeyBoard看到CLK为低,会将数据暂存在buffer里的。

 

4,KeyBoard没有作好接收的准备,怎么办?

     KeyBoard在CLK上升沿采样到DATA为高时,意识到PC有数据要发送,如果不能接收,就不提供时钟;即上升沿后的CLK为高电平,这时KeyBoard不要将CLK下拉,让PC的起始bit发不出来,使PC处理等待发送状态至直KeyBoard准备好可以接收,才提供时钟。

 

5,具体单片机实现代码

     5.1 单片机-->PS/2键盘

 

     5.2 单片机<--PS/2键盘

 

     5.3  单片机中断接收PS/2键盘的消息

 

      5.3 PS/2键盘初始化

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值