搜索
bottom↓
回复: 164

PS2协议开发心得 【恢复】

[复制链接]

出0入0汤圆

发表于 2008-12-16 10:30:51 | 显示全部楼层 |阅读模式
最近在开发一款PS2产品(这里说的PS2是指使用PS2协议的键盘鼠标,不是PS2游戏机,呵呵),学到了很多东西,也遇到很多问题,在这里把自己认为重要的东西记下来,作为以后的备忘,如果你在这篇文章中学到哪怕一点点东西,我都将会感到很荣幸。



关于PS2更详细的文章,应该算是Adam Chapweske著Roy Show译的“PS2技术参考”,其实开发一款PS2产品,兼容性是很重要的,在我们开发的这款PS产品中就出现过这样的问题,我们测试了几十台PC都是没问题的,可是偏偏就在一台HP的PC上不能识别,找了很久才发现问题所在。



设备到主机的通信,当设备要发送数据给主机时,只要检测到总线有空,就可以发了,这里简单给出波形图,更详细的请参考“PS2技术参考“。



 (原文件名:d to H.JPG) 

 

下面是主机到设备通信的简单波形图:



 (原文件名:H to D.JPG) 

 

使用示波器抓下来的主机跟设备通信的实际波形:

 

 (原文件名:PS2KB_WF01.JPG) 



主机到设备的通信,当主机要发送数据给设备时,大部分PC都会先拉低时钟线至少100us来抑制通信,然后才开始产生数据发送请求状态,但是也有部分PC不会拉低时钟来抑制通信,而是直接产生数据发送请求状态,所以在检测主机有没有数据发送的时候直接检测有没有数据发送请求是比较好的,一般情况下,当PC要发送数据给设备时,会重试三次,每次10ms超时,如果在重试三次设备都没有响应,那就比较危险了,如果是要发送关健的数据,可能会直接导致设备不能识别的情况



对于PS2键盘,必须要回复的命令如下:



1,        主机命令设备复位(0xff),设备必须应答0xfa后回复0xaa;

2,        主机请求获得设备ID命令(0xf2),设备必须应答0xfa后回复0xab,0x83;

3,        主机ECHO命令(0xee),设备直接回复0xee;



除以上命令之外的其它命令,设备只要回复0xfa即可,当然要视设备的功能作相应的动作。



对于PS2鼠标,要做的事情比较多,而且比键盘更容易不被PC识别,一个简单的PS2鼠标,必须支持STREAM模式及WRAP模式,STREAM为鼠标的主要功能,但是有些PC刚开机的时候会命令鼠标进入WRAP模式,否则就不识别此设备,还有一点比较重要的就是不要在PC发送使能鼠标(命令0xf4)之前发送移动及按键数据,而且一旦收到禁止数据命令(0xf5)后立即停止发送移动及按键数据,直到主机再次发送使能命令之后。否则会出现在有些PC中虽然鼠标能被识别,而且在Windows也能移动,但是快速移动几秒钟之后鼠标就死了,使用示波器量数据线,发现数据还在传输,实际上在这种情况下,主机并没有拉低时钟来禁止鼠标,而是认为这个设备是一个疯狗,不会理会它发送的任何数据。



除了要支持以上二种模式之外,必须回复的命令如下:



1.        主机命令设备复位命令(0xff),设备必须应答0xfa后回复0xaa,0x00

2.        主机请求获得设备ID命令(0xf2),设备必须应答0xfa后回复ID:0x03(适用于标准的3D鼠标);

3.        主机请求状态命令(0xe8),设备回复:0xfa,0x00,0x02,0x64;







PS鼠标使用如下的坐标系,这跟USB鼠标使用的坐标系是不同的:



 (原文件名:坐标.JPG)  

不管是键盘还是鼠标,在整个Windows启动的过程中会被检测二次,第一次是BIOS检测,第二次是Windows检测,如果第一次未通过,则第二次不会再检测,而且二次检测都必须通过再能使用,有趣的是有些PC在BIOS检测之后,Windows启动之前再插入键盘,还是可以使用的,但是Windows启动之后就会拉低时钟来禁止设备,





