C2A_Core
i2c.h
[詳解]
1 
11 #ifndef I2C_H_
12 #define I2C_H_
13 
14 #include <stdint.h>
15 
20 typedef struct
21 {
22  uint8_t ch;
23  uint32_t frequency_khz;
24  uint8_t device_address;
25  uint8_t stop_flag;
26  uint32_t timeout_threshold;
27  uint32_t rx_length;
28 } I2C_Config;
29 
36 typedef enum
37 {
41  I2C_TIMEOUT = -10,
42  I2C_YET_ERR = -4,
45  I2C_CH_ERR = -1,
46  I2C_OK = 0
48 
56 int I2C_init(void* my_i2c_v);
57 
68 int I2C_rx(void* my_i2c_v, void* data_v, int buffer_size);
69 
77 int I2C_tx(void* my_i2c_v, void* data_v, int data_size);
78 
85 int I2C_reopen(void* my_i2c_v, int reason);
86 
92 void I2C_set_stop_flag(void* my_i2c_v, const uint8_t stop_flag);
93 
99 void I2C_set_rx_length(void* my_i2c_v, const uint32_t rx_length);
100 
101 #endif
I2C_ERR_CODE
I2C用の汎用エラーコード
Definition: i2c.h:37
@ I2C_CH_ERR
チャンネル異常 (Port_configに無い)
Definition: i2c.h:45
@ I2C_TIMEOUT
通信時のTimeout
Definition: i2c.h:41
@ I2C_UNKNOWN_ERR
原因不明
Definition: i2c.h:38
@ I2C_RX_BUFFER_SMALL
受信バッファサイズが受信データ長より小さい
Definition: i2c.h:39
@ I2C_DATA_NEGA_ERR
送受信データサイズが負のエラー
Definition: i2c.h:40
@ I2C_YET_ERR
チャンネル未オープン
Definition: i2c.h:42
@ I2C_ALREADY_ERR
チャンネルオープン済み
Definition: i2c.h:43
@ I2C_FREQUENCY_ERR
周波数異常
Definition: i2c.h:44
@ I2C_OK
OKは0を踏襲
Definition: i2c.h:46
int I2C_init(void *my_i2c_v)
I2cConfig構造体をグローバルインスタンスとして定義し、ポインタを渡すことでポートを初期化します。
Definition: i2c_sils.cpp:4
int I2C_reopen(void *my_i2c_v, int reason)
指定されたchを開きなおす
Definition: i2c_sils.cpp:26
void I2C_set_rx_length(void *my_i2c_v, const uint32_t rx_length)
rx_lengthを設定する
Definition: i2c_sils.cpp:40
int I2C_rx(void *my_i2c_v, void *data_v, int buffer_size)
I2cConfig構造体にて指定されたchからデータを受信します
Definition: i2c_sils.cpp:10
int I2C_tx(void *my_i2c_v, void *data_v, int data_size)
I2cConfig構造体にて指定されたchへデータを送信します
Definition: i2c_sils.cpp:18
void I2C_set_stop_flag(void *my_i2c_v, const uint8_t stop_flag)
stop_flagを設定する
C89 環境用 stdint.h
Definition: i2c.h:21
uint8_t device_address
継承先の機器のアドレス
Definition: i2c.h:24
uint8_t stop_flag
最後にSTOPを送るか否かを選択 0->送らない,それ以外->送る
Definition: i2c.h:25
uint32_t rx_length
I2C通信における受信データ長 単位: Byte
Definition: i2c.h:27
uint8_t ch
継承先の機器がつながっているポート番号
Definition: i2c.h:22
uint32_t timeout_threshold
この値を超えるとタイムアウトエラーとなる 単位:カウント数(ユーザー依存) TODO: 時刻にするか要検討
Definition: i2c.h:26
uint32_t frequency_khz
I2Cクロックの周波数 単位:kHz
Definition: i2c.h:23