PS2无线遥控手柄与STM32单片机通信

2023-04-04 04:00   158   0  

PS2无线遥控手柄


接下来要做一个小车玩玩,在网上淘了一个PS2无线遥控手柄,用于控制小车的前进、后退等功能。


154cba60-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


实物图如下:


154cba61-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


其中有两个PS2游戏摇杆,对应的驱动原理参见下文:


PS2游戏摇杆原理及控制实现


接收器


与这个手柄配套的还有一个接收器,用于接收PS2无线遥控手柄发送过来的数据


154cba62-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


该接收器一共有六个引脚,分别定义如下:


154cba63-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


注意:


  1. 当接收器上的绿灯常亮时,证明手柄和接收器配对成功,可以正常进行数据通讯。如果手柄和接收器断开了,按手柄上的START键即可恢复配对;

  2. 当手柄上的MODE指示灯没有点亮的时候,游戏摇杆四个方向输出按键键码值;当点击MODE按键后,手柄上的MODE指示灯变亮(红色),此时游戏摇杆四个方向输出AD值。


硬件连接


接收器与STM32连接如下:


154cba64-ac51-11ed-bcd2-b8ca3a6cb5c4.webp154cba65-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


程序移植


1612f07c-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


因为这个手柄通讯协议在手册中写的不详细,咱们就不分析协议部分了,我将商家提供的驱动文件放到了咱们的工程目录中,具体位置如下所示:


1612f07d-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


添加驱动文件


添加工程包含路径


1612f07e-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


添加pstwo.c文件


1612f07f-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


修改宏定义


1612f080-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


修改GPIO初始化代码


1612f081-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


上面的宏定义和GPIO的初始化代码要跟实际相连的GPIO一致。


main.c文件直接使用即可,不用修改了。


结果展示


测试出了所有按键的键码值,留着备用:


1612f082-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


只需要占用4个GPIO口即可实现16个按键的扩展,而且具有无线功能,作为小车的遥控器太适合了。




登录icspec成功后,会自动跳转查看全文
博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。