RXduino
1.20a
RXduinoマニュアル 最終更新日 平成26年6月29日
|
RXマイコンに、I2Cの周辺デバイスを接続してアクセスするためのルーチン [詳細]
#include "tkdn_hal.h"
関数 | |
void | i2c_init (i2c_info *i2c, int sda, int scl) |
I2C(マスター)を操作するための初期化 [詳細] | |
void | i2c_init_slave (i2c_info *i2c, int sda, int scl, unsigned char addr) |
I2C(スレーブ)を操作するための初期化 [詳細] | |
int | i2c_request_from (i2c_info *i2c, unsigned char address, int count) |
I2Cデバイスに対して受信シーケンスを発行し、データを読み出す [詳細] | |
int | i2c_available (i2c_info *i2c) |
受信バッファ内に格納されているデータ数を返す [詳細] | |
int | i2c_read (i2c_info *i2c) |
受信バッファからデータを1バイト取り出す [詳細] | |
void | i2c_begin_transmission (i2c_info *i2c, unsigned char address) |
I2Cデバイスに対して送信を開始するための準備をする [詳細] | |
int | i2c_write (i2c_info *i2c, unsigned char data) |
送信バッファの末尾に1バイトのデータを追加する [詳細] | |
unsigned char | i2c_end_transmission (i2c_info *i2c) |
ターゲットデバイスに対してI2Cの送信シーケンスを発行する [詳細] | |
void | i2c_set_freq (int freq) |
I2Cの周波数を変更する [詳細] | |
RXマイコンに、I2Cの周辺デバイスを接続してアクセスするためのルーチン
このライブラリは、RXマイコンの任意の端子を通じて、I2C周辺デバイスと接続できます。
RXマイコンに内蔵されたRIICモジュールではなく、GPIOを使っているので、任意の端子を通じて操作できます。
tkdn_i2c.h で定義されています。
void i2c_init | ( | i2c_info * | i2c, |
int | sda, | ||
int | scl | ||
) |
I2C(マスター)を操作するための初期化
この関数を呼び出すと、引数i2cで指定された構造体のメンバを初期化し、I2Cを使用する準備をします。
RXマイコンがI2Cマスターになります。
引数に指定するI2C構造体は、この関数を呼び出すユーザアプリ側で用意してください。
[in] | i2c | 初期化したいi2c構造体へのポインタ |
sda | SDA(データ端子)のピンの番号。任意のピンが使用できる。 | |
scl | SCL(クロック端子)のピンの番号。任意のピンが使用できる。 |
void i2c_init_slave | ( | i2c_info * | i2c, |
int | sda, | ||
int | scl, | ||
unsigned char | addr | ||
) |
I2C(スレーブ)を操作するための初期化
この関数を呼び出すと、引数i2cで指定された構造体のメンバを初期化し、I2Cを使用する準備をします。
RXマイコンがI2Cスレーブになります。
引数に指定するI2C構造体は、この関数を呼び出すユーザアプリ側で用意してください。
[in] | i2c | 初期化したいi2c構造体へのポインタ |
sda | SDA(データ端子)のピンの番号 | |
scl | SCL(クロック端子)のピンの番号 | |
addr | 自身のI2Cアドレス |
int i2c_request_from | ( | i2c_info * | i2c, |
unsigned char | address, | ||
int | count | ||
) |
I2Cデバイスに対して受信シーケンスを発行し、データを読み出す
読み出したデータ数は i2c_available() 関数で確認する。バッファ中のデータ i2c_read() 関数で読み出す。
[in] | i2c | i2c_init() 関数でセットアップされた構造体へのポインタ |
address | ターゲットデバイスのアドレス(7bit) RD/WRを示すビットは含まず、0~0x7Fまでの純粋なアドレスを与えること。 | |
count | 読み出したいデータのバイト数。範囲は0~260。260以上の値を指定した場合は260に切り捨てられる。 |
int i2c_available | ( | i2c_info * | i2c | ) |
int i2c_read | ( | i2c_info * | i2c | ) |
受信バッファからデータを1バイト取り出す
[in] | i2c | i2c_init() 関数でセットアップされた構造体へのポインタ |
void i2c_begin_transmission | ( | i2c_info * | i2c, |
unsigned char | address | ||
) |
I2Cデバイスに対して送信を開始するための準備をする
[in] | i2c | i2c_init() 関数でセットアップされた構造体へのポインタ |
address | ターゲットデバイスのアドレス(7bit) RD/WRを示すビットは含まず、0~0x7Fまでの純粋なアドレスを与えること。 |
int i2c_write | ( | i2c_info * | i2c, |
unsigned char | data | ||
) |
送信バッファの末尾に1バイトのデータを追加する
[in] | i2c | i2c_init() 関数でセットアップされた構造体へのポインタ |
data | 送信したでデータ |
unsigned char i2c_end_transmission | ( | i2c_info * | i2c | ) |
ターゲットデバイスに対してI2Cの送信シーケンスを発行する
I2Cの送信はこの関数を実行して初めて実際に行われる。
送信されるターゲットアドレスは i2c_begin_transmission() 関数で指定したもの。 送信データは i2c_write() 関数でバッファに格納されたもの。
[in] | i2c | i2c_init() 関数でセットアップされた構造体へのポインタ |
void i2c_set_freq | ( | int | freq | ) |
I2Cの周波数を変更する
空ループで測っている。タイマを使ってキャリブレーションしているので、それなりに正確な値が出るはず。
[in] | freq | クロックの周波数をHz単位で指定する。有効な値は1~200000程度。基本的にソフトでやっているので400kHzは出ない。 |