I2C_Stop() APIは、PSoC3およびPSoC5LPのI2Cコンポーネントv3.50でI2Cマスターを無効にしません - KBA231344 - Community Translated (JA)

Version 1

    Community Translated by NoTa_4591161          Version: **

     

    Translation - English:  I2C_Stop() API Does Not Disable I2C Master in I2C Component v3.50 of PSoC 3 and PSoC 5LP - KBA231344

     

    I2CコンポーネントV3.50が固定関数実装のI2Cマスターモードで使用される場合、I2C_Stop() APIはマスターを無効にしません。 これは、生成されたソースのI2C_Stop() 関数定義のエラーによる既知の問題です。

     

    注:ここで、I2C_Stop()はコンポーネントAPIです。したがって、プロジェクトのI2CコンポーネントがMyI2CComponentの場合、コンポーネントAPIMyI2CComponent_Stop()になります。簡単にするために、この記事ではAPI<i2c_comp> _Stop()と呼びます。ここで、<i2c_comp>I2Cコンポーネントの名前です。

     

    <i2c_comp> _Stop()<i2c_comp> .cで定義されており、次の行が含まれています。

     

    /* ブロックを無効にします */

    <i2c_comp>_CFG_REG &= (uint8) ~<i2c_comp>_CFG_EN_SLAVE;

     

    問題は、コンポーネントがマスターとして設定されている場合でも、<i2c_comp> _Stop()がスレーブブロックのみを無効にすることです。回避策として、このコードを次のコードに置き換えてください。

    /* ブロックを無効にします */

    <i2c_comp>_CFG_REG &= (uint8) ~<i2c_comp>_ENABLE_MS;

     

    <i2c_comp> _Stop()関数を変更するには、次のいずれかを実行します。

    1. 回避策が実装し、カスタムI2C停止機能(<i2c_comp> _Custom_Stop()など)を作成し、<i2c_comp> _Stop()の代わりにこの関数を呼び出します
    2. 回避策を使用して、変更されたコンポーネントを作成します。PSoCCreatorを使用したコンポーネントのカスタマイズ-KBA229139をご参照願います。
    3. プロジェクトの Build Settings > Code Generation 、既存の生成されたソースを変更し、[Skip Code Generation]True設定します。

     

    注:この設定の後で、プロジェクトをClean またはClean and Buildしないでください。