WireSlave
名称
WireSlaveライブラリ
ヘッダーファイル #include <Wire_slave.h>
/icons/hr.icon
WireSlaveライブラリは、I2Cマスタ及び、I2Cスレーブ機能を提供します。
従来のWireライブラリのI2Cマスタの機能も含むことに注意してご利用下さい。
定義済みWireSlaveオブジェクト
WireSlaveライブラリは、定義済のインスタンスとしてWire、Wire1オブジェクトが用意されています。
このオブジェクトとは、WireSlaveライブラリが提供する、TwoWireクラスのインスタンスです。
Wire、Wire1オブジェクトはSTM32ボードのI2C1ポート、I2C2ポートを利用したI2C通信を行うことができます。
オブジェクト名がWireライブラリと競合し、機能もWireライブラリを包含するため、Wireライブラリとの併用を行うことは出来ません。
ライブラリ リファレンス
/icons/hr.icon
■ Wireオブジェクト(インスタンス)の取得
書式
static TwoWire& getInstance()
static TwoWire& getInstance1()
引数
なし
戻り値
なし
Wireオブジェクト(インスタンス)
説明
Wireオブジェクト(インスタンス)を取得します。
getInstance()では、I2C1を利用するWire、getInstance1()ではI2C1を利用するWire1を返します。
■ バスの利用開始
書式
void begin()
void begin(uint8_t myAddress)
void begin(int myAddress)
引数
myAddress :I2Cスレーブアドレス
戻り値
なし
説明
I2Cバスの利用を有効にします。
引数を指定しない場合はSTM32ボードをバスマスタとして初期化します。
引数 myAddress I2Cスレーブアドレスを指定した場合、I2Cスレーブとして初期化します。
int型 myAddressは、uint8にキャストして7ビットアドレスとして処理します。
■ バス利用の終了
書式
void end()
引数
なし
戻り値
なし
説明
I2Cバスの利用を終了します。
■ I2Cバスクロック速度設定
書式
void setClock(uint32_t frequencyHz)
引数
frequencyHz : 通信クロック周波数(Hz); 100000 または 400000のみ指定可能
戻り値
なし
説明
I2Cデバイスの通信クロック周波数を設定します。
指定できるクロック周波数は100000(100kHz)、400000(400kHz)のみです。
それ以外の値を指定した場合は、100000(100kHz)を設定します。
■ 送信トランザクションの開始
書式
void beginTransmission(uint8_t slaveAddress)
void beginTransmission(int slaveAddress)
引数
slaveAddress :通信相手のスレーブデバイスのアドレス
戻り値
なし
説明
指定された(7ビット)アドレスを持つスレーブデバイスへの送信を設定します。
int型slaveAddressは、uint8にキャストして7ビットアドレスとして処理します。
endTransmission()が呼び出されると、送信待ちのバイト数(wrie()を使用)がslave_addressで指定したスレーブに送信されます。
■ 送信トランザクションの終了
書式
■ uint8_t endTransmission(void)
■ uint8_t endTransmission(uint8_t sendStop)
引数
stop :ストップビット送信の指定 ※現時点ではこの指定のための処理は未実装です。
戻り値
実行結果 0 ~ 4 を返します。次の定数が定義されています。
SUCCESS 0 正常終了
EDATA 1 異常終了(送信キューの容量を超えたデータがキューイングされている)
ENACKADDR 2 異常終了(スレーブアドレスの送信時にNACKを受信した)
ENACKTRNS 3 データの送信時にnackを受信した(これが正常である場合もある)
EOTHER 4 その他のエラー
説明
beginTransmission()によって開始される送信を終了し、
実際には呼び出しによって待機しているバイトデータをスレーブデバイスに送信します。
送信キュー32バイトを超えるキューイングを行った場合、キュー内のデータは送信されずに戻り値としてEDATAが返されます。
■ データ要求
書式
uint8_t requestFrom(uint8_t slaveAddress, uint8_t quantity)
uint8_t requestFrom(uint8_t slaveAddress, uint8_t quantity, uint8_t sendStop)
uint8_t requestFrom(uint8_t slaveAddress, uint8_t quantity, uint32_t iaddress, uint8_t isize, uint8_t sendStop)
uint8_t requestFrom(int slaveAddress, int quantity)
uint8_t requestFrom(int slaveAddress, int quantity, int sendStop)
引数
slaveAddress :通信相手のスレーブデバイスのアドレス
quantity :要求バイト数
iaddress :未サポート(指定は機能しません)
isize :未サポート(指定は機能しません)
sendStop :ストップビット送信指定、 trueの場合、処理後バスを解放。 falseの場合、継続
戻り値
要求に対して、読み取られた実際のバイト数
説明
マスターからスレーブデバイス(slaveAddressで指定した7ビットのスレーブアドレスアドレスのデバイス)対して、
バイトのデータ受信を要求します。受信するバイト数はquantity にて指定します。
戻り値として、実際に受信したバイト数を返します。
受信したバイトデータはread()にて取得することが出来ます。
int型のslaveAddress、quantity、sendStopはuint8_t にキャストし下位1バイトのみが有効です。
■ データ送信
書式
size_t write(uint8_t data)
size_t write(const uint8_t *data, size_t quantity)
size_t write(unsigned long data)
size_t write(long data)
size_t write(unsigned int data)
size_t write(int data)
引数
data :送信データ
quantity :送信データ長さ
戻り値
送信バイト数
説明
I2Cバスを通じてデータ送信を行います。
wire()は送受信トランザクション内(beginTransmission()、onReceive()、 onRequest())でのみ送信可能です。
write(const uint8_t *data, size_t quantity)では、dataにはデータが格納されたアドレスを指定し、quantityに送信データバイト数を指定します。write(unsigned long data)、write(unsigned int data)、write(int data)のdataは下位1バイトのみ有効とし、1バイトデータを送信します。
■ 受信データ有無チェック
書式
int available()
引数
なし
戻り値
0 :受信データなし
0以外 :受信データあり
説明
requestFrom()の最後の呼び出しから読み取ることができるデータがあるかをチェックします。
データはread()で取得できます。
■ データの読み取り
書式
int read()
引数
なし
戻り値
読み取られたバイトデータ
説明
requestFrom()の呼び出しで読み取られたバイトを取得して返します。
available()を使用して、読み込むバイト数を確認できます。
■ 受信バッファ内先頭データ参照
書式
int peek(void)
引数
なし
戻り値
受信バッファ内先頭データ
説明
受信バッファにデータがある場合、その先頭データを参照して返します。
受信バッファからのデータ取り出しは行いません。
■ 送受信バッファ初期化
書式
void flush(void)
引数
なし
戻り値
なし
説明
受信バッファ、送信バッファ内を初期化します。
■ スレーブモード ・データ受信ハンドラ登録
書式
onReceive(void (*function)(int))
引数
function:受信時呼び出し関数
戻り値
なし
説明
スレーブモードにてマスタからの送信を受けたときに呼び出す関数を登録します。
呼び出される関数には、受信データバイト数が渡されます。
呼び出される関数内では、受信バッファからデータを取得し、適切な処理の実装が必要です。
■ スレーブモード・データ要求ハンドラ登録
書式
void onRequest(void (*)(void))
引数
function:データ要求時呼び出し関数
戻り値
なし
説明
スレーブモードにて、マスタからのデータを要求時に呼び出される関数を登録します。
呼び出される関数内では、マスタへのデータ送信等の適切な処理の実装が必要です。
関連項目
/icons/hr.icon
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。