[Armadillo:07222] Re: [Armadillo-440] I2C通信で失敗する
g-kihara
email@hidden
2011年 5月 16日 (月) 17:50:39 JST
> スレーブ側のVDDは、3.3vで動作させているとのことでしたので
> マスターと一致していました。
マスターとスレーブの電圧レベルの違いを疑っていたのですが、この点について
は大丈夫そうですね。
その"独自機器"を使用せず、別のデバイス(温度センサなど簡単に
実験できるもの)をスレーブにして、I2C通信が行えるか実験してみてはどうで
しょうか?armadilloボードも,I2C用ソフトも問題がないということがわかれ
ば、"独自機器"に問題があるということになります。
以上
(2011/05/16 16:39), 下村智範 wrote:
> To : g-kihara様
>
> お世話になっております。
> 下村です。
>
> スレーブ側のVDDは、3.3vで動作させているとのことでしたので
> マスターと一致していました。
>
> 以上、よろしくお願いいたします。
>
>
> 2011年5月12日12:53 g-kihara<email@hidden>:
>> 下村 様
>>
>>> Armadilloよりも先に独自機器の電源をONし、ステータスを
>>> 逆に、Armadilloの方から電源をONした場合も見てみました。
>>> 電源をどちらから先に投入するかで若干結果が異なっています。
>>
>> スレッドを読み返して思ったのですが、
>> この"独自機器"に大きな問題があるのでは?
>> GNDについては、他の方に指摘を受けて共通にされたのでということでOK
>> ですが、
>> ひょっとして、VDDもマスターとスレーブで異なっているのでは?
>>
>> 以上
>>
>>
>>
>>
>>
>>
>>
>> (2011/05/11 19:09), 下村智範 wrote:
>>> To : 竹之下様
>>>
>>> お世話になっております。
>>> 下村です。
>>>
>>>> 同じ操作をして、エラーの内容が変わったということは、
>>>> やはりハードにも何か問題が発生していたのですね。
>>> そのようです。
>>> 環境はmicroSDにカーネルもユーザーランドも配置しておりますので
>>> まったく同じ環境で動作させております。
>>> ハードに問題があったことは間違いないかと思います。
>>>
>>>
>>>> Bus Arbitration lostが発生するのは、
>>>> マスタがSDAをHighにドライブしてるのに、SDAがLowになっていた
>>>> (つまり、スレーブがSDAをLowにドライブしていた)
>>>> という場合です。
>>>>
>>>> 言い換えると、スレーブが動作してはいけないタイミングで動作
>>>> してしまった場合に、Bus Arbitration lostが発生します。
>>> 独自機器を繋いでいない状態でBus Arbitration lostが発生するということは
>>> SDAが常にLowになってしまっているということになりますでしょうか。
>>>
>>>
>>>> "アルマジロの仕様書のI2Cのサンプルコードと同じシーケンス"
>>>> とは、何のことを指していますか?
>>> 以前教えていただいた、「Armadillo実践開発ガイド 第3部」にあるI2Cのサンプルです。
>>>
>>>
>>>> "(3)では通信が行えるはず"とありますが、
>>>> "独自機器用のドライバもKernelへ追加。"されているので、
>>>> それが何か邪魔をしている可能性があります。
>>> (1)、(2)でも同様のエラーが発生していることから、独自機器の影響だけとは考え難い状況です。
>>> また、独自機器用のドライバは、標準で用意されている「mxc_i2c.c」をそのまま利用しています。
>>> 「mxc_i2c.c」を利用するために、アプリは用意していますが、実装している内容は
>>> 「Armadillo実践開発ガイド 第3部」にあるI2Cのサンプルとほぼ同等です。
>>>
>>>
>>>> まずは、Android対応でもない、
>>>> "独自機器用のドライバもKernelへ追加。"もしていない、
>>>> 標準のままのカーネルで動作確認してください。
>>> こちらは現在ビルド環境を準備中です。
>>>
>>>
>>>> I2Cバスというのは、元々スレーブデバイスを複数接続できるバスですので、
>>>> RTC(S-35390A)が使用するアドレスと、"独自機器"が使用するアドレスが一致
>>>> しなければ、"独自機器"には何ら影響しないはずです。
>>> もちろん弊社もそのような認識です。
>>>
>>>
>>>> 今回の(3)のケースでは、RTCに対する読み出し要求の際に、Bus Arbitration Lost
>>>> が発生している(つまり、動いてはいけないスレーブが動いてしまっている)という
>>>> 状況です。アドレスが重複していないかについても、再度ご確認ください。
>>> ログを見ていただければわかると思いますが、アドレスは重複していません。
>>> また、独自機器を繋いでいない状態でもBus Arbitration Lostが発生しております。((1)、(2)のログです)
>>> これはどう解釈すればよろしいでしょうか。
>>>
>>>
>>> 独自機器をアルマジロへ接続していない状態で、I2Cを動かそうとした場合
>>> Bus Arbitration Lostではなく、「応答なし」や「タイムアウト」のエラーが
>>> 発生すると予測しておりました。
>>> I2CのステータスレジスタにBus Arbitration Lostが立っているので
>>> I2Cのスタートシーケンスさえ動いていないと思われます。
>>>
>>>
>>> 以上、よろしくお願いいたします。
>>>
>>>
>>> 2011年5月11日16:34 Takenoshita Koyo<email@hidden>:
>>>> 下村智範 さんは書きました:
>>>>> To : 竹之下様
>>>>>
>>>>> お世話になっております。
>>>>> 下村です。
>>>>>
>>>>> 代替機を用意していただきましたので、代替機で動作確認を行いました。
>>>>>
>>>>> 結果、エラーの内容が少し変わりましたが、I2C通信が行えない現象は
>>>>> 変わりませんでした。
>>>> 同じ操作をして、エラーの内容が変わったということは、
>>>> やはりハードにも何か問題が発生していたのですね。
>>>>
>>>>> I2C-1のOpen、スレーブアドレス設定までは、成功していますが
>>>>> Readしようとすると、エラーが発生します。
>>>>> エラーのタイミング的には、今までと同じです。
>>>>> (今までのエラー:Could not grab Bus ownership)
>>>>>
>>>>> [エラー内容]
>>>>> <7>i2c-dev: i2c-1 reading 20 bytes.
>>>>> <7>i2c-adapter i2c-1: master_xfer[0] R, addr=0x22, len=20
>>>>> <7>Bus Arbitration lost
>>>>> <7>Data not transmitted
>>>> Bus Arbitration lostが発生するのは、
>>>> マスタがSDAをHighにドライブしてるのに、SDAがLowになっていた
>>>> (つまり、スレーブがSDAをLowにドライブしていた)
>>>> という場合です。
>>>>
>>>> 言い換えると、スレーブが動作してはいけないタイミングで動作
>>>> してしまった場合に、Bus Arbitration lostが発生します。
>>>>
>>>>>
>>>>>
>>>>> 起動ログを取得しましたので、添付いたします。
>>>>>
>>>>> (1)
>>>>> ・Test_at14_Normal_debuglog_console.txt
>>>>> ・Test_at14_Normal_debuglog_dmesg.txt
>>>>> → DLした「linux-2.6.26-at14-android-20110419b.tar.gz」に
>>>>> I2Cのデバッグログを出力するようにMenuconfigを
>>>>> 変更したKernelを使用。独自機器未接続。
>>>>>
>>>>> (2)
>>>>> ・Test_at14_fts_debuglog_console1.txt
>>>>> ・Test_at14_fts_debuglog_dmesg1.txt
>>>>> → DLした「linux-2.6.26-at14-android-20110419b.tar.gz」に
>>>>> I2Cのデバッグログを出力するようにMenuconfigを
>>>>> 変更したKernelを使用。
>>>>> 独自機器用のドライバもKernelへ追加。
>>>>> 独自機器未接続。
>>>>>
>>>>> (3)
>>>>> ・Test_at14_fts_debuglog_d5_console3.txt
>>>>> ・Test_at14_fts_debuglog_d5_dmesg3.txt
>>>>> → DLした「linux-2.6.26-at14-android-20110419b.tar.gz」に
>>>>> I2Cのデバッグログを出力するようにMenuconfigを
>>>>> 変更したKernelを使用。
>>>>> 独自機器用のドライバもKernelへ追加。
>>>>> 独自機器接続。
>>>>>
>>>>>
>>>>> アルマジロの仕様書のI2Cのサンプルコードと同じシーケンスで
>>>>> I2C通信を試みていますので、(3)では通信が行えるはずですが
>>>>> 「Bus Arbitration lost」が発生しております。
>>>> "アルマジロの仕様書のI2Cのサンプルコードと同じシーケンス"
>>>> とは、何のことを指していますか?
>>>>
>>>> "(3)では通信が行えるはず"とありますが、
>>>> "独自機器用のドライバもKernelへ追加。"されているので、
>>>> それが何か邪魔をしている可能性があります。
>>>>
>>>> まずは、Android対応でもない、
>>>> "独自機器用のドライバもKernelへ追加。"もしていない、
>>>> 標準のままのカーネルで動作確認してください。
>>>>
>>>>> 独自機器の方も回路図および実動作を点検していただき
>>>>> 問題ないと連絡をいただいております。
>>>>> アルマジロも代替機のため、正常だと思われます。
>>>>> しかし、この状態でBus Arbitration lostが発生しているため
>>>>> I2C通信を行うには、まだ何か設定が足りていないのでは
>>>>> ないかと考えておりますがいかがでしょうか。
>>>>>
>>>>> 一点気になるところとしましては、RTCの初期化処理がやはり
>>>>> I2C-1に対して行われております。
>>>>> 液晶モデルは、I2C-1にRTCは繋がっていないと認識しておりましたが
>>>>> 初期化処理が行われておりますので、I2C-1に対して初期化を行う理由、影響も
>>>>> ご教授いただけませんでしょうか。
>>>> Armadillo-420とArmadillo-440を含む、Armadillo-400シリーズは汎用CPUボード
>>>> として設計されています。Armadillo-400シリーズ共通で使用できるオプション品
>>>> として、Armadillo-400シリーズRTCオプションモジュールという製品があります。
>>>>
>>>> これを、Armadillo-420やArmadillo-440のCON14(I2C-1)に接続するだけで
>>>> RTCとして使えるようにするために、カーネルの初期化時にI2C-1の特定のアドレス
>>>> に対してリードを行います。もし、反応があればRTCオプションモジュールが接続
>>>> されているとみなします。
>>>>
>>>> I2Cバスというのは、元々スレーブデバイスを複数接続できるバスですので、
>>>> RTC(S-35390A)が使用するアドレスと、"独自機器"が使用するアドレスが一致
>>>> しなければ、"独自機器"には何ら影響しないはずです。
>>>>
>>>> 今回の(3)のケースでは、RTCに対する読み出し要求の際に、Bus Arbitration Lost
>>>> が発生している(つまり、動いてはいけないスレーブが動いてしまっている)という
>>>> 状況です。アドレスが重複していないかについても、再度ご確認ください。
>>>>
>>>> --
>>>> Koyo Takenoshita
>>>>
>>>> _______________________________________________
>>>> armadillo mailing list
>>>> email@hidden
>>>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>>>>
>>> _______________________________________________
>>> armadillo mailing list
>>> email@hidden
>>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>>>
>> _______________________________________________
>> armadillo mailing list
>> email@hidden
>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>>
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>
armadillo メーリングリストの案内