附件是实际的波形及部份代码



PS2实际波形ourdev_546437.rar(文件大小:65K) (原文件名:PS2 Waveform.rar) 

PS2键盘鼠标例程ourdev_546438.rar(文件大小:4K) (原文件名:PS2KM_CODE.rar) 





本贴被 cody 编辑过,最后修改时间:2008-12-16,14:06:49.

出0入0汤圆

发表于 2008-12-16 10:41:16 | 显示全部楼层
沙发

出0入0汤圆

发表于 2008-12-16 11:02:53 | 显示全部楼层
收下了,想问下LZ的上面的哪个波形图是什么东东做的,还是测试出来的。

出0入0汤圆

发表于 2008-12-16 11:46:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-12-16 13:39:17 | 显示全部楼层
好东西一定要收藏!

出0入0汤圆

 楼主| 发表于 2008-12-16 14:07:54 | 显示全部楼层
回2楼:

收下了,想问下LZ的上面的哪个波形图是什么东东做的,还是测试出来的。



-----------------------------

使用示波器测量再存储下来的。

出0入0汤圆

发表于 2008-12-16 14:40:57 | 显示全部楼层
先做记号!

出0入0汤圆

发表于 2008-12-16 16:42:14 | 显示全部楼层
谢谢..

出0入0汤圆

发表于 2008-12-16 17:22:39 | 显示全部楼层
顶一下,还用不着PS2

出0入0汤圆

发表于 2008-12-16 18:27:33 | 显示全部楼层
MARK

出0入50汤圆

发表于 2008-12-16 21:12:36 | 显示全部楼层
支持楼主,虽然暂时用不着。

出0入0汤圆

发表于 2008-12-17 00:22:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-12-17 00:29:18 | 显示全部楼层
LZ是真正在做事情,表扬一下。

出0入0汤圆

发表于 2008-12-17 00:43:26 | 显示全部楼层
可是偏偏就在一台HP的PC上不能识别,找了很久才发现问题所在



想问一下 问题在哪里啊

出0入0汤圆

发表于 2008-12-17 08:26:35 | 显示全部楼层
好动西,收藏啦!

出0入0汤圆

发表于 2008-12-17 10:12:18 | 显示全部楼层
好东西,收藏

出0入0汤圆

发表于 2008-12-17 10:49:11 | 显示全部楼层
示波器不错

出0入0汤圆

发表于 2008-12-17 12:23:07 | 显示全部楼层
收藏

出0入0汤圆

发表于 2008-12-17 12:45:40 | 显示全部楼层
这样的开发心得很难德...

出0入0汤圆

发表于 2008-12-25 14:12:54 | 显示全部楼层
收藏

出0入0汤圆

发表于 2008-12-25 16:09:15 | 显示全部楼层
什么示波器???正准备买个好点的。。。。

出0入0汤圆

发表于 2008-12-26 10:02:20 | 显示全部楼层
谢谢了

出0入0汤圆

 楼主| 发表于 2008-12-26 10:58:25 | 显示全部楼层
【20楼】 wkman 



 什么示波器???正准备买个好点的。。。。  



----------------------



LeCroy的,这个示波器比较贵,很大个,有四五十斤重(我亲自搬过),听测试工程师说当时买了40多W,不知道是不是真的,没有去考证.

出0入0汤圆

发表于 2008-12-26 22:08:44 | 显示全部楼层
好东西,收藏

出0入228汤圆

发表于 2008-12-27 01:01:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-3-12 19:11:08 | 显示全部楼层
谢了··

出0入0汤圆

发表于 2009-3-13 09:30:31 | 显示全部楼层
写的很好,收藏。

以前我也做过PS2,当时费了好大劲。
我的感受是,PS2资料比较少,网上最全的资料也只是“PS2技术参考”。
论通用性,USB HID键盘是更通用的方式,而且价格也在不断的降低,最近我正要把PS2的产品转型到USB HID

出0入0汤圆

发表于 2009-3-13 10:21:01 | 显示全部楼层
PS2确实难搞~~谢谢

出0入0汤圆

发表于 2009-3-13 10:45:58 | 显示全部楼层
前几天有同学在弄PS2接口的扫描仪,呵呵,自带两个PS2接口一公一母,但是两个PS2接口不是全部相通,只有电源线是通的,查了老半天才查出来!

出0入0汤圆

发表于 2009-3-13 11:10:57 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-3-28 19:54:20 | 显示全部楼层
顶一下 谢谢楼主的分享

出0入0汤圆

发表于 2009-3-31 14:29:36 | 显示全部楼层
收藏

出10入8汤圆

发表于 2009-3-31 17:00:34 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-3-31 20:05:19 | 显示全部楼层
不错。,好像mcu用的奇怪点。是松瀚的???

出0入0汤圆

发表于 2009-3-31 20:18:25 | 显示全部楼层
谢谢咯

出0入0汤圆

发表于 2009-3-31 23:12:43 | 显示全部楼层
很想知道为什么偏偏在HP那台不通过

出0入0汤圆

发表于 2009-4-1 00:50:55 | 显示全部楼层
mark!

出0入0汤圆

发表于 2009-4-1 08:21:00 | 显示全部楼层
好贴一定要顶!

出0入0汤圆

发表于 2009-4-1 08:32:26 | 显示全部楼层
谢谢。MARK

出0入0汤圆

发表于 2009-4-1 08:39:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-4-1 08:46:32 | 显示全部楼层
MARK
收藏了先!

出0入0汤圆

发表于 2009-4-1 08:53:03 | 显示全部楼层
谢谢!

出0入0汤圆

发表于 2009-4-1 12:58:15 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2009-4-1 13:03:30 | 显示全部楼层
mark,好东东!

出0入0汤圆

发表于 2009-4-1 14:02:01 | 显示全部楼层
收藏

出0入0汤圆

发表于 2009-4-1 16:51:00 | 显示全部楼层
好东西,做个记号!

出0入0汤圆

发表于 2009-4-1 17:57:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-4-1 18:34:43 | 显示全部楼层
谢谢!

出0入0汤圆

发表于 2009-4-1 23:39:35 | 显示全部楼层
好东西支持。。1!

出0入0汤圆

发表于 2009-5-2 09:05:12 | 显示全部楼层
可是偏偏就在一台HP的PC上不能识别,找了很久才发现问题所在

想问一下 问题在哪里啊

出0入0汤圆

发表于 2009-5-2 11:36:19 | 显示全部楼层
可是偏偏就在一台HP的PC上不能识别,找了很久才发现问题所在  

想问一下 问题在哪里啊

出0入0汤圆

发表于 2009-5-2 13:23:05 | 显示全部楼层
Thanks & mark

出0入84汤圆

发表于 2009-5-2 13:41:48 | 显示全部楼层
占位

出0入0汤圆

发表于 2009-5-2 14:20:49 | 显示全部楼层
可是偏偏就在一台HP的PC上不能识别,找了很久才发现问题所在   

想问一下 问题在哪里啊

出0入0汤圆

发表于 2009-5-3 16:22:07 | 显示全部楼层
收藏

出0入0汤圆

发表于 2009-5-3 21:13:57 | 显示全部楼层
可是偏偏就在一台HP的PC上不能识别,找了很久才发现问题所在   

想问一下 问题在哪里啊

出0入0汤圆

发表于 2009-5-4 09:02:34 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-5-6 22:38:37 | 显示全部楼层
设备到主机的时序图是不是有错误啊?
设备发数据到主机,不是在下降沿被读取的吗?怎么看那图片好象是上升沿被读取似的!!!

出0入0汤圆

发表于 2009-5-6 22:58:14 | 显示全部楼层
收藏

出0入0汤圆

发表于 2009-5-8 20:02:36 | 显示全部楼层
以后要用到 先做个几号

出0入0汤圆

发表于 2009-5-23 22:26:05 | 显示全部楼层
厉害啊。。调了好几天,都快垮了示波器看不到全部的信号啊,这次看来有戏了谢谢楼主

出0入0汤圆

发表于 2009-5-25 23:39:28 | 显示全部楼层
收下了,谢谢

出0入0汤圆

发表于 2009-5-29 19:10:35 | 显示全部楼层
MARK
收藏好

出0入0汤圆

发表于 2009-5-29 21:12:36 | 显示全部楼层
作个记号哈!

出0入0汤圆

发表于 2009-8-7 02:27:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-8-7 07:47:30 | 显示全部楼层
做个标记,以便以后查找方便。。。PS2。。。。

出0入0汤圆

发表于 2009-8-7 11:29:55 | 显示全部楼层
非常好的东西

出0入0汤圆

发表于 2009-8-7 11:37:03 | 显示全部楼层
做个标记!

出0入0汤圆

发表于 2009-8-7 15:24:02 | 显示全部楼层
好东西,支持一下

出0入0汤圆

发表于 2009-8-9 13:23:48 | 显示全部楼层
mark

出10入10汤圆

发表于 2009-8-9 14:38:36 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-8-9 16:53:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-8-9 17:11:50 | 显示全部楼层
谢谢!LZ

出0入0汤圆

发表于 2009-8-13 18:53:33 | 显示全部楼层
正是我想要的

出0入0汤圆

发表于 2009-8-26 21:02:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-8-28 09:38:33 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-8-28 10:00:23 | 显示全部楼层
好文章啊!马克

出0入0汤圆

发表于 2009-8-28 10:10:13 | 显示全部楼层
收藏

出0入0汤圆

发表于 2009-8-28 10:56:34 | 显示全部楼层
正想学学ps2  谢谢LZ

出0入0汤圆

发表于 2009-8-29 10:45:22 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-9-3 16:35:12 | 显示全部楼层
mark,很好,很不错。

出0入0汤圆

发表于 2009-9-4 11:53:03 | 显示全部楼层
留个记号,以后好看。

出0入0汤圆

发表于 2009-10-6 14:41:02 | 显示全部楼层
学习

出0入0汤圆

发表于 2009-10-6 16:34:55 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-10-6 16:54:07 | 显示全部楼层
书签。

出0入0汤圆

发表于 2009-11-3 21:37:31 | 显示全部楼层
好贴,记录一下,有空看

出0入0汤圆

发表于 2010-1-5 19:17:30 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-5 19:32:07 | 显示全部楼层
标记。回家再看

出0入0汤圆

发表于 2010-1-5 20:12:51 | 显示全部楼层
可是偏偏就在一台HP的PC上不能识别,找了很久才发现问题所在   

想问一下 问题在哪里啊

出0入0汤圆

发表于 2010-1-8 22:24:34 | 显示全部楼层
mark

出0入85汤圆

发表于 2010-1-8 22:45:59 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-6 22:33:00 | 显示全部楼层
学习了
这在调试单片机模拟的PS2键盘,开机初始化通过,可以往windows记事本发字符。
但是,只要移动鼠标(买来的标准PS2鼠标),键盘的MCU就能接收到数据。不知道为啥?

出0入0汤圆

发表于 2010-3-7 15:50:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-7 16:28:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-7 16:33:43 | 显示全部楼层
回复【楼主位】cody
-----------------------------------------------------------------------

ding

出0入0汤圆

发表于 2010-3-7 22:33:43 | 显示全部楼层
【57楼】 abcling

设备到主机的时序图是有错误,是在下降沿被读取的。



(原文件名:PS2_wave_1.gif)


(原文件名:PS2_wave_capture.gif)

出0入0汤圆

发表于 2010-3-8 20:19:40 | 显示全部楼层
好东西,mark!!

出0入0汤圆

发表于 2010-3-28 11:49:21 | 显示全部楼层
正想学学ps2  谢谢LZ 333333333

出0入0汤圆

发表于 2010-3-28 12:51:21 | 显示全部楼层
先Mark一下吧

出0入0汤圆

发表于 2010-3-28 13:56:00 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-18 10:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表