# 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
```yaml
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
```
## サンプルプログラム
### コンストラクタ
```C++
DUALSHOCK2 dualshock2(hspi2, SPI_SS_GPIO_Port, SPI_SS_Pin, 0xF);
```
### 初期設定
```C++
dualshock2.init();
dualshock2.reset_stick();
```
### 更新と取得
```C++
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() を実行すること。
## 参考資料
- [プレイステーション 2 専用 ローリングスイッチ技術資料](http://magicpuppet.org/rolling_switch_technical_document.pdf)
- [デュアルショック(SCPH-1200)の解析 - 寺川 愛印](http://applause.elfmimi.jp/dualshock.txt)
- [デュアルショック2(SCPH-10010)の新機能使用方法 - NT](https://applause.elfmimi.jp/dualshock/millar/NT/dualshock_2.txt)

机智的程序员zero
- 粉丝: 2569
最新资源
- 2023年电大职业技能实训试题网络系统管理与维护完整版.docx
- “互联网+”创业计划书.doc
- IBM服务器运维及数据备份报告.pdf
- 八百方-医药电子商务的发展路径及未来.ppt
- 第8章-网络新技术与新趋势ppt课件(全).ppt
- C语言实践的心得体会范文.doc
- 2022网络技术实践报告.docx
- 电气工程及其自动化专业自荐书.docx
- 2023年linu计算机专业大学生实习报告.docx
- PLC的梯形图程序设计方法及应用实例.ppt
- python二级电子教案-第章-程序设计基本方法.ppt
- 办公自动化设备的使用和维护.ppt
- 2021-2022年收藏的精品资料网络经济的超边际分析网络经济对经济学的挑战.doc
- 大型网站东莞旅行社网站SEO优化方案.doc
- Logistic回归分析简介.docx
- C语言编程技巧在C语言学习中的作用.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


