NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Arduino IDE(SPI: setDataMode関数の使い方)

■SPI: setDataMode関数
 SPI: setDataMode関数は、SPISettings関数とSPI.beginTransaction関数にSPIパラメータとして、SPIデータモードのクロック極性と位相※1を設定します。 デフォルトは「SPI_MODE0」で、アイドル時のクロックがLow、立ち上がりでサンプリングします。


※1:クロック極性と位相
 下図はクロック極性と位相を示すタイミングです。
 赤い線はクロックの前縁を示し、青い線は後縁を示します。
 マスタはクロック周波数の設定に加えて、データに対してクロックの極性と位相も設定します。
 モトローラのSPIブロックガイドは、これらの2つのオプションをそれぞれCPOLとCPHAと命名しています。
 CPOL:クロックの極性を決定します。極性は簡単なインバータで変換できます。
 CPHA:クロックパルスに対するデータビットのタイミングを決定します。
イメージ 1
Wikipediaの記事より引用

 

■使用例
 ArduinoIDEで使用するSPI: setDataMode関数の使い方は以下の通りです。
 試しにこのプログラムをArduinoUNOで実行すると、最初にSPI.begin関数でSPI通信を初期化し、SPI: setDataMode関数でアイドル時のクロックがLow、立ち下がりでサンプリングする様に設定します。
 次にSPI.transfer関数で「0x55」を出力し、SPI.transfer関数で「0xff」SPIバスでデータを取得します。

#include <SPI.h>
void setup() {
   SPI.begin();
   SPI.setDataMode(SPI_MODE1);
}

void loop() {
   //write
   SPI.transfer(0x55);
   //read
   uint8_t data = SPI.transfer(0xff);
}
イメージ 1
図1:プログラム例
 

■構文
 SPI.setDataMode(mode)

■パラメータ
∟AVRボード
 ∟mode  

  ∟SPI_MODE0(アイドル時のクロックがLow、立ち上がりでサンプリング)
  ∟SPI_MODE1(アイドル時のクロックがLow、立ち下がりでサンプリング)
  ∟SPI_MODE2(アイドル時のクロックがHigh、立ち上がりでサンプリング)
  ∟SPI_MODE3(アイドル時のクロックがHigh、立ち下がりでサンプリング)

 ∟Arduino Due
 ∟slaveSelectPin:スレーブデバイスSSピン

■戻り値
 有りません。

■補足
 この関数は新しいプロジェクトでは使用しない様に推奨されています。

イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【ArduinoIDE reference】目次に戻る