Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

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

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

ChaitanyaV_61
Employee
Employee
50 questions asked 25 likes received 25 sign-ins

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しないでください。

0 件の賞賛
142 件の閲覧回数
寄稿者