u-e's tech

電子工作の際のメモや作曲したものを載せていきます

SPIのピン変化割り込みについて

ガレスタさんがポーリングでSPI通信している記事を見かけました

gsmcustomeffects.hatenablog.com

マイコン同士で通信したい時にポーリングで待ってると大変都合が悪い時などもあるので今回はピン変化割り込みでSPI通信をした件について書きます。

動作の流れとしては

 

マスター側

タイマー起動

1msごとに割り込んで指定の値を吐く

 

 

スレーブ側

HAL_SPI_RxCpltCallback関数を呼び出しておく

NSSピンがローになるとHAL_SPI_RxCpltCallback関数に飛ぶ

HAL_SPI_Receive関数で値を取得

 

次に設定について

SPI通信する際にスレーブ側のチップセレクトにNSSピンを設定します。

f:id:uetra:20180603161418p:plain

 

あとはSPIのマスター側とスレーブ側でMSBスタート、ビット数を合わせて通信するだけです。

 

ソースコード

 

マスター側(1msごとにADCの値を送る)

f:id:uetra:20180603162752p:plain

 

スレーブ側(nssがローになると値を取得)

f:id:uetra:20180603162901p:plain