7 Replies Latest reply on Oct 8, 2019 6:28 PM by HirotakaT_91

    FX3のI2C bootについて

    TeMa_2997106

      FX3(CYUSB3014)をI2C bootで起動しようとしています。

       

      PMODE[2:0]=[Z1Z]と設定し、通常はI2Cからのアクセスを試みていますが、起動に失敗します。

       

      I2C周りを確認すると、SCLのレート(周波数)が設定の半分になっています。

      これが直接の原因となるかはわかりませんが、CYUSB3KIT-003とは明らかに違う挙動であるため、関連はあるのではないか、と推測しています。

       

      ACKは返ってきているので、応答はしているようです(インタフェースとしては問題なさそうです)。

      周波数が低くなっているだけなので、アドレスサイクルエラーやデータサイクルエラーではないと考えています。

       

      周波数が低くなる要因として考えられる点、確認すべき点があればご教示ください。

        • 1. Re: FX3のI2C bootについて
          HirotakaT_91

          申し訳ございませんが、いただいた情報だけですと、どのような問題が発生しているのか断言できません。

           

          原因調査のため、以下、ご確認及びご返信いただけますでしょうか?

          ・I2Cからの起動に失敗するのは、必ず失敗しますか?時々失敗しますか?

          ・VIO5パワードメインに印加されている電圧を教えていただけますか?

          ・I2Cラインには他にもデバイスが存在しますか?プルアップ抵抗は2.2kΩですか、または別の抵抗値ですか?

          ・FX3 FWでのI2C設定はどのようになっていますか?どの周波数でI2Cデバイスと通信しようと思っていますか?可能であれば設定部分のコードを共有していただけますか?

          ・FX3 I2CはUM10204 (produced by Philips semicondutors) に準拠しますので、適宜ご参照ください。

           

          よろしくお願い致します。

          Hirotaka Takayama

          • 2. Re: FX3のI2C bootについて
            TeMa_2997106

            コメントありがとうございます。

             

            以下に回答致します。

             

            ・I2Cからの起動に失敗するのは、必ず失敗しますか?時々失敗しますか?

            →きちんと確認できているわけではありませんが、100%です。

             

            ・VIO5パワードメインに印加されている電圧を教えていただけますか?

            →3.3Vです。

             

            ・I2Cラインには他にもデバイスが存在しますか?プルアップ抵抗は2.2kΩですか、または別の抵抗値ですか?

            →10kΩが付いていますが、変更して試してみます。

             

            ・FX3 FWでのI2C設定はどのようになっていますか?どの周波数でI2Cデバイスと通信しようと思っていますか?可能であれば設定部分の

            コードを共有していただけますか?

            →400KHzの設定です。同一の.imgをCYUSB3KIT-003に書き込むと、400kHzで動作しています。

             

            ・FX3 I2CはUM10204 (produced by Philips semicondutors) に準拠しますので、適宜ご参照ください。

            →了解しました。

             

            以上です。

            • 3. Re: FX3のI2C bootについて
              HirotakaT_91

              ご返信ありがとうございます。

               

              プルアップ抵抗値について気になりますので、是非2.2kΩで試してみていただきたく思います。

              UM10204の"7.1 Pull-up resistor sizing"にあるように、バス容量が大きくなった場合に、立ち上がり時間の規定を満たすためには Rp(プルアップ抵抗値)の最大値は著しく低下します。

               

              (UM10204より図を抜粋)

               

              CYUSB3KIT-003とお客様の使用されているI2Cスレーブにおけるバス容量次第で、Fast-mode (400kHz)時の立ち上がり時間を満たせないかもしれません。

               

              Hirotaka Takayama

              • 4. Re: FX3のI2C bootについて
                TeMa_2997106

                コメントありがとうございます。

                 

                プルアップ抵抗を2.2kΩに変更しましたが、症状はまったく変わりませんでした。

                 

                また、症状自体ですが、発生率が100%ではなく、不安定な状況です。

                アクセスできるときはできる、できないときは何をやってもできない、という振る舞いで、

                OK⇔NGに症状が変わるトリガも今のところは全くわかっていません。

                 

                FX3がI2Cにアクセスする際、最初は100KHzで、その後に設定値(今回であれば400kHz)に変わる、

                という動きをしており、正常の場合は100kHz→400kHzと見えるのですが、NGの場合は

                最初のアクセスから50kHzです。

                 

                波形としては本当に周波数が半分になったように見え、外部の容量などアナログ要素が

                影響しているようには見えません(これはあくまで主観ですが)。

                 

                周波数が半分程度になる、というのは、バスの容量以外に影響する箇所はありますでしょうか。

                 

                以上です。

                • 5. Re: FX3のI2C bootについて
                  HirotakaT_91

                  2.2kΩプルアップで試してみていただきありがとうございます。

                   

                  現状、以下の通り認識しておりますが相違ないでしょうか?

                  ・CYUSB3KIT-003では400kHzでI2C EEPROMと通信が可能(50kHzでアクセスすることはない)

                  ・FX3搭載のお客様基板では、I2C EEPROMに50kHzでアクセスすることがある。

                   ->・このとき、ACKは返ってくる

                  ・使用しているI2C EEPROMは、CYUSB3KIT-003とお客様基板で同様のものである、または同様でなくても、FX3でサポートされるデバイスサイズ(64Kb, 128Kb, 256Kb, 512Kb, 1024Kb, 2048Kb のいずれか)である。

                  ・I2CマスターはI2Cバス上にFX3しか存在しない。

                  ・使用しているイメージファイルは同一である。

                   

                  上記のように認識しているため、違いとしては基板しかなく、アナログ要素が影響すると考えていました。

                   

                  申し訳ございませんが、弊社基板では問題が発生しておらず、いただいている情報ですと原因を調査するのは難しいです。

                  よろしくお願い致します。

                  Hirotaka Takayama

                  • 6. Re: FX3のI2C bootについて
                    TeMa_2997106

                    コメントありがとうございます。

                     

                    認識としては、すべて正しいです。I2C EEPROMに至っては、CYUSB3KIT-003と同じものを実装しています。

                    EEPROMに差異が無いため、FX3側、及びバスそのものの差異がそのまま挙動の違いに出ているものと思われます。

                     

                    本件については、これ以上のアップデートが見込めそうにありませんので、ここで終了させていただきます。ご対応ありがとうございました。

                    • 7. Re: FX3のI2C bootについて
                      HirotakaT_91

                      他の懸念としては、FX3に対してクロックが正しく入力されているかどうかもご確認ください。

                      FX3に入力される水晶発振器、または外部クロックに問題がある場合、I2Cクロックにも影響します。

                      入力クロックについては、データシート及びAN70707 - EZ-USB® FX3™/FX3S™ Hardware Design Guidelines and Schematic Checklistをご参照ください。

                      よろしくお願い致します。

                      Hirotaka Takayama