NO IMAGE

I2C-COMの実装〜start/stop/read/writeの各関数(内容が古くなりましたが記録として残します)

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

start/stop/read/writeの各関数を書いていきます。”tSU_STA”等は規定時間以上待つことを意味します。

void start(void)

{sda(1);

scl(1);

tSU_STA;

sda(0);

tHD_STA;

scl(0);

tLOW;}

void stop(void)

{sda(0);

scl(0);

tLOW;

scl(1);

tSU_STO;

sda(1);

tBUF;}

データ転送関数は、関数に入ってくる時の状態がバラバラなので、次の規則を設けて時間を保証することにする。考え方は、

・関数に入って出るまでにSCLがlow->high->lowの1サイクル動く。この時間をtLOW1, tHIGH1, tLOW2で表す。tLOW1>tSU_DAT, tHIGH1>=tHIGH, tLOW2>tVD_DAT、とする。

・writeは関数に入った直後、readは関数に入ってくるとき、SDAは確定していることを前提とする。そのため、関数から抜けるときに次の転送サイクルのSDAが確定しているようにする。

void write(byte data)

{sda(data);

scl(0);

tLOW1;

scl(1);

tHIGH1;

scl(0);

tLOW2;}

byte read(void)

{scl(0);

tLOW1;

scl(1);

temp=SDA;

tHIGH;

scl(0);

tLOW2;

return temp;}

ここまで

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