cody 发表于 2008-12-16 10:30:51

PS2协议开发心得 【恢复】

最近在开发一款PS2产品(这里说的PS2是指使用PS2协议的键盘鼠标,不是PS2游戏机,呵呵),学到了很多东西,也遇到很多问题,在这里把自己认为重要的东西记下来,作为以后的备忘,如果你在这篇文章中学到哪怕一点点东西,我都将会感到很荣幸。



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



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

http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_546117.JPG

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

 

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

http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_546137.JPG

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

 

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

 http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_546157.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鼠标使用的坐标系是不同的:

http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_546158.JPG

 (原文件名:坐标.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.

bluerain 发表于 2008-12-16 10:41:16

沙发

MyCao 发表于 2008-12-16 11:02:53

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

mysky 发表于 2008-12-16 11:46:17

mark

lanfeng007 发表于 2008-12-16 13:39:17

好东西一定要收藏!

cody 发表于 2008-12-16 14:07:54

回2楼:

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



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

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

ivws 发表于 2008-12-16 14:40:57

先做记号!

bccdn 发表于 2008-12-16 16:42:14

谢谢..

computer-xu 发表于 2008-12-16 17:22:39

顶一下,还用不着PS2

hhh_ccboy 发表于 2008-12-16 18:27:33

MARK

ilikemcu 发表于 2008-12-16 21:12:36

支持楼主,虽然暂时用不着。

yaya001 发表于 2008-12-17 00:22:49

mark

machao 发表于 2008-12-17 00:29:18

LZ是真正在做事情,表扬一下。

yaya001 发表于 2008-12-17 00:43:26

可是偏偏就在一台HP的PC上不能识别,找了很久才发现问题所在



想问一下 问题在哪里啊

wormchen 发表于 2008-12-17 08:26:35

好动西,收藏啦!

ashley123zwx 发表于 2008-12-17 10:12:18

好东西,收藏

Fei_Mu 发表于 2008-12-17 10:49:11

示波器不错

zc3909 发表于 2008-12-17 12:23:07

收藏

lixun00 发表于 2008-12-17 12:45:40

这样的开发心得很难德...

yhb587 发表于 2008-12-25 14:12:54

收藏

wkman 发表于 2008-12-25 16:09:15

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

Forever 发表于 2008-12-26 10:02:20

谢谢了

cody 发表于 2008-12-26 10:58:25

【20楼】 wkman 



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



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



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

ashley123zwx 发表于 2008-12-26 22:08:44

好东西,收藏

wxws 发表于 2008-12-27 01:01:53

mark

yswanan 发表于 2009-3-12 19:11:08

谢了··

huasoft 发表于 2009-3-13 09:30:31

写的很好,收藏。

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

bad_fpga 发表于 2009-3-13 10:21:01

PS2确实难搞~~谢谢

Houcius 发表于 2009-3-13 10:45:58

前几天有同学在弄PS2接口的扫描仪,呵呵,自带两个PS2接口一公一母,但是两个PS2接口不是全部相通,只有电源线是通的,查了老半天才查出来!

xieguangye 发表于 2009-3-13 11:10:57

MARK

liuhengming 发表于 2009-3-28 19:54:20

顶一下 谢谢楼主的分享

lionliu 发表于 2009-3-31 14:29:36

收藏

lengqing1309 发表于 2009-3-31 17:00:34

MARK

wkman 发表于 2009-3-31 20:05:19

不错。,好像mcu用的奇怪点。是松瀚的???

jchqxl 发表于 2009-3-31 20:18:25

谢谢咯

y_square 发表于 2009-3-31 23:12:43

很想知道为什么偏偏在HP那台不通过

kbdcj2000 发表于 2009-4-1 00:50:55

mark!

shinehjx 发表于 2009-4-1 08:21:00

好贴一定要顶!

wenwu 发表于 2009-4-1 08:32:26

谢谢。MARK

loadstar 发表于 2009-4-1 08:39:12

mark

deepin 发表于 2009-4-1 08:46:32

MARK
收藏了先!

jaky80000 发表于 2009-4-1 08:53:03

谢谢!

sunyouyuan 发表于 2009-4-1 12:58:15

谢谢

superyongzhe 发表于 2009-4-1 13:03:30

mark,好东东!

dfzcx 发表于 2009-4-1 14:02:01

收藏

wormchen 发表于 2009-4-1 16:51:00

好东西,做个记号!

zrx737 发表于 2009-4-1 17:57:58

mark

a_zhi 发表于 2009-4-1 18:34:43

谢谢!

wenhaoo 发表于 2009-4-1 23:39:35

好东西支持。。1!

lizq 发表于 2009-5-2 09:05:12

可是偏偏就在一台HP的PC上不能识别,找了很久才发现问题所在

想问一下 问题在哪里啊

lizq 发表于 2009-5-2 11:36:19

可是偏偏就在一台HP的PC上不能识别,找了很久才发现问题所在

想问一下 问题在哪里啊

z_zt 发表于 2009-5-2 13:23:05

Thanks & mark

czzhouyun 发表于 2009-5-2 13:41:48

占位

lizq 发表于 2009-5-2 14:20:49

可是偏偏就在一台HP的PC上不能识别,找了很久才发现问题所在   

想问一下 问题在哪里啊

ximitiejiang 发表于 2009-5-3 16:22:07

收藏

lizq 发表于 2009-5-3 21:13:57

可是偏偏就在一台HP的PC上不能识别,找了很久才发现问题所在   

想问一下 问题在哪里啊

deepin 发表于 2009-5-4 09:02:34

MARK

abcling 发表于 2009-5-6 22:38:37

设备到主机的时序图是不是有错误啊?
设备发数据到主机,不是在下降沿被读取的吗?怎么看那图片好象是上升沿被读取似的!!!

jj3055 发表于 2009-5-6 22:58:14

收藏

kidcao1987 发表于 2009-5-8 20:02:36

以后要用到 先做个几号

ju748 发表于 2009-5-23 22:26:05

厉害啊。。调了好几天,都快垮了示波器看不到全部的信号啊,这次看来有戏了谢谢楼主

chinamanzhong 发表于 2009-5-25 23:39:28

收下了,谢谢

hnhxk2983 发表于 2009-5-29 19:10:35

MARK
收藏好

lq20434 发表于 2009-5-29 21:12:36

作个记号哈!

tiger1125 发表于 2009-8-7 02:27:12

mark

jbb0523 发表于 2009-8-7 07:47:30

做个标记,以便以后查找方便。。。PS2。。。。

QZDZ 发表于 2009-8-7 11:29:55

非常好的东西

jianbo513 发表于 2009-8-7 11:37:03

做个标记!

stevencao 发表于 2009-8-7 15:24:02

好东西,支持一下

fan313220 发表于 2009-8-9 13:23:48

mark

yangyi 发表于 2009-8-9 14:38:36

MARK

duwai 发表于 2009-8-9 16:53:45

mark

yxrqs 发表于 2009-8-9 17:11:50

谢谢!LZ

wchqq 发表于 2009-8-13 18:53:33

正是我想要的

coolc 发表于 2009-8-26 21:02:53

mark

chiooo 发表于 2009-8-28 09:38:33

mark

KANGYD 发表于 2009-8-28 10:00:23

好文章啊!马克

wear778899 发表于 2009-8-28 10:10:13

收藏

bcfai123 发表于 2009-8-28 10:56:34

正想学学ps2谢谢LZ

liangbmw 发表于 2009-8-29 10:45:22

MARK

sagetom 发表于 2009-9-3 16:35:12

mark,很好,很不错。

hhhhaaaa 发表于 2009-9-4 11:53:03

留个记号,以后好看。

xinjie1023 发表于 2009-10-6 14:41:02

学习

hailiyidishui 发表于 2009-10-6 16:34:55

mark

xinqiji 发表于 2009-10-6 16:54:07

书签。

dwrszgq 发表于 2009-11-3 21:37:31

好贴,记录一下,有空看

jiangjx 发表于 2010-1-5 19:17:30

mark

flyunlimit 发表于 2010-1-5 19:32:07

标记。回家再看

luocheng.sz 发表于 2010-1-5 20:12:51

可是偏偏就在一台HP的PC上不能识别,找了很久才发现问题所在   

想问一下 问题在哪里啊

zengyi703 发表于 2010-1-8 22:24:34

mark

bluefeel 发表于 2010-1-8 22:45:59

mark

HONY0411 发表于 2010-3-6 22:33:00

学习了
这在调试单片机模拟的PS2键盘,开机初始化通过,可以往windows记事本发字符。
但是,只要移动鼠标(买来的标准PS2鼠标),键盘的MCU就能接收到数据。不知道为啥?

ringan865 发表于 2010-3-7 15:50:20

mark

fy024 发表于 2010-3-7 16:28:37

mark

hongyancl 发表于 2010-3-7 16:33:43

回复【楼主位】cody
-----------------------------------------------------------------------

ding

eblc1388 发表于 2010-3-7 22:33:43

【57楼】 abcling

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


http://cache.amobbs.com/bbs_upload782111/files_27/ourdev_537104.gif
(原文件名:PS2_wave_1.gif)

http://cache.amobbs.com/bbs_upload782111/files_27/ourdev_537105.gif
(原文件名:PS2_wave_capture.gif)

superyongzhe 发表于 2010-3-8 20:19:40

好东西,mark!!

usrusr22 发表于 2010-3-28 11:49:21

正想学学ps2谢谢LZ 333333333

thinki 发表于 2010-3-28 12:51:21

先Mark一下吧

gdourf 发表于 2010-3-28 13:56:00

mark
页: [1] 2
查看完整版本: PS2协议开发心得 【恢复】