JAJZ041F April 2023 – September 2025 CC2340R5
PRODUCTION DATA
SDA および SCL のオープン ドレイン出力バッファに関する問題
SDAおよびSCL出力は、I2C の仕様で求められているオープン ドレイン出力バッファではなく、プッシュプルの 3-state 出力バッファで実装されています。プッシュプルの 3-state 出力バッファは、オープン ドレイン出力のように動作させることも可能ですが、内部のタイミングスキューの問題により、出力が無効になる前に約 1ns~2ns の間、論理 High を出力してしまう現象が発生します。この予期しないハイレベルのパルスは、SCL または SDA の出力が駆動された Low 状態からハイ インピーダンス状態へ遷移する際にのみ発生します。
この短いハイレベルのパルスは、I2C 信号ラインにエネルギーを注入し、その結果、伝送線路内での複数の反射によって I2C 信号が一定期間リンギングを引き起こす原因となります。このリンギングは一般的に、SDA 信号に対しては問題を引き起こしません。なぜなら、リンギングは SDA が論理レベルを変化させるタイミングでのみ発生し、受信デバイスがデータをラッチするまでに十分に減衰するためです。このリンギングの振幅が十分に大きい場合、リンギングの最初の数ナノ秒の間に SCL の入力バッファのスレッショルドを複数回クロスする可能性があり、それによってクロックのグリッチが発生するおそれがあります。このリンギングは一般的に、最初の 50ns 以内に振幅が減衰すれば問題にはなりません。I2C デバイスはクロックのグリッチを除去するために SCL 入力をフィルタリングするよう規定されているためです。したがって、PCB 信号パターンを設計して、リンギングの持続時間を 50ns 未満に制限することが重要です。リンギングを抑える 1 つの方法として、SCL および SDA 端子の近くに直列終端抵抗を挿入し、伝送線路の反射を減衰させることが挙げられます。
この問題により、ターゲット側が ACK サイクルを開始する際に、予期しないハイレベル パルスの継続時間中、SDA 出力がターゲットの SDA 出力と競合状態になる可能性もあります。これは、予期しないハイレベル パルスが発生する前に、ターゲットがすでに SDA を Low に駆動している可能性があるために発生します。この短時間の競合によって SDA 上に発生するグリッチは、I2C プロトコル上の問題を引き起こすことはありませんが、ピーク電流が両方の I2C デバイスに不要なストレスを与え、電源ノイズの増加につながる可能性があります。したがって、この短時間の競合時に電流を制限するため、SDA 端子付近に直列終端抵抗を配置することが推奨されます。
同様の競合問題は、クロック ストレッチ機能をサポートする I2C ターゲット デバイスに接続されている場合、SCL ラインでも発生する可能性があります。これは、予期しないハイレベル パルスが発生する前に、ターゲット側が SCL を Low に駆動しているために発生します。この短時間の競合によって SCL 上に発生するグリッチは、I2C プロトコル上の問題を引き起こすことはありません。これは、I2C デバイスが SCL 入力に対してグリッチ フィルタを適用することが規定されているためです。ただし、ピーク電流は、両方の I2C デバイスに望ましくないストレスを印加し、電源ノイズが増加する可能性があります。したがって、この短時間の競合時に電流を制限するため、SCL 端子付近に直列終端抵抗を配置することが推奨されます。
別のコントローラーが接続されている場合、SCL および SDA 出力における予期しないハイレベル パルスが、クロック同期や調停の際に競合を引き起こす可能性があります。上記で説明した直列終端抵抗は、このような使用状況においても競合電流を制限し、I2C プロトコル上の問題を引き起こすことなく機能します。
SCL および SDA 信号には直列終端抵抗を挿入し、SCL および SDA の端子付近に配置します。あわせて、SCL および SDA のプルアップ抵抗も同じく端子付近に配置します。
リンギングは、出力のドライブ強度を最小にし、スルーレートを低減することで抑えることもできます。これらのオプションは、高い駆動出力をサポートするピンでのみ構成できます。標準ドライブ ピンには構成オプションはありません。