SPI通信を使ってラズパイにつないだ何かを動かしたかったから勉強した。
超初学者でもわかるように噛み砕きまくった
超簡単にSPI通信を学んだ
SPI通信のピン
ピン | ラズパイでのピン名 | 正式名称 | 役割 |
---|---|---|---|
SCK | SPI0 SCK | Serial Clock | マスタが出すクロック信号 |
MOSI | SPI0 TX | Master Out, Slave In | マスタからスレーブへのデータ |
MISO | SPI0 RX | Master In, Slave Out | スレーブからマスタへのデータ |
SC/SS | SPI0 CSn | Chip Select / Slave Select | 通信するスレーブを選択(アクティブLow) |
SCK
ラズパイでのピン名 | 正式名称 | 役割 |
---|---|---|
SPI0 SCK SPI1 SCK | Serial Clock | マスタが出すクロック信号 |
ラズパイと
ラズパイに繋いだ何かしらが
お互いに息を合わせるために繋ぐ必要があるよ。
MOSI(TX)
ラズパイでのピン名 | 正式名称 | 役割 |
---|---|---|
SPI0 TX SPI1 TX | Master Out, Slave In | マスタからスレーブへのデータ |
ラズパイから
ラズパイに繋いだ何かしらに
命令なりデータなりを送るときに使うよ。
MISO(RX)
ラズパイでの ピン名 | 正式名称 | 役割 |
---|---|---|
SPI0 RX SPI1 RX | Master In, Slave Out | スレーブからマスタへのデータ |
ラズパイに繋いだ何かしらから
ラズパイに
命令なりデータなりを送るときに使うよ。
繋いでる何かしらによっては、繋ぐ必要がないかも。
例えばスピーカーはラズパイに何か送る必要がないよね。
CSn
ラズパイでの ピン名 | 正式名称 | 役割 |
---|---|---|
SPI0 CSn | Chip Select / Slave Select | 通信するスレーブを選択(アクティブLow) |
ラズパイに繋いだ何かしらと
ラズパイが
通信をするかしないかを設定するために使うよ
通信したいときはこのピンからの出力電圧Lowに設定
わかったこと
ラズパイにつないだ何かしらをSPI通信で動かしたいときは
6本くらい線をつないだら大抵動く!
具体的には
電源とGNDと先述した4ピン(SCK, MOSI, MISO, CS/SS)
ヘボいけど検索ではすぐ出てこないラズパイの疑問
Q1.ラズパイのピン配置図にSPI0とSPI1があるのはなんで?
SPI通信で動くなにかしらを2つ繋げられるよ。
モバイルバッテリーにUSBの口が2つあるのと一緒。
SPI0,1にそれぞれSCK, RX, TX, CSnのピンが2つずつあるのはなんで?
線がゴチャゴチャしてたり、繋ぎたいところ同士が遠いときに
繋ぎやすいほうのピンを使えるよ
ハード側の都合で使うピンを選んだら、ソフト側でもそれに対応させてあげないといけないと思う
GNDは全部つながないとダメ?
基準になる電位ってだけだから1つから伸ばしまくってOK
SCKはポートごとにつながないとダメ?
繋がないとダメ
SPI0 SCKから伸ばした線をSPI1に繋いでる機器のSCKに繋いじゃダメ