SPI

2つ以上のマイコンと通信するためのSPI通信をするためのライブラリです。ESP32のSPI通信と兼用されています。ESP32と通信するときは、SSとしてPIN_ESP_IO15(37ピン)を指定します。SDカードは別のSPIチャネル(SPI2)が接続されています。使用する場合は、#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_DIV2: 8MHz
  SPI_CLOCK_DIV4: 4MHz (default)
  SPI_CLOCK_DIV8: 2MHz
  SPI_CLOCK_DIV16: 1MHz
  SPI_CLOCK_DIV32: 500kHz
  SPI_CLOCK_DIV64: 250kHz
  SPI_CLOCK_DIV128: 125kHz
戻り値
なし

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);
}