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

时间:2024-05-31 08:49:35

SONY的PS2无线手柄是索尼游戏机的遥控手柄,控制协议已被全球创客**,可以方便用于机器人控制器,作为遥控输入设备。

这款手柄价格便宜,性价比极高。

原理

PS2无线手柄按键比较多,例如在一款游戏中的设定:

PS手柄无线接收器,针脚输出端(面对插头)

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

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

PIN 1->| o o o | o o o | o o o |

\___________________________________/

针脚 从左到右分别是 :

1-DATA:信号流向从手柄到主机。此信号是一个8 bit的串行数据,同步传送于时钟下降沿(输入输出信号在时钟信号由高    到低时变化,所有信号的读取在时钟前沿到电平变化之前完成。)

2-COMMAND :信号流向从主机到手柄。此信号和DATA相对,同样是一个8 bit的串行数据,同步传送于时钟下降沿。

3-N/C (9 Volts unused)

4-GND

5-VCC :电源电压从5V到3V原装的索尼手柄都可以工作。主机主板上装有表面安装的750mA 保险丝 ,用于防止外设过载    (750mA是包括左右手柄和记忆卡)。

6-ATT :用于提供手柄触发信号。信号在通信期间处于低电平。又有人将此针脚叫做 Select, DTR 和 Command

7-CLOCK :信号流向从主机到手柄。用于保持数据同步。

8-N/C

9-ACK :从手柄到主机的应答信号。此信号在每个8 bits数据发送之后的最后一个时钟周期变低,并且ATT 一直保低电平。如果ACK 信号不变低约60微秒PS主机会试另一个外设。

PS手柄信号,所有通讯都是8 bit串行数据最低有效位先行。在PS 手柄总线的所有时码在时钟下降沿都是同步的。传送一个字节的情况如下所示。

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

数据线的逻辑电平在时钟下降沿驱动下触发改变。数据的接收读取在时钟的前沿(在记号*处)到电平变化之前完成。 在被选手柄接收每个COMMAND 信号之后,手柄需拉低ACK 电平在最后一个时钟。如果被选手柄没ACK 应答主机将假定没手柄接入。

当PS主机想读一个手柄的数据时,将会拉低ATT 线电平并发出一个开始命令 (0x01)。手柄将会回复它的ID (0x41=数字, 0x23=NegCon, 0x73=模拟红灯, 0x53=模拟绿灯). 在手柄发送ID字节的同时主机将传送0x42 请求数据。随后命令线将空闲和手柄送出 0x5A 意思说:"数据来了"。

本文只针对 "模拟手柄红灯模式"进行**,字节定义如下。

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

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

============================================================================