コンテンツにスキップ

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を実現することで記載以上の数のスレーブを制御することもできるのではないかと思う。