NO IMAGE

I2C-COMの実装(1)〜タイミング規定を見ておく(内容が古くなりましたが記録として残します)

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

ここからいよいよI2C-COMを実装して行きます。

当面Arduinoのスケッチを書くことになるのですが、その準備作業としてSCL、SDAを操作する関数を作ることにします。ここで考慮したいのが、関数にどこまで機能を持たせるかです。高機能で書きやすいのと低機能で細かく制御できるのとのバランスをどこに置くかと言ういつもの問題です。底辺の最初の設計を間違うと後々まで響くので慎重に検討します。

===

まず、後で困らないようにSCL, SDAのタイミング規定を確認しておきます。Standard-mode CLK=max.100kHzを前提とします。

ここではSCLはmasterからだけ出力し、SDAもmasterから出力するときの規定だけ気にすれば良いので(slaveが規定を逸脱したらどこかでエラーになることを期待する)、守らねばならない規定は次のようになります。

(1) SCL自身の規定

0<fCLK<100kHz, tLOW>4.7us, tHIGH>4.0us

(2) SCLとSDAの関係に関する規定

小解説:

set up timeとは、信号Aのある時点に対して信号Bが前もって確定しておかねばならない時間

hold timeとは、信号Aのある時点以降も信号Bが確定しておかねばならない時間

===

プログラムで意識しやすいように、タイミング規定を(1) SDA -> SCL、(2) SCL -> SDA、に分類します。

(1) SDA -> SCL

tHD.STA>4.0us:START condition時、SDA=fallからSCL=fallまで

tSU.DAT>250ns:データ転送時、SDAが確定してからSCL=riseまで

(2) SCL -> SDA

tSU.STA>4.7us:REPEATED START condition時、SCL=riseからSDA=fallまで

tHD.DAT>0:データ転送時、SCL=fallからSDAが次に変化するまで

tSU.STO>4.0us:STOP condition時、SCL=riseからSDA=riseまで

===

長くなるのでここまで

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