风来风云

工作学习感悟

sunplus8202V双无线游戏手柄设计

 原创文章,如有转载,请注明出处: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%的成本


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/desert2009sz/article/details/6873834
个人分类: DVD
想对作者说点什么? 我来说一句

VC++ MFC 游戏手柄Joystick 编程

2014年03月04日 2.27MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