SPI - シリアル・ペリフェラル・インターフェース
SPIとは、Serial Peripheral Interface(シリアル・ペリフェラル・インターフェース)の略です。SPIを使うと、2つの機器間で高速にデータをやり取りすることができます。しかも、必要な配線は4本だけ。
SPI特性
シリアルペリフェラルインターフェースは、短距離用の同期式通信インターフェースです。同期とは、データをブロックまたはフレーム単位で送信し、2つのデバイスをクロックで同期させることです。シリアルインターフェースなので、デバイスは一度に1ビットずつ送信します(パラレル通信とは異なります)。一方のデバイスは「マスター」と呼ばれ、クロックサイクルを指示します。もう一方のデバイスは「スレーブ」です。通常、通信は全二重モードで行われます。したがって、両方のデバイスが同時にデータを送信することも可能です。

配線
接続に必要な配線は4本だけなので、セットアップがとても簡単です。

SPI接続には、シリアルクロック(SCLまたはSCLK)、マスター出力スレーブ入力(MOSI)、マスター入力スレーブ出力(MISO)、チップセレクトまたはスレーブセレクト端子(CSまたはSS)の4つのピンが必要です。
マスターデバイスとスレーブデバイスの対応するピンをフックアップします。
チップセレクトピンが十分にあれば、1つのマスターデバイスが複数のスレーブデバイスに接続することができます。マスターは、対応するチップセレクトピンをLOWまたはHIGHに設定することにより、どのスレーブデバイスがデータを受信するかを制御します。
Raspberry Pi 4には、7つのSPIバスがあります。もし、SPIバス1~6にアクセスする方法を知りたければ、下にコメントを残してください。
を見てみましょう。 SPIバス0.

をご覧いただくとわかるように ピンアウトグラフィック 上記の23番ピンは、Raspberry PiのSCLKピンです。MISOは21番ピン、MOSIは19番ピンです。 バス0には2つのCSピンがあり、それは24ピンと26ピンです。
バス0を使用する場合は、必ず先にバス0を有効にしてください。
コマンドを実行する
sudo raspi-config
次に、以下を選択します。 3 インターフェースオプション をクリックします。 I4 SPI.最後に はい。 そして オッケー でSPIを有効にします。
SPIモード
データ転送モードは4種類あり、注意が必要です。これらは、クロック極性とクロック位相が異なります。

どちらも0または1のどちらかになります。クロック極性については、0はLOWアイドル状態、1はHIGHアイドル状態を意味します。クロック位相が0であればデータは立ち下がりエッジで送信され、1であればデータは立ち上がりエッジで送信されることを意味します。データを送信する前に、マスターとスレーブは4つのモードのうちの1つに合意する必要があります。
メリット
最大のメリットは、高速であること、ハードウェアとソフトウェアのセットアップが容易であること、消費電力が少ないことです。

デメリット
シリアルペリフェラルインターフェイスは、マスターが各デバイスのチップセレクトピンを必要とするため、デバイスの範囲と数を拡張することはできません。また、ハードウェアのスレーブ・アクノレッジメントがないため、マスターはデータが誰かに受信されたかどうかがわかりません。

使用例
SPIデバイスの多くは、組み込みデバイスや LCD-ディスプレイ.一般的には、デバイスが少なく、高速なデータ通信が必要な分野で使用される。
これにより、Raspberry Piはあらゆる種類のインターフェイスを センサー・デバイス.ほぼすべてのRaspberry Pi対応デバイスは、SPIまたはI2Cインターフェイスを使用しています。
SDカードはSPIインターフェースも使うので、Raspberry PiのSDカードリーダーにも、内部にMISOとMOSIのピンがいくつかあります。