R_IICAn_Master_Sendの第4引数について

CS+にて自動生成してくれるRL78のI2Cのドライバ関数R_IICAn_Master_Send
(及び R_IICAn_Master_Receive)につきまして、

第4引数に wait; スタート・コンディションのセットアップ時間 という設定項目があります。

このwait値に比例して内部処理で単純にループによるウェイトをかけているのは分かるのですが、
ウェイトを変更する必要性等、基本的なところが理解できていません。

何を基準に適正な設定値を決めればよいのでしょうか。
ご教授頂けますよう、よろしくお願いします。

Parents
  • チョコです。

    この引数はスタート・コンディションの発行をトリガしてから,実際にIICバスでスタート・コンディションが

    発行されたことをチェックするまでの時間を指定するものです。単に,無限ループになるのをきらった

    ためのものです。

    普通は,IICバスの1ビット分の時間あれば,完了すると考えられるので,余裕をみて,倍の時間

    分みればいいと思います。

    長過ぎても,単にスタート・コンディションからスレーブ・アドレスの送信までの時間が延びるだけです。

    短すぎると,実際にスタート・コンディションが発行される前にエラーと判断してしまうので,長くする方が

    トラブルは少ないかと思います。

    私がサンプルプログラムで作っているのは,この値は100で固定(引数にしていない)していますが,

    単純な100回ループではなく,ループの中でスタート・コンディションを検出したらループを抜けるように

    しています。

    japan.renesasrulz.com/.../293.aspx

Reply
  • チョコです。

    この引数はスタート・コンディションの発行をトリガしてから,実際にIICバスでスタート・コンディションが

    発行されたことをチェックするまでの時間を指定するものです。単に,無限ループになるのをきらった

    ためのものです。

    普通は,IICバスの1ビット分の時間あれば,完了すると考えられるので,余裕をみて,倍の時間

    分みればいいと思います。

    長過ぎても,単にスタート・コンディションからスレーブ・アドレスの送信までの時間が延びるだけです。

    短すぎると,実際にスタート・コンディションが発行される前にエラーと判断してしまうので,長くする方が

    トラブルは少ないかと思います。

    私がサンプルプログラムで作っているのは,この値は100で固定(引数にしていない)していますが,

    単純な100回ループではなく,ループの中でスタート・コンディションを検出したらループを抜けるように

    しています。

    japan.renesasrulz.com/.../293.aspx

Children
  • ご回答ありがとうございます。

    そうすると、400kHzで通信する場合は2クロック分見て5μsecウェイトが必要

    32MHzマイコンで動作させる場合は160cycle相当

    ビルド設定にもよりますが、1wait分のループに最低5cycleかかるとすれば

    32ぐらいの値を与えておけば大丈夫ということでしょうか。

  • チョコです。

    >32ぐらいの値を与えておけば大丈夫ということでしょうか。

    はい,ファースト・モード(SCL:400kHz)であれば,その程度でいいと思います。