SPIってなんだ

はじめに

就活で受けるテストではありません。シリアル通信のひとつです。

就活の方はSynthetic Personality Inventoryで今回のはSerial Peripheral Interfaceです。

参考資料

詳細

ステッピングモーターの駆動に必要になったのでそれのまとめ。

SPI通信っていうのはシリアル通信の一つの種類らしい。シリアル通信っつうのはデータを送受信するのに一つの線を使う通信方式。

3線式と4線式の2つがあるらしいけど主要なのは4線式で今回、必要になったのも4線式なので今回はこっちの4線式を主に扱っていく。

マスタとスレーブ

通信をする際にこのマスター(master)とスレーブ(slave)っていう用語がでてくる。字面てきにもマスターが従えてる感はあるけどよくわからいのでまずはこっちから整理しよう。

マスター

データ通信を制御する主要デバイス。モーターをaruduinoで制御するときにはaruduinoがこれに当たる。

スレーブ

マスターの制御を受けて応答するデバイス。モーターの例ではaruduinoからデータを受け取るモータードライバーがこれにあたる。1つ以上で複数ある場合もある。

通信線

冒頭で4線式といったとおり4本通信につかう。いずれも名は体を表すのとおりの名称でわかりやすい。

  • MISO (Master In Slave Out) マスターから送信してスレーブが受信する線
  • MOSI (Master Out Slave In) スレーブから送信してマスターが受信する線
  • SS (Select Slave) スレーブが複数の場合にこれでどのスレーブと通信するのか決める。複数と通信するのもできる。
  • SCLK クロック信号を出す線らしい。これはデータの区切りとか同期に必要だとか。

このサイトの通信タイミングの図がわかりやすい。

MISOとMOSIがデータの送受信に使う線でSSはデバイスの選択、SCLKがデータ送信の手伝いみたいな感じです。シリアル通信なのにデータ送受信に2つ線つかってるやんけと思いましたがそれぞれ一方通行なのでシリアル通信なのかなと。

正直、SCLKがどんな役割なのか100%は理解していないがとりあえず作ってみよう。作っているうちにわかることというのもあるものです。

(2024/07/26追記)

SPI通信では8bitずつのまとまりでデータを送ります。その区切りをわかるようにしているのがSCLKから送られるクロック信号の一つの役割です。電圧が上がったり下がったりを区切りに使うんですね。