SPI通信とラズパイの仕様について学んだ

raspberry pi pico

SPI通信を使ってラズパイにつないだ何かを動かしたかったから勉強した。

超初学者でもわかるように噛み砕きまくった

超簡単にSPI通信を学んだ

SPI通信のピン

ピンラズパイでのピン名正式名称役割
SCKSPI0 SCKSerial Clockマスタが出すクロック信号
MOSISPI0 TXMaster Out, Slave Inマスタからスレーブへのデータ
MISOSPI0 RXMaster In, Slave Outスレーブからマスタへのデータ
SC/SSSPI0 CSnChip 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 CSnChip 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に繋いじゃダメ

タイトルとURLをコピーしました