PS2非标准PC键盘调试心得
2012-12-17 11:48
615 查看
调试PS2的内容主要分为两个部分:1.设备(如键盘)发送数据给计算机。2.计算机在开机时设别设备。
调试的第一步,应先将设备(以下用键盘来代表设备)发送数据给计算机的通信协议调通,
这一步骤相对来说比较简单,调通后可以确保发送时序没有问题,因为在开机识别键盘时,需要应答计算机的命令。先用其他的好的键盘将你自己用单片机模拟的PS2键盘带入计算机中,然后调试程序,最终使你的PS2键盘能和计算机准确的通信。
调试完第一步,就可以接着调是PS2键盘的开机识别了。
在我们调试时先抓了一帧标准键盘的通信时序:
在上电的开始:
《图片无法上传》
在调试的最开始,我们一直不清楚A段时序是如何产生的,有什么作用,键盘是在什么时候开始发送自检通过命令0xAA(现在也不知道呵呵)。于是尝试着用CLK和DATA的与或运算,来找到发送自检通过的命令,但以失败告终。然后我们在单片机上电加了一段延时,通过调节延时的长短来避开A段,发送0xAA。没想到竟然通过了BIOS的检测,但当将硬盘接上的后,又不能通过检测。分析应该是由于加上硬盘后使A段的时间发生了变化故不能用延时做。
于是将延时去掉,初始化完后直接发送0xAA,(期间调了一段时间的PS2接收函数),竟然收到计算机的命令0x45(协议上每找到该命令),在回了0xFA后竟然通过了BIOS和Windos的检测。
接收函数最后ACK的输出与协议上的有点不同:
读完STOP为后,clk为高,延时,键盘将DATA拉低,在把CLK拉低,clk释放,data释放,键盘把CLK拉低,在拉高(协议上没有这两步)
调试的第一步,应先将设备(以下用键盘来代表设备)发送数据给计算机的通信协议调通,
这一步骤相对来说比较简单,调通后可以确保发送时序没有问题,因为在开机识别键盘时,需要应答计算机的命令。先用其他的好的键盘将你自己用单片机模拟的PS2键盘带入计算机中,然后调试程序,最终使你的PS2键盘能和计算机准确的通信。
调试完第一步,就可以接着调是PS2键盘的开机识别了。
在我们调试时先抓了一帧标准键盘的通信时序:
在上电的开始:
《图片无法上传》
在调试的最开始,我们一直不清楚A段时序是如何产生的,有什么作用,键盘是在什么时候开始发送自检通过命令0xAA(现在也不知道呵呵)。于是尝试着用CLK和DATA的与或运算,来找到发送自检通过的命令,但以失败告终。然后我们在单片机上电加了一段延时,通过调节延时的长短来避开A段,发送0xAA。没想到竟然通过了BIOS的检测,但当将硬盘接上的后,又不能通过检测。分析应该是由于加上硬盘后使A段的时间发生了变化故不能用延时做。
于是将延时去掉,初始化完后直接发送0xAA,(期间调了一段时间的PS2接收函数),竟然收到计算机的命令0x45(协议上每找到该命令),在回了0xFA后竟然通过了BIOS和Windos的检测。
接收函数最后ACK的输出与协议上的有点不同:
读完STOP为后,clk为高,延时,键盘将DATA拉低,在把CLK拉低,clk释放,data释放,键盘把CLK拉低,在拉高(协议上没有这两步)
相关文章推荐
- 一种嵌入式PC非标准键盘的设计
- Visual Studio 2008 SP1键盘F10单步调试超慢解决方法
- js断点调试心得
- VS2013 MVC Web项目使用内置的IISExpress支持局域网内部机器(手机、PC)访问、调试
- [乐意黎]windows 键盘下使用Mac系统chrome的调试工具
- 项目第一次用AngularJS的ajax与beego调试心得
- C51模拟PS2键盘(三)
- 单片机系统与标准PC键盘的接口模块设计
- Android 虚拟机中与PC键盘对应的按键
- 【转】在vs2008 C++下调试控制台程序的心得及技巧
- Android 虚拟机中与PC键盘对应的按键 --14
- android真机与pc服务端的调试
- eclipse debug (调试) 学习心得
- Android 模拟器和PC物理键盘映射
- NODEMCU调试心得3 - 关于nodemcu的点点滴滴
- usb utmi接口调试心得
- win32调试API学习心得(三)
- .Text0.95的Blog程序调试汉化心得和宝玉汉化的.Text 0.95版提供下载(转载自http://webuc.net/dotey/)
- PS2接口协议和键盘扫描码
- 算法调试心得