打印
[信息]

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

[复制链接]
593|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ST, ps


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


实物图如下:


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

PS2 游戏摇杆原理及控制实现
接收器
与这个手柄配套的还有一个接收器,用于接收 PS2 无线遥控手柄发送过来的数据


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

引脚
功能描述

GND电源地
VCC接收器工作电源,电源范围 3~5V
DI/DAT信号流向:从手柄到主机,此信号是一个 8bit 的串行数据,同步传送于时钟的下降沿,即信号的读取在时钟由高变低的变化过程中完成。
DO/CMD信号流向:从主机到手柄,此信号和 DI 相对,信号是一个 8bit 的串行数据,同步传送于时钟的下降沿。
CS/SEL用于提供手柄触发信号。在通讯期间,处于低电平。
CLK时钟信号,由主机(STM32)发出,用于保持数据同步。
注意:
当接收器上的绿灯常亮时,证明手柄和接收器配对成功,可以正常进行数据通讯。如果手柄和接收器断开了,按手柄上的START键即可恢复配对;

当手柄上的 MODE 指示灯没有点亮的时候,游戏摇杆四个方向输出按键键码值;当点击MODE按键后,手柄上的 MODE 指示灯变亮(红色),此时游戏摇杆四个方向输出 AD 值。
硬件连接
接收器与 STM32 连接如下:

接收器端
STM32 端

GNDGND
VCC3V3
DI/DATPB12
DO/CMDPB13
CS/SELPB14
CLKPB15
[size=1em]注: 使用杜邦线直接与核心板相连即可,这里为了拍照查看方便,选用智能风扇的那个底板与接收器相连。
程序移植

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

添加驱动文件添加工程包含路径
添加pstwo.c文件
修改宏定义
修改 GPIO 初始化代码

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

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

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


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

使用特权

评论回复
沙发
sadicy| | 2021-12-7 17:35 | 只看该作者
关键在接收器这里

使用特权

评论回复
板凳
tpgf| | 2022-1-3 17:39 | 只看该作者
信号接收稳定吗

使用特权

评论回复
地板
keaibukelian| | 2022-1-3 17:42 | 只看该作者
介绍的非常详细啊

使用特权

评论回复
5
labasi| | 2022-1-3 17:43 | 只看该作者
是什么通讯方式啊

使用特权

评论回复
6
paotangsan| | 2022-1-3 17:44 | 只看该作者
安全性能如何保证呢

使用特权

评论回复
7
renzheshengui| | 2022-1-3 17:46 | 只看该作者
接收芯片是什么啊

使用特权

评论回复
8
wakayi| | 2022-1-3 17:50 | 只看该作者
收发双方都很关键

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

139

主题

822

帖子

0

粉丝