I2C_Stop() APIは、PSoC3およびPSoC5LPのI2Cコンポーネントv3.50でI2Cマスターを無効にしません - KBA231344 - Community Translated (JA)
- RSS フィードを購読する
- 新着としてマーク
- 既読としてマーク
- ブックマーク
- 購読
- 印刷用ページ
- 不適切なコンテンツを報告
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の場合、コンポーネントAPIはMyI2CComponent_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()関数を変更するには、次のいずれかを実行します。
- 回避策が実装し、カスタムI2C停止機能(<i2c_comp> _Custom_Stop()など)を作成し、<i2c_comp> _Stop()の代わりにこの関数を呼び出します 。
- 回避策を使用して、変更されたコンポーネントを作成します。PSoCCreatorを使用したコンポーネントのカスタマイズ-KBA229139をご参照願います。
- プロジェクトの Build Settings > Code Generation で、既存の生成されたソースを変更し、[Skip Code Generation]をTrueに設定します。
注:この設定の後で、プロジェクトをClean またはClean and Buildをしないでください。