(2014.9.8 作成)
(2015.11.25 更新)
LSBFirst | LSB側からデータを送ります |
MSBFirst | MSB側からデータを送ります |
クロック線の通常状態がLowかHighか(CPOL), データ取得する位相(CPOL)を表します。詳細は右の図を見ていただくのが確実です。
CPOL | CPHA | |
Mode0 | 0 | 0 |
Mode1 | 0 | 1 |
Mode2 | 1 | 0 |
Mode3 | 1 | 1 |
よく言われることですが、使用するデバイスごとに仕様が異なりますので、デバイスにあわせて設定してください。
setClock関数に対する引数です、およその狙いのクロックを指定します。
SPI_Speed_20MHz | SPI_Speed_10MHz | SPI_Speed_5MHz |
SPI_Speed_1MHz | SPI_Speed_500kHz | SPI_Speed_100kHz |
通信フォーマットを指定する |
||
プロトタイプ | void setFormat(const uint8_t &Bits, const SPI_Mode &Mode)const; | |
戻り値 |
なし |
|
引数 |
Bits |
1通信単位に含まれるビット数。通常8 Arduinoでは無視されます。 |
Mode |
上記SPI_Mode |
|
備考 |
Modeはデバイスごとに設定値が異なります。 |
通信のビットオーダーを指定する | ||
プロトタイプ | void setBitOrder(const BitOrder &order)const | |
戻り値 |
なし |
|
引数 |
order |
LSBFirstまたはMSBFirst |
備考 |
|
クロックを設定する | ||
プロトタイプ | void setClockDivider(const uint16_t &Divider); | |
戻り値 |
なし |
|
引数 |
Divider |
メインクロックからの分割数 |
備考 |
実際の設定はマイコンに依存します。それぞれのページで確認してください。 |
クロックを設定する | ||
プロトタイプ | void setClock(const SPI_Clock &clk) | |
戻り値 |
なし |
|
引数 |
clk |
狙いクロック値 |
備考 |
およそここで示したクロック周波数になるように上記setClockDivider関数を呼び出しているだけです。 実際に設定される周波数については各マイコンのページを見てください。 |
設定されているクロックを返す | |
プロトタイプ | uint32_t getFrequency(void) const |
戻り値 |
設定されているクロック値を返す |
引数 |
なし |
備考 |
単位は[Hz] |
1バイト通信する | ||
プロトタイプ | uint8_t write(const uint8_t &WriteValue)const | |
戻り値 |
送信と同時にスレーブから戻ってくる値 |
|
引数 |
WriteValue |
送信データ |
備考 |
|
複数バイト通信する (送信のみ) | ||
プロトタイプ |
void write(const uint8_t *Buffer, const uint16_t &Length)const |
|
戻り値 | なし | |
引数 |
Buffer |
送信/受信データ |
Length |
通信データ数 |
|
備考 |
送信のみの関数です。同時に受信を行いたいときは別のwrite関数を使用してください。 |
複数バイト通信する (送受信) | ||
プロトタイプ |
void write( uint8_t *txBuff, uint8_t *rxBuff, const uint16_t &Length)const |
|
戻り値 | なし | |
引数 |
txBuff |
送信データ |
rxBuff |
受信データ |
|
Length |
通信データ数 |
|
備考 |
送受信を同時に行います。txBuffとrxBuffに同じ配列を指定することも可能です。 |