Arduino2台でお互いにSPI通信でお話がしたいぞ!

ども、@JimHazeRです。

ArduinoどうしでSPIでお話がしたくなった(唐突)のでいろいろ調べまくったのを取り敢えずまとめておこうかと。

さて、取り敢えずMaster側で必要なことを。

SPI.hをinclude

SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV4);
SPI.setDataMode(SPI_MODE2);
SPI.begin();

上から最上位と最下位ビットどちらから送信するのかを設定

通信速度設定

アイドル状態とどこの変化で送信するかを設定

開始

この4つはsetupに入れておく

SSピンをセレクト

SPI.transfer(val);

この2つは送信したいところに入れる。

Masterはこれだけ。超簡単。

 

次にslave側

SPI.hをinclude

MISOピンをOUTPUTに

SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV4);
SPI.setDataMode(SPI_MODE2);

役割は上と同じ。

SPCR |= _BV(SPE);

SPI.attachInterrupt();

これでSPIを有効に。

あとはslave側はいつ通信が飛んでくるかわからないので割り込み処理を

ISR(SPI_STC_vect)
{
byte ch = SPDR;
}

って書いて読み取りOK

おわり。

結構かんたんだった。

寝ます

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です