SPI
SPI は 4 本の信号線で通信するシリアルインターフェースである。
| ピン | 別名 | 意味 |
|---|---|---|
| SCK | - | Serial Clock |
| MOSI | COPI, TX | Master Out Slave In |
| MISO | CIPO, RX | Master In Slave Out |
| SS | CS, CE | Slave Select |
実際にはデバイスには電源が必要なのでモジュールに接続する線は VCC と GND あわせて 6 本かもしれない。
SCK, MOSI, MISO を共有してスレーブを複数接続することが可能。受信させたいスレーブに対して SS を Low にすると、スレーブが信号を読む。この仕組み上、基本的に同時に通信するのは 1 つだけ。
ハードウェア対応表
| ハードウェア | 対応 | ch 数 | 備考 |
|---|---|---|---|
| Raspberry Pi 3 | ✅️ | 2 | CE0, CE1 が SS |
| Raspberry Pi 4 | ✅️ | 2 | 上に同じ |
| Raspberry Pi 5 | ✅️ | 2 | 上に同じ |
| Raspberry Pi Pico | ✅️ | 任意? | |
| Raspberry Pi Pico W | ✅️ | 任意? | |
| Arduino Uno Rev3 | ✅️ | 1 | |
| ATmega328P | ✅️ | 1 |
各ハードウェアは SPI 通信のための専用の SS を持っているが、前述のとおり SS は通信中に Low になるだけなので、他の GPIO を使って SS を実現することで記載以上の数のスレーブを制御することもできるのではないかと思う。