SPI通信とはなんのか。(分かるためのリンク集)
- 2022.08.12
- IT
シリアル通信の中の1つのSPI通信について、なんのか、まとめます。
ラズパイでADコンバーターを使う際にSPI通信を使う必要があったので、自分の知識の整理のためにまとめました。
分かるための順番
まずは、このページを見て、ザクッと概要を掴んでみてください。
つぎに、この動画をみて見てください。(この動画神すぎる。)
説明サボり過ぎな気もするので、簡単に概要だけ下で説明します。
SPI通信について
SPI(Serial Peripheral Interface)通信は、看守と囚人が、0と1の2つの道具だけで情報を交換する、そんなイメージで僕は理解しました。(どんなシチュエーション?w)
登場する概念は、4つの線です。
登場人物は、看守(ラズパイ)と囚人たち(ADコンバーター)です。彼らが4つの線を駆使して、情報をやり取りします。
略称 |
名称 |
意味 |
MISO |
Master-In Slave-Out |
ラズパイ側は入力、センサー側は出力 |
MOSI |
Master-Out Slave-In |
ラズパイ側は出力、センサー側は入力 |
SCLK |
Slave Clock |
センサーへの入力クロック |
CS |
Chip Select |
どのADコンバーターと通信するか。この信号 = Low時に通信開始CS = Highで通信停止 |
イメージとしてはこんな感じです。CS(チップセレクト)線は各ADコンバーターとつながっています。
まずは、CSチップセレクトの線で、どの囚人(ADコンバーター)と通信するかを、HIGHもしくはLOW(電圧を送るかか送らないか)で伝えます。
例えば、坊主の囚人と通信したいときは、常に2本の囚人のCSの線はHIGHにしておいて、坊主の囚人のCS線だけLOWにする、という感じです。
そして、情報を交換します。
その方法は、看守が情報交換の時間だ!と合図したら、看守も囚人もHIGHかLOWを送る、というものです。
より具体的に書くと、下記のようになります。
- 看守は、SCLK線(Slave Clock)で、情報交換の時間だ!と合図します。(合図の間HIGHにしておきます)。
- 看守は、MISO線(Master-In Slave-Out)で情報を囚人に送ります。(HIGHまたはLOWです)
- 囚人は、MOSI線(Master-Out Slave-Inで情報を看守に送ります。(HIGHまたはLOWです)
- 看守は、SCLK線(Slave Clock)で、情報交換の時間だ!と合図を止めます(LOWにします)。
これで、HIGHかLOWか、を看守と囚人は、情報を交換することができました!
あとは、これをひたすら繰り返して、HIGH=1, LOW=0の2進数の情報をやり取りしていきます。
まとめ
1周回って分かりにくくなった感じはありますが、、動画を見ていただくのが一番早いかと思いますw