原创文章,如有转载,请注明出处:http://blog.csdn.net/desert2009sz/article/details/6873834
一、系统分析
DVD的双游戏手柄通讯是由SYNC, CLK, DATA1,DATA2组成,DATA1和DATA2分别代表从主、副手柄上收到的按键数据。
工作原理:DVD每隔80ms会在SYNC脚上产生一个高脉冲,用于唤醒游戏手柄进入收数据状态;然后会在CLK上产生低、高、低、高的脉冲信号(9个,第一个低脉冲较长一点,便于手柄同步);在CLK变低后等到一段时间,DVD检测DATA1和DATA2的数据,将保存到IOP与RISC交换的内存区。
时序图如下:
二、系统设计
无线游戏手柄实现的方式分2种:
①专用MCU收码后,模拟有线手柄协仪
无线游戏手柄发码→MCU接收→解码→转码→模拟有线手柄协仪→DVD接收
②屏驱MCU收码后,转发给DVD,DVD通过IOP接收后,将数据存放到RISC交换区
屏驱MCU收码→转发给DVD→DVD接收→解码→转码→存入IOP与RISC交换区
双手柄控制方式如下图所示:
优点:
①灵活性
单游戏手柄:用屏驱MCU方式实现,不需要增加任何硬件成本;(如果想保护自己的利益,也可以增加使用专用MCU方案,成本也较低)
双游戏手柄:在单游戏手柄方式下,增加一个专用MCU就可以实现。
用户可以自由选择,软件上可以做的兼容,PCB预留专用MCU空位,根据客户需要选择单打,还是双打,非常方便。
②性价比
由于架构合理,操作体验和有线时速度一样;无线方式省掉了有线那块线材,降低了成本 ;
③稳定性
省掉线材可以提高手柄的寿命,减少故障率
三、需要注意的问题
①专用MCU方式实现时,需要调整IOP中SYNC,CLOCK的时序,特别需要注意DVD读取数据的前的延时时间
②专用MCU方式实现时,还需要注意处理好手柄去抖动,不然有时候同步时钟出问题时,就会漏掉了一次放数据的机会,这样就会出现有时候按键释放的现象。举例:如在玩8位魂斗罗时,长按下时,游戏角色是应该趴下的,但如果没有做去抖动,就会出现有时候会站起来。这种时候就会出被NPC的流弹打死。
③需要注意将各种组合键做进去,这里有个小技巧,按位判断比逐渐比较每组键的速度要节省很多执行时间和代码空间
④屏驱MCU方式实现时,需要将IOP相关的汇编看懂才行,解码那块会做不好,后面的就更不用说了,而且还会影响游戏的操作体验(速度)
四、补充
专用MCU方式已经实现,帮现有公司节约了70%的成本;
屏驱MCU方式还在构思中,如能实现,单无线手柄可以相比以前要节约100%成本,双手柄的话也节约70%的成本