[Armadillo:07134] Re: [Armadillo-440] I2C通信で失敗する

下村智範 email@hidden
2011年 4月 21日 (木) 18:24:37 JST


お世話になっております。
下村です。

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

ダミークロックが発行された際に、スレーブデバイスとして
何をしなければいけないか、また、何ができるのかについて
もうちょっと質問させてください。

ダミークロックの発行は、Armadilloの電源投入時にI2Cスレーブデバイスが
通信エラー/信号待ち状態になっているかもしれないから無条件で発行する
という理解で間違いございませんでしょうか。

ダミークロックを受け取ったスレーブデバイスは、通信エラー/信号待ち状態
の場合は、復帰するために何かリセット処理を行わなければいけないのでしょうか?
それとも、ダミークロックは、I2Cの通信シーケンスを一通り流すため
スレーブI2Cモジュールが勝手(自動的)に、正常な状態まで行くだろうということを
期待しているのでしょうか。

通信エラー/信号待ち状態ではない場合は、何もしなくても良いということになり
ますでしょうか。

> 上記のように、リード中にリセットが発生すると、RTCがバスを掴んだままとなります。
バスの制御はマスターデバイスという認識ですが、スレーブデバイスのRTCがバスを
掴んだままになるのでしょうか。


現在、I2C通信が行えない原因は、マスターがバス競合負けしているためだと
考えております。
なぜ、マスターがバスを獲得できないのかに的を絞って解析を行っています。


以上、よろしくお願いいたします。


2011年4月21日16:52 Takenoshita Koyo <email@hidden>:
> 竹之下です。
>
>> 起動時のダミークロックについて、もう少し詳しくご教授いただけませんでしょうか。
>> 128個のダミークロックとは、I2C-1に繋がるであろうスレーブデバイス1〜128に
>> クロックを出力しているということでしょうか。
> I2Cは、バスにつながっている全てのデバイスで、クロック線(SCL)とデータ線(SDA)
> を共有するので、どれか一つのデバイスだけにクロックを送るということはできません。
> 単に、SCLを High->Low->High->Low... と128回変化させているだけです。
>
>> ダミーと記載されておりますが、実際にI2Cデバイスが接続されていた場合
>> ダミークロックを受け取ったスレーブデバイスはどのよな挙動を期待されて
>> おりますでしょうか。
> 以下のような状況を想定しています。
>
> I2Cマスタデバイス=i.MX25、I2Cスレーブデバイス=RTC の場合
> 1. RTCに対してリードを行う
> 2. リード中にi.MX25がリセットされる => RTCはリード状態のまま
> 3. i.MX25再起動
> 4. 起動時にダミークロックが発行される => RTCのリード状態が解除される
>
>> このダミークロックを出力する処理を削った場合、何か弊害が発生しますでしょうか。
> 上記のように、リード中にリセットが発生すると、RTCがバスを掴んだままとなります。
>
> --
> Koyo Takenoshita
>
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>



armadillo メーリングリストの案内