I2C制御コマンドの書式( 初版。第2版が出ましたが、記録として残しておきます)

I2C制御コマンドを実装する下準備として、I2C制御コマンドの書式を正確に定義しておきます。

===
1.仮称:
I2C-COM

2.文字:
0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F|S|P|R|W|T|K|N
の23文字。その他は全て区切り記号として読み飛ばされる。

3.数値文字:
0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F
の16文字。

4.バイト:
数値文字2桁で表す。範囲は0x00~0xFFである。

5.スレーブアドレス:
7bitを数値文字2桁で表す。範囲は0x00~0x7Fである。

6.制御文字:
S|P|R|W|T|K|N
の7文字であり、以下にそれぞれ説明する。

前提として、1つのトランザクション(ひとまとまりの流れ)はSで始まりPで終わる。その途中に再度Sがあってもよい。

S
・I2C信号線上にSTART条件を出す。リプライはない。エラーもない。

P
・I2C信号線上にSTOP条件を出す。リプライはない。エラーもない。

K
・I2C信号線上でslaveから8bit受信した後ACK条件を出す。8bit受信できなかったらタイムアウトエラーになる。(タイムアウトになる条件は後日)

N
・I2C信号線上でslaveから8bit受信した後NACK条件を出す。8bit受信できなかったらタイムアウトエラーになる。(タイムアウトになる条件は後日)

R
・スレーブアドレスが後に続く。Pを出すまでデータの向きはslave -> masterである。slaveからACKが返らないとタイムアウトエラーになる。(タイムアウトになる条件は後日)
例)R29

W
・スレーブアドレスが後に続く。Pを出すまでデータの向きはmaster -> slaveである。slaveからACKが返らないとタイムアウトエラーになる。(タイムアウトになる条件は後日)
例)W29

T
・バイトが後に続く。Pを出すまでデータの向きはmaster -> slaveである。slaveからACKが返らないとタイムアウトエラーになる。(タイムアウトになる条件は後日)
例)W8A

以上







コメント

このブログの人気の投稿

i2c-tools 備忘録(内容が古くなりましたが記録として残します)

python-smbus(内容が古くなりましたが記録として残します)