i2c
関数
まとめ by
nobcha (c)2011 |
項
番
|
分類
|
名称
|
説明
|
引用
する
関数
など |
定義
場所
|
1 |
低
レベル
関数
|
void i2c_stop(void) |
ストップ状態にします:クロックをHにしてデータをL->Hします |
SDA_LOW() SCL_HIGH() SDA_HIGH() __delay_us(X) |
"i2c.c" |
2 |
低レベル
関数
|
void i2c_restart(void) |
スタート状態にします:まずはデータ線を確実にHにして、スタート状態にします。i2c_Start()マクロも同様です |
SDA_LOW() SCL_HIGH() SDA_LOW() __delay_us(X) |
"i2c.c" |
3 |
低レベル
関数
|
unsigned
char i2c_sendbyte(unsigned char byte) |
バイトをスレーブに送ります.
エラー時にはTRUEを返します |
SDA_LOW() SCL_LOW() SDA_HIGH() i2c_waitforSCL()
__delay_us(X) |
"i2c.c" |
4 |
低レベル
関数
|
unsigned
char i2c_sendaddress(unsigned char address, unsigned char rw) |
スレーブへアドレスとデータの方向指定ビットを送ります.
7ビットアドレス(最下位無視)、方向(FALSE=write) |
i2c_sendbyte(byte) |
"i2c.c" |
5 |
低レベル
関数
|
signed
char i2c_readack(void) |
スレーブ側からのアックをチェックします.
アックを返すか、アックなしか、バスエラーならERRORです |
SCL_LOW()
i2c_waitforSCL()
__delay_us(X) |
"i2c.c" |
6 |
低レベル
関数
|
int i2c_readbyte(void) |
スレーブからバイトリードします。読んだバイトを返すか、もしバスエラーだったらERRORを返します |
SCL_LOW() i2c_waitforSCL()
__delay_us(X) |
"i2c.c" |
7 |
低レベル
関数
|
void i2c_sendack(unsigned
char status) |
スレーブ側にアックあるいは非アックを送ります。I2C_LASTというstatusを送ると、これで最後バイトを送りますという意味です |
SDA_LOW() SDA_HIGH()
__delay_us(X) |
"i2c.c" |
8 |
高レベル
関数
|
signed
char i2c_putbyte(unsigned char data) |
スレーブに1バイトを送ります。I2C_ERROR、アック、非アックを返します。 |
i2c_sendbyte(data) i2c_readack() |
"i2c.c" |
9 |
高レベル
関数
|
int i2c_getbyte(unsigned
char more) |
スレーブから1バイト読み取り、転送のアックを確認。戻り値はI2C_ERRORならtrueであり、それ以外はbyte |
i2c_readbyte() i2c_sendack(byte) |
"i2c.c" |
10 |
高レベル
関数
|
int i2c_putstring(const
unsigned char *str, unsigned char length) |
スレーブにバイト列を送り、転送のアックを確認する。もし転送不成功なら転送残バイト数を返す |
i2c_putbyte(*str) |
"i2c.c" |
11 |
高レベル
関数
|
unsigned
char i2c_getstring(unsigned char *str, unsigned char number) |
スレーブから指定されたバイト数をstr文字列に格納、転送のアックを返す。読み込みに成功しなかった文字数を返す |
i2c_getbyte(number) |
"i2c.c" |
12 |
低レベル
関数
|
unsigned
char i2c_open(unsigned char address, unsigned char mode) |
指定アドレスのデバイスと通信を開始する。モードはI2C_READあるいはI2C_WRITEで指定される。もし指定アドレスに対してアック無いとTRUEを返す |
i2c_start() i2c_sendaddress(address,
mode) i2c_readack() |
"i2c.c" |
13 |
低レベル
関数
|
unsigned
char
i2c_waitforSCL(void) |
遅いスレーブの場合用にクロック線が開放されるのをまつ。タイムアウト時間の後もSCLが開放されないときはTRUEを返す。もしそうでないときはSCLが開放された時にFALSEを返す |
__delay_us(X) |
"i2c.c" |
14 |
低レベル
関数
|
void i2c_free() |
バスを開放する |
SCL_LOW() SCL_HIGH() __delay_us(X) |
"i2c.c" |
15 |
低レベル
関数
|
unsigned
char i2c_read(unsigned char ucAdr) |
1文字読んでucAdrが0ならば読み取り終了する |
i2c_readfrom(ucAdr) i2c_getbyte(MORE) i2c_stop() |
"i2c.c" |
16 |
マクロ定義
|
I2C_MORE |
更にデータがあるか |
i2c_getbyte(MORE) |
"i2c.h" |
17 |
マクロ定義
|
I2C_LAST |
読むべき最後のデータなのか |
i2c_getbyte(MORE) |
"i2c.h" |
18 |
マクロ定義
|
I2C_ERROR |
バスエラーのチェック
結果
|
i2c_getbyte(MORE) |
"i2c.h" |
19 |
高レベル
関数
|
i2c_writeto(address) |
書き
込み先デバイスの
指定
、アクティベート |
i2c_Open(number) |
"i2c.h" |
20 |
高レベル
関数
|
i2c_readfrom(address) |
読み取り元デバイスの指定
、アクティベート |
i2c_Open(number) |
"i2c.h" |