C2A_Core
i2c.h ファイル

I2C通信(Master側)のラッパークラスです。 [詳解]

#include <stdint.h>
i2c.h の依存先関係図:
被依存関係図:

[ソースコード]

データ構造

struct  I2C_Config
 

列挙型

enum  I2C_ERR_CODE {
  I2C_UNKNOWN_ERR = -20 , I2C_RX_BUFFER_SMALL = -14 , I2C_DATA_NEGA_ERR = -13 , I2C_TIMEOUT = -10 ,
  I2C_YET_ERR = -4 , I2C_ALREADY_ERR = -3 , I2C_FREQUENCY_ERR = -2 , I2C_CH_ERR = -1 ,
  I2C_OK = 0
}
 I2C用の汎用エラーコード [詳解]
 

関数

int I2C_init (void *my_i2c_v)
 I2cConfig構造体をグローバルインスタンスとして定義し、ポインタを渡すことでポートを初期化します。 [詳解]
 
int I2C_rx (void *my_i2c_v, void *data_v, int buffer_size)
 I2cConfig構造体にて指定されたchからデータを受信します [詳解]
 
int I2C_tx (void *my_i2c_v, void *data_v, int data_size)
 I2cConfig構造体にて指定されたchへデータを送信します [詳解]
 
int I2C_reopen (void *my_i2c_v, int reason)
 指定されたchを開きなおす [詳解]
 
void I2C_set_stop_flag (void *my_i2c_v, const uint8_t stop_flag)
 stop_flagを設定する [詳解]
 
void I2C_set_rx_length (void *my_i2c_v, const uint32_t rx_length)
 rx_lengthを設定する [詳解]
 

詳解

I2C通信(Master側)のラッパークラスです。

覚え書き
I2C通信ラッパーは、 I2Cのインターフェースを実現し、 I2Cポートの初期化、データ送信、データ受信を行う、 I2C通信ラッパーのクラスです。 個々の機器のインターフェースモジュールに継承させて使用します。

i2c.h に定義があります。

列挙型詳解

◆ I2C_ERR_CODE

I2C用の汎用エラーコード

覚え書き
型はint8_tを想定しているが, if_listでラップされているためI2Cの公開関数の返り値はintとなっている 基本負なのはRXの返り値は正が送ったByte数, 負がエラーコードとなっているため
列挙値
I2C_UNKNOWN_ERR 

原因不明

I2C_RX_BUFFER_SMALL 

受信バッファサイズが受信データ長より小さい

I2C_DATA_NEGA_ERR 

送受信データサイズが負のエラー

I2C_TIMEOUT 

通信時のTimeout

I2C_YET_ERR 

チャンネル未オープン

I2C_ALREADY_ERR 

チャンネルオープン済み

I2C_FREQUENCY_ERR 

周波数異常

I2C_CH_ERR 

チャンネル異常 (Port_configに無い)

I2C_OK 

OKは0を踏襲

i2c.h36 行目に定義があります。

関数詳解

◆ I2C_init()

int I2C_init ( void *  my_i2c_v)

I2cConfig構造体をグローバルインスタンスとして定義し、ポインタを渡すことでポートを初期化します。

引数
[in]my_i2c_v初期化するI2cConfig構造体へのポインタ
戻り値
int I2C_ERR_CODEとしたいが, if_listでintと統一されている。
覚え書き
I2C通信ラッパーのクラスを使用する時は起動時に必ず実施してください。 この関数を実行する前にI2cConfig構造体内の設定値を設定しておく必要があります。

i2c_sils.cpp4 行目に定義があります。

◆ I2C_reopen()

int I2C_reopen ( void *  my_i2c_v,
int  reason 
)

指定されたchを開きなおす

引数
[in]my_i2c_v開きなおす際のポート設定
[in]reasonreopenする理由.0は正常操作を示す TODO: reasonのenumを作る?
戻り値
int: I2C_ERR_CODE に従う

i2c_sils.cpp26 行目に定義があります。

◆ I2C_rx()

int I2C_rx ( void *  my_i2c_v,
void *  data_v,
int  buffer_size 
)

I2cConfig構造体にて指定されたchからデータを受信します

引数
[in]my_i2c_v: 対象とするI2cConfig構造体へのポインタ
[in]data_v: 受信データ格納先へのポインタ
[in]buffer_size: 受信データ格納先のバッファサイズ、I2C通信による受信データ長よりも長い必要がある
戻り値
0受信データなし
受信データバイト数
エラー. I2C_ERR_CODE に従う
覚え書き
この関数内でI2C読み出し要求を送信しています

i2c_sils.cpp10 行目に定義があります。

◆ I2C_set_rx_length()

void I2C_set_rx_length ( void *  my_i2c_v,
const uint32_t  rx_length 
)

rx_lengthを設定する

引数
[in]rx_length設定する受信データ長
戻り値
なし

i2c_sils.cpp40 行目に定義があります。

被呼び出し関係図:

◆ I2C_set_stop_flag()

void I2C_set_stop_flag ( void *  my_i2c_v,
const uint8_t  stop_flag 
)

stop_flagを設定する

引数
[in]stop_flag設定するstop_flag
戻り値
なし
被呼び出し関係図:

◆ I2C_tx()

int I2C_tx ( void *  my_i2c_v,
void *  data_v,
int  data_size 
)

I2cConfig構造体にて指定されたchへデータを送信します

引数
[in]my_i2c_v: 対象とするI2cConfig構造体へのポインタ
[in]data_v: 送信データ格納先へのポインタ
[in]count: 送信データサイズ
戻り値
int: I2C_ERR_CODE に従う

i2c_sils.cpp18 行目に定義があります。