INA238 、TIの電流検出電力モニタにおけるI2C通信エラー(NACK)のトラブルシューティング

Q1 - 電力モニタとの通信を試みると、「no acknowledge」(NACK)が返ってきます。

TIからの回答:
TIの電力モニタ(例えば INA238 )がI2C通信でNACK(否定応答)を返す場合、その原因は通常、物理層の要件(電圧閾値やインピーダンス整合など)またはタイミング制約の違反にあります。

  1. ロジックレベルの不整合(VIL/VOLの不一致)

NACKの最も一般的な原因は、マスター(MCU)がSDA/SCLラインを INA238 の入力低電圧(VIL)閾値以下にプルダウンしていないことです。

  • 閾値のギャップ:INA238 ではロジックLowレベルは0.4V未満であることが要求されます。ただし、当社の一部のデジタルデバイスではロジックレベルが0.4V未満あるいは0.3 x Vs未満であることが要求される場合があります。そのため、VILのロジックレベルについては対象デバイスのデータシートを参照してください。余裕を持たせるため、ロジックレベルはデータシートに記載されているVIL仕様よりも少なくとも100~200mV低く設定することを推奨します。
  • 電圧オフセットの問題:特定のI2Cバッファまたはデジタルアイソレータ(ISO154xシリーズなど)を使用する場合、「Side 1」の出力には電圧オフセットが加わる構成が採用されていることが多く、その結果VOLは約0.6V~0.8Vになります。MCUと INA238 の間でグランド電位差がわずかに生じたり、プルアップ抵抗が小さすぎたりすると、「Low」信号は1.0V近辺に留まる可能性があります。 INA238 がVIL未満のクリーンな遷移を検出しない場合、スタートコンディションまたはアドレスビットを認識できず、その結果としてNACKが返されます。
    ISO154xシリーズの場合、「Side 2」に供給される電源電圧によっては、「Side 2」のロジック出力がINAが認識するLowレベル閾値に対して十分低くならない場合があります。
  1. インピーダンスおよびプルアップ抵抗の最適化

I2Cはオープンドレイン構成であり、立ち上がり時間(tr)はバスのRC定数によって決まります。

  • 過減衰(Over-damping):プルアップ抵抗が大きすぎる場合(例えば10kΩ以上)、バス容量によって信号が次のクロックパルスが来る前にVIH(入力High)閾値に到達できなくなります。これにより方形波がなまり、ビットのサンプリングエラーが発生します。
  • 減衰不足(Under-damping):逆に、プルアップ抵抗が小さすぎる場合(例えば1kΩ未満)、INA238 またはMCUは、ラインを有効なVILまでプルダウンするためのシンク電流能力(通常3mA)が不足し、コントローラが常に「High」状態と認識する可能性があります。
  1. タイミングおよび信号品質(Signal Integrity)

INA238 は、Fast mode(400kHz)とHigh speed modeをサポートしています。ただし、信号の反射や過度に長いバス配線によって、タイミング波形にリンギングやアンダーシュートが発生する可能性があります。SDAラインの遷移がSCLの立ち上がりエッジに対して遅すぎる場合(セットアップ時間違反)、またはクロックライン上のノイズを INA238 がダブルパルスとして誤認識した場合、デバイスの内部ステートマシンは同期が失われ、ACKを発行できなくなります。

さらに、デバイスアドレスを設定するためにSDAピンをA0またはA1に接続する場合、正しいデバイスアドレス指定であることを確認するために、I2CアドレスのMSBに追加の100nsのホールド時間(tHDDAT)が必要になります。

ロジックレベルの不整合に対する推奨ソリューション:

ロジックレベルトランスレータ

MCUと INA238 異なるロジック電圧で動作している場合、またはVIL閾値に十分な余裕がない場合には、最も確実な解決策はアクティブ型ロジックレベルトランスレータ(例:TIの PCA9306 また TCA9517 )を組み込むことです。

なぜこれでNACKの問題が解決するのか:

  • 電圧の分離(Voltage Isolation):トランスレータは2つの異なるバスセグメントの容量性負荷を分離します。これにより、INA238 は自身のローカル電源に完全に準拠した信号を「認識」できるようになります。
  • 電流駆動能力の向上(Current Boosting):TCA9517 などのデバイスは「Low」レベルへアクティブに駆動する機能を備えており、バス容量が大きい場合でも、VOLを0Vに近いレベルまで引き下げることができ、INA238 のVIL閾値より十分に下回ることが可能になります。
  • 双方向通信の精度向上(Bidirectional Precision):INA238 から送信されるACKビットがMCU固有のロジックレベルに正しく変換されることを保証し、スレーブが応答しているにもかかわらずマスターが読み取れないような「誤認識状態(ghosting)」を防止できます。

上記の内容をご確認のうえ、さらに詳しい情報については、オリジナルのTI Support Forumをご覧ください。




オリジナル・ソース(English)