【经验分享】基于STM32的PS2遥控小车

您所在的位置:网站首页 遥控手柄接线图 【经验分享】基于STM32的PS2遥控小车

【经验分享】基于STM32的PS2遥控小车

2024-05-09 18:54| 来源: 网络整理| 查看: 265

摘要:PS2手柄是索尼的PlayStation2游戏机的遥控手柄。索尼的psx系列游戏主机在全球很是畅销。不知什么时候便有人打起ps2手柄的主意,破解了通讯协议,使得手柄可以接在其他器件上遥控使用,比如遥控我们熟悉的智能小车。突出的特点是这款手柄性价比极高,按键丰富,方便扩展到其它应用中。* C; h+ j2 D9 @5 q

( k0 s) I  |: v$ ~9 x

1.jpg (52.54 KB, 下载次数: 0)

下载附件

2022-6-22 21:26 上传

4 v2 v5 C3 g4 p. k0 V图片来自网络1 \6 Y$ ^& `2 Z9 h# r  U7 I' ? ' S  D/ |! k# g4 u( q# s 7 A* ^* Z$ i( [0 v9 K

2.jpg (54.66 KB, 下载次数: 0)

下载附件

2022-6-22 21:26 上传

" M/ [; _$ h2 d 图片来自网络 : w3 Q" k; X* N$ t8 A( Z: n: k2 K4 x  Y2 t" `3 O% t* q3 I5 y # v" n% c' g; w! A/ b2 K% M2 \9 m1.PS2手柄控制

PS2手柄由手柄与接收器两部分组成,手柄主要负责发送按键信息;接收器与单片机(也可叫作主机,可直接用在PS2游戏机上)相连,用于接收手柄发来的信息,并传递给单片机,单片机也可通过接收器,向手柄发送命令,配置手柄的发送模式。

0 ?3 j0 M0 q/ c4 ]" T  W' N  _

3.jpg (121.12 KB, 下载次数: 0)

下载附件

2022-6-22 21:26 上传

" Z" ]* ^1 E% W- L图片来自网络* \6 P6 I8 @1 @* G8 U! C 5 U$ _5 D+ q# G# I% ? 5 _; G2 k  ~3 `$ w" U2.PS2手柄时序+ ?2 O/ S& H, U5 y# o, \: H( Y , H, W) B; I' O" s! i, U 0 V8 q8 u2 ^& N6 Q

4.png (6.96 KB, 下载次数: 0)

下载附件

2022-6-22 21:26 上传

$ F7 E# ~* _' T; ]' K( x5 L) Q6 v' `6 z3 u- f5 k

1、CS线在通讯期间拉低,通信过程中CS信号线在一串数据(9个字节,每个字节为8位)发送完毕后才会拉高,而不是每个字节发送完拉高。

2、DO、DI在在CLK时钟的下降沿完成数据的发送和读取。

  x* I* H  Y9 x! f1 \下降沿:数字电平从高电平(数字“1”)变为低电平(数字“0”)的那一瞬间叫作下降沿。复制代码[size=3em]”

3、CLK的每个周期为12us。若在某个时刻,CLK处于下降沿,若此时DO为高电平则取“1”,低电平则取“0”。连续读8次则得到一个字节byte的数据,连续读9个字节就能得到一次传输周期所需要的数据。DI也是一样的,发送和传输同时进行。

) }7 ^. M4 b3 N( y9 y' Y# A6 o+ @

以STM32与PS2手柄 通信为例:

1、 首先STM32拉低CS片选信号线,然后在每个CLK的下降沿读一个bit,每读八个bit(即一个byte)CLK拉高一小段时间,一共读九组bit。这九个byte如下表

& t& r/ ]' I' S, S; c

5.png (54.35 KB, 下载次数: 0)

下载附件

2022-6-22 21:26 上传

/ U8 l1 s" ?3 O) {+ A5 X1 H/ r , q, D3 F" b+ _/ A9 n9 p' _* \

对应的的手柄读取代码如下

- u& u- k% ~1 F6 { ' F; a  @8 k! o" B+ ^9 y//读取手柄数据/ }" N9 X2 t* Q/ a$ h7 B void PS2_ReadData(void) : W- w. \4 ~+ [/ X/ W* L{ ( M2 I2 ]0 F, _0 m volatile u8 byte=0;. a  O" T, _8 X& S$ o volatile u16 ref=0x01; . ~1 Y* |- q- k1 x4 D CS_L; * Y7 D1 y& G% i7 _) u/ ?( G PS2_Cmd(0x01);  //开始命令+ V; X7 ]3 I% e, A8 h8 B PS2_Cmd(0x42);  //请求数据/ k, h9 d, R1 w0 K for(byte=2;byte


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3