2 Replies Latest reply on Sep 23, 2020 7:49 PM by NoTa_4591161

    Community Translation - PSoC 4 I2C Master Always Reports BUS_BUSY - KBA231435

    NoTa_4591161

      Hi,               

       

      I would like to translate KBA231435 into Japanese.

      Please confirm to my work.

       

      Thanks,

      Kenshow

        • 1. Re: Community Translation - PSoC 4 I2C Master Always Reports BUS_BUSY - KBA231435
          JuyoungJ_06

          Hi, Kenshow-san

          Confirm to work this KBA.

           

          Thanks

          Jenna

          • 2. Re: Community Translation - PSoC 4 I2C Master Always Reports BUS_BUSY - KBA231435
            NoTa_4591161

            Hi Jenna-san,

                                            

            Japanese translation was over.
            Please check below.

             

            Original KBA:

            PSoC 4 I2C Master Always Reports BUS_BUSY - KBA231435

             

            Thanks.

            Kenshow

            ==============================

             

            タイトル: PSoC 4 I2Cマスターは常にBUS_BUSYを報告します - KBA231435

             

            バージョン:**

             

            I2Cマスター構成のSCBブロックは、I2C開始条件でビジーフラグを設定し、I2C停止条件でそれをクリアします。

            SDAラインを論理LOW0.1VDD)にする可能性のあるI2Cバスのノイズは、誤ったスタート条件でトリガーしてしまいます。次に、ハードウェアはバスが永久にビジーであり、この状態から回復しないと想定します。このエラーは、マスターから完全なバイトが受信される前に、アクティブな転送中にスレーブがSCLラインをLOWにプルした場合にも発生する可能性があります。

            この無期限のSCB_I2C_MSTR_BUS_BUSYステータスから回復するには、ステータスがいくつかのサイクルの間継続的にビジーであるときに、SCB_STOP()およびSCB_Start()関数を呼び出してI2Cブロックをリセットする必要があります。

             

            次のコードスニペットは、マスターがスレーブに書き込みを試み、通常はI2CM_I2C_MSTR_NO_ERROR返すこの機能を示しています。ただし、NO_OF_ATTEMPTS 回連続してエラーが発生すると、I2Cブロックがリセットされます。

             

                /* I2C書き込みを開始し、ステータスをチェックします */

                if (I2CM_I2C_MSTR_NO_ERROR == I2CM_I2CMasterWriteBuf(I2C_SLAVE_ADDR,

            buffer, PACKET_SIZE ,

                                                I2CM_I2C_MODE_COMPLETE_XFER ))

                {

            busy_cnt = 0;

                    /* I2C書き込み成功 */

                }

                /* I2Cデータの送信中にエラーが発生しました*/

                else

                {

                    /* ビジーカウンターフラグを更新します */

            busy_cnt ++;

                  

                    /* I2C書き込みで継続的なエラーが発生したかどうかを確認します*/

                    if (busy_cnt> NO_OF_ATTEMPTS )

                    {

            busy_cnt = 0;

                      

                        /* SCBブロックをリセットします */

            I2CM_Stop();

            I2CM_Start();

                    }

                }

             

            関連ドキュメント:

             

            SCBコンポーネントデータシート:https : //www.cypress.com/documentation/component-datasheets/psoc-4-serial-communication-block-scb

            I2Cバス仕様:https : //www.nxp.com/docs/en/user-guide/UM10204.pdf

             

             

            ==============================

            24-Sept-2020

              Kenshow