Skip to content

STM32 と DUALSHOCK2(SCPH10010) の通信用ライブラリ

Notifications You must be signed in to change notification settings

wakky-alcedo/lib-DUALSHOCK2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 

Repository files navigation

DUALSHOCK2

DUALSHOCK2(SCPH10010) との通信用ライブラリ

回路

  • DAT(SPIのMISO)ピンは 1kΩ で 3.3V にプルアップする(マイコンのプルアップだと通信が安定しない)
ピン番号 ピン名 備考
1 DAT SPIのMISO
2 CMAD SPIのMOSI
3 ~7V 振動モータ電源
4 GND GND
5 3.3V IC電源
6 SEL SPIのSS
7 SCK SPIのCLK
8 NC なし
9 ACK アクノリッジ

CubeMX

Pinout
- SPIn
- SSピンとして任意のピンを GPIO_output に変更
SPIn
- Mode
    - Mode              = Full-Duplex Master
    - Hardware Signal   = Disable

- Parameter setting
    - Basic parameter
        - Frame Format  = Motorola
        - Data Size     = 8bit
        - First bit     = LSB first
    
    - Clock parameter
        - Prescaler         = その下の baud rate が 500KBit/s になるように設定 (1000KBit/sでもできたがたまにうまくいかないことがある)
        - Clock Polality    = High
        - clock Phase       = 2Edge

サンプルプログラム

コンストラクタ

DUALSHOCK2 dualshock2(hspi2, SPI_SS_GPIO_Port, SPI_SS_Pin, 0xF);

初期設定

dualshock2.init();
dualshock2.reset_stick();

更新と取得

std::array<uint8_t, 21> receive_data;
std::array<int16_t, 4> stick_data;
dualshock2.update(0x20);
receive_data = dualshock2.get_data_exex();
stick_data = dualshock2.get_stick_data();

注:3秒以上 update() を実行しないと DUALSHOCK2 の内部設定が初期化されてしまう。その際は再び init() を実行すること。

参考資料

About

STM32 と DUALSHOCK2(SCPH10010) の通信用ライブラリ

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages