SPI

2つ以上のマイコンと通信するためのSPI通信をするためのライブラリです。使用する場合は、#include <SPI.h>を記述してください。

SPISettings

概要
それぞれのSPIデバイスに対して一度だけ初期化できます。
文法
SPISettings mySetting(speed, dataOrder, datamode)
パラメータ
speed: 通信速度
dataOrder: MSBFIRST or LSBFIRST
dataMode: SPI_MODE0, SPI_MODE1, SPI_MODE2, or SPI_MODE3
戻り値
なし

begin

概要
SPIバスを初期化し、SCK、MOSI、SSを出力にして、SCKとMOSIはlowに、SSはhighします.
文法
SPI.begin()
パラメータ
なし
戻り値
なし

end

概要
SPIを停止して、ピンをI/Oポートに戻します。
文法
SPI.end()
パラメータ
なし
戻り値
なし

beginTransaction()

概要
SPISettingsで定義されたSPIバスを使用するように初期化します。
文法
SPI.beginTransaction(mySettings)
パラメータ
mySettings: SPISettingsでの設定を選択.
戻り値
なし

endTransaction()

概要
SPIバスの使用を停止します。他のライブラリでSPIバスを使用できるようにチップセレクトをインアクティブにしてコールします。
文法
SPI.endTransaction()
パラメータ
なし
戻り値
なし

setBitOrder

概要
送受信するビットオーダーを指定します。
文法
SPI.setBitOrder(bitOrder)
パラメータ
bitOrder: ビットオーダー(MSBFIRST、LSBFIRST)。デフォルトはMSBFIRST。
戻り値
なし

setClockDivider

概要
SPIクロックの速度を設定します。
文法
SPI.setClockDivider(divider)
パラメータ
divider: 次のいずれかを指定。
  SPI_CLOCK_DIV: 30MHz
  SPI_CLOCK_DIV4: 15MHz
  SPI_CLOCK_DIV6: 10MHz
  SPI_CLOCK_DIV8: 7.5MHz
  SPI_CLOCK_DIV10: 6MHz
  SPI_CLOCK_DIV12: 5MHz
  SPI_CLOCK_DIV14: 4.3MHz
  SPI_CLOCK_DIV16: 3.75MHz(default)
  SPI_CLOCK_DIV20: 3MHz
  SPI_CLOCK_DIV30: 2MHz
  SPI_CLOCK_DIV60: 1MHz
戻り値
なし

setDataMode

概要
SPIのデータ取得モードを設定します。
文法
SPI.setDataMode(mode)
パラメータ
mode: 次のいずれかを指定。デフォルトはモード0。
  SPI_MODE0 : アイドル時のクロックがLow、立ち上がりでサンプリング(default)
  SPI_MODE1 : アイドル時のクロックがLow、立ち下がりでサンプリング
  SPI_MODE2 : アイドル時のクロックがHigh、立ち上がりでサンプリング
  SPI_MODE3 : アイドル時のクロックがHigh、立ち下がりでサンプリング
戻り値
なし

transfer

概要
SPIデータを送受信します。
文法
SPI.transfer(value)
パラメータ
value: 1バイトのデータ。
戻り値
SPIバスで取得されたデータ

サンプルプログラム


#include <Arduino.h>
#include <SPI.h>
void setup(){
    SPI.begin();
}
 
void loop(){
    //write
    SPI.transfer(0x55);
     
    //read
    uint8_t data = SPI.transfer(0xff);
}