基本ライブラリ
デジタルIO
アナログIO
拡張IO
時間
数学
三角関数
乱数
ビットバイト操作
割り込み
シリアル通信
標準ライブラリ
カメラ
サーボモーター
ステッピングモーター
キャラクタ液晶表示
SPI通信
I2C通信(Wire)
SD
SD(File操作)
周期処理(MsTimer2)
時計(RTC)
Mbed Tips
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);
}