NO IMAGE

I2C slave simulatorを作る(2)〜メインloopを作る(内容が古くなりましたが記録として残します)

  • 2019年4月24日
  • 2019年4月24日
  • IoT
  • 362view
IoT NO IMAGE

メインloopではtransactionの流れを記述します。ここでtransactionとは、start条件>slave addressとR/W bit送出>バイト転送>・・・>stopまたはrepeated start条件、のことを指します。

===

(1) startを待つ(SCL=1のとき、SDA=fallになるのを待つ)

(2) 7bit slave addressと、1bitのR/~Wを受信する。具体的にはSCL=riseでSDAを取り込む。次のバイト転送の向きを決めるためR/~W bitの状態を覚えておく。

(3) ACKを返す。具体的にはSCL=highのときSDA=0とする。

(4) Wサイクルだったら8bit受信してACKを返す。Rサイクルだったら8bit送信してACK/NACKを待つ。

(5) 次のサイクルが何かを判定する。具体的には、SCL=riseを待つ>SCL=highの間中SDAが変化しなければ1bit転送が成功したということ。次の7bitの転送は(4)に戻って続ける、SCL=highの間にSDA=riseになったらstop条件なので(1)に戻る、同じくSDA=fallになったらrepeated start条件であり(2)に戻る。

===

以降、必要な関数をいくつか定義していきます。

ここまで

NO IMAGE
最新情報をチェックしよう!