デバイスを追加したり、コンポーネント間の配線を延長したりすると、I2Cの課題に直面することがよくあります。ケーブルの長さとデバイス数を増やすとバス容量が大きくなり、i2cの速度が制限され、信頼性の問題が発生する可能性があります。からの迷いと入力容量集積回路そしてワイヤーは信号がどれだけ移動するかを制限します。チップが同じアドレスを共有し、プルアップすると、アドレスの競合が発生することがあります。抵抗器あなたのPCBの余分なスペースを取ります。ワイヤ容量について30cmあたり20pF、安定した操作のために2.25メートルの下でケーブル長を保たなければならないことを意味します。
重要なポイント
- バスキャパシタンスは、より多くのデバイスとより長いワイヤで増加し、信号の立ち上がり時間が遅くなります。信頼性の高いI2C通信のために、総容量を400 pF未満に保ちます。
- アドレスの競合により、I2Cバス上のデバイスの数が制限される可能性があります。一意のアドレスを使用し、10ビットのアドレス指定を考慮して、問題なくより多くのデバイスを接続します。
- 距離が長くなると、信号の品質が低下する可能性があります。I2Cエクステンダーまたは低速を使用して、長いワイヤでの信頼性の高い通信を維持します。
- 適切なPCBレイアウト重要です。I2Cラインを短くし、プルアップ抵抗をデバイスの近くに配置し、ノイズの多いコンポーネントの近くにルーティングしないようにして、干渉を減らします。
- I2Cシステムを監視するプロトコルアナライザーのようなツールで。これにより、問題を診断し、パフォーマンスを最適化して信頼性を向上させることができます。
I2Cの速度: 主な要因
I2cの速度は、いくつかの重要な要因に依存する。バス容量、デバイスカウント、および物理的な距離が回路にどのように影響するかを理解する必要があります。これらはそれぞれ、デバイスの通信速度と信頼性を制限できます。
バス容量
バス容量は、i2cバス上のワイヤとデバイスが格納できる総電荷です。この値は、デバイスを追加したり、長いワイヤを使用したりすると大きくなります。キャパシタンスが増加すると、バス上の信号はよりゆっくりと上昇する。信号の立ち上がりが遅すぎる場合は、マイクロコントローラまたはセンサーそれらを有効なロジックレベルとして認識できない場合があります。
- バス容量は、主にi2c通信における信号の立ち上がり時間に影響を与える。
- 立ち上がり時間が長くなると、データの読み取りにエラーが発生する可能性があります。
- I2c標準は最大を設定します立ち上がり時間: 標準モード (100 kHz) で1000ナノ秒、高速モード (400 kHz) で300ナノ秒を使用します。
- これらの立ち上がり時間を超えると、デバイスがビットを正しく認識できない場合があります。
あなたはお勧めを見ることができます以下の表の各速度モードの最大バス容量:
| I2Cスピードモード | 最大バス容量 |
|---|---|
| 標準モード | 400 pF |
| 高速モード | 400 pF |
| 高速モードプラス | 550 pF |
高速モードを使用する場合は、総容量を低く保つ必要があります。これは、より短いワイヤとより少ないデバイスを使用するか、入力容量の低いコンポーネントを選択することを意味します。電子回路、特に集積回路では、データシートの入力容量値を常にチェックします。
デバイス数
I2cバスに接続するデバイスの数も、i2cの速度とその信頼性に影響します。各デバイスは、バスに少量の容量を追加します。より多くのデバイスはより多くのキャパシタンスを意味し、それは信号の立ち上がり時間を遅くする。
- The バスラインの容量はi2cバスの長さを制限しますそして信頼性に影響を与えます。
- デバイスを追加すると、通信がより複雑になります。
- The I2cの最高速度は3.4 Mbpsですしかし、これは非常に少数のデバイスと短いワイヤでのみ可能です。
- 多くのデバイスを追加すると、アドレスの競合のリスクを使用します。各デバイスには固有のアドレスが必要です。
- NXP i2cの公式マニュアルでは、400 pFの最大容量負荷を推奨しています。
- 理論的には、接続できます最大1008デバイス、しかし実際には、キャパシタンスとアドレスの競合がこの数を制限します。
多くの集積回路を備えた回路を設計するときは、常にアドレス指定スキームを計画し、総容量を確認してください。多くを接続する必要がある場合センサーまたはチップ、複数のバスまたはバスエクステンダーの使用を検討してください。
物理的な距離
デバイス間のワイヤの長さは、i2cの速度と信号の品質に影響します。長いワイヤはより多くのキャパシタンスを追加し、信号遅延を引き起こす可能性があります。
1フィートまたは2フィート以上のケーブルを使用する信号は、ケーブル容量について心配する必要があります。1メートルあたり100 pFの容量多コンダクターケーブルのために共通です。これにより、バスの速度が低下するか、より低いプルアップ抵抗を使用して余分な容量を処理し、立ち上がり時間の要件を満たすことができます。
次の表を使用して、異なる速度モードの最大ケーブル長:
| スピードモード | 最大ケーブル長 |
|---|---|
| 標準 | 50 cm |
| ロースピード | 1-2メートル |
| スタンダード (400kHz) | 2メートル |
| エクステンダーで拡張 | 1キロまで |
長距離でデバイスを接続する必要がある場合は、i2cの速度を下げるか、特別なエクステンダーを使用する必要があります。ほとんどの电子プロジェクトでは、ワイヤーを短く保ち、使用して適切なPCBレイアウト信頼できるコミュニケーションを維持するのに役立ちます。
デバイス数の制限
I2Cネットワークを設計するときは、1つのバスに接続できるデバイスの数を考慮する必要があります。デバイスの数は、システムのパフォーマンスと信頼性の両方に影響します。デバイス数を制限する主な要因は、アドレス指定と仲裁です。
対処
I2Cバス上のすべてのデバイスには固有のアドレスが必要です。このアドレスを割り当てて、マスターが混乱することなく各デバイスと通信できるようにします。I2Cは、7ビットと10ビットの2種類のアドレスをサポートします。理論的には、7ビットアドレッシングでは最大128デバイスが可能で、10ビットアドレッシングでは最大1024デバイスが可能です。ただし、一部は特殊関数用に予約されているため、これらのアドレスをすべて使用することはできません。
I2Cは、7ビットと10ビットの2つのアドレス長を指定します。これにより、理論上の最大値はそれぞれ128と1024の異なるアドレスになります。ただし、予約済みアドレスはアドレススペースをさらに制限します。
実際には、各I2Cチップはいくつかの異なるアドレスしかサポートしていないことがよくあります。たとえば、多くの温度センサーやEEPROMを使用すると、3つのアドレスピンのみを設定できるため、1つのバスで最大8つの同じチップを接続できます。予約済みアドレスとチップの制限により、使用できるデバイスの数が減ります。
- 各I2Cスレーブチップは、多くの場合、8つの異なるバスアドレスのみをサポートし、同じネットワーク上の同一のチップの数を制限します。
- 予約されたアドレスは、利用可能なアドレス空間をさらに減らす。
I2Cネットワーク上の各デバイスには7ビットアドレスが割り当てられ、理論的には最大128スレーブデバイスを使用します。しかしながら、実際には、個々のスレーブチップによってサポートされるアドレスの数の制限のために、その数はしばしばより少ない。
より多くのデバイスが必要な場合は、特別なトリックを使用できます。たとえば、ユニークなコンテンツを持つEEPROM各デバイスを識別するか、1つのバスで多くのデバイスを許可するDallas 1-Wireなどのプロトコルに切り替えることができます。
I2Cアドレス空間を拡張するには、1つの方法で、複数のデバイスが同じI2Cアドレスを共有できるEEPROMを使用します。各EEPROMは、その存在を識別するために固有のコンテンツでプログラムすることができる。たとえば、デバイスごとに特定のバイトを0x00にプログラミングすることにより、マスターはEEPROMから読み取り、返された値に基づいてどのデバイスが存在するかを判断できます。
- Dallas 1-Wireプロトコルを使用すると、多くのデバイスを単一のバスに接続できるため、マスターは各デバイスの一意の識別子を検出できます。これは、低価格で利用可能な1線式EEPROMを備えた費用効果の高いソリューションとなり得る。
仲裁
仲裁は、複数のマスターが同時にバスを制御しようとするときにI2Cバスを整理し続けるプロセスです。一度にデータを送信できるマスターは1つだけです。2人のマスターが一度に送信を開始すると、両方ともデータライン (SDA) を監視して、メッセージがバス上にあるものと一致するかどうかを確認します。マスターが違いを見ると、それは停止し、他のマスターを続行させます。
I2Cでは、仲裁プロセスは、いつでも1つのマスターデバイスのみがバスを制御できるため、データの破損を防ぐことができます。ただし、デバイスの数が増えると、特に複数のマスターがバス状態を効果的に監視せずに同時にデータを送信しようとすると、仲裁失敗の可能性が高まります。
より多くのデバイス、特により多くのマスターを追加すると、仲裁損失のリスクが高まります。スレーブデバイスが誤動作したり、通信中にバスがリセットされたりすると、問題が発生する可能性があります。これらの問題により、マスターはバスの制御を失う可能性があります。
| 仲裁損失の原因 | 説明 |
|---|---|
| スレーブデバイスの不正行為 | スレーブデバイスがSDAラインを誤ってプルダウンしたため、マスターは仲裁の損失を検出しました。 |
| バスリセット | バスの活動中にリセットされ、マスターによるバスの状態の誤解につながります。 |
| SDAラインは低く開催されました | SDAラインはスレーブによって低く保持されていますが、マスターはそれが高くなると予想しているため、仲裁が失われます。 |
また、バス容量と立ち上がり時間にも注意する必要があります。各デバイスは入力容量を追加し、信号を遅くする可能性があります。信号の立ち上がりが遅すぎると、デバイスが信号を認識しない可能性があり、これがi2cの速度に影響を与える可能性があります。デバイスが処理できる電流もプルアップ抵抗値を制限し、バスの全体的なパフォーマンスに影響を与えます。
- バス容量: 各デバイスは入力容量を追加します。これにより、信号の立ち上がり時間と立ち下がり時間が長くなり、デバイスが信号を認識できなくなる可能性があります。
- 信号の立ち上がり時間: 容量が増加すると、信号の立ち上がり時間が遅くなり、通信の信頼性に影響を与える可能性があります。
- 最大シンク電流: デバイスの現在の仕様はプルアップ抵抗値を制限し、バス全体のパフォーマンスに影響を与えます。
多くのデバイスを備えた信頼性の高いI2Cネットワークが必要な場合は、アドレス指定スキームを計画し、仲裁の問題を監視し、バスの容量を監視する必要があります。
距離制約
信号の完全性
長いワイヤで集積回路を接続するときは、信号の整合性について考える必要があります。信号の完全性とは、電気信号が歪むことなくデバイス間をどれだけうまく移動するかを意味します。デバイス間の物理的な距離を長くすると、いくつかの問題が発生する可能性があります。
- ケーブル容量は信号のエッジを遅くし、信号のシャープさを低下させます。
- ケーブルインダクタンスは、信号電圧の低下であるアンダーシュートを引き起こす可能性があります。
- ケーブルの端での信号反射はエコーを生成し、受信デバイスを混乱させる可能性があります。
- 近くの電子機器からの外部電磁干渉 (EMI) は、信号を妨害する可能性があります。
モーター、電源、または無線送信機の近くで長いワイヤーを使用したり、ケーブルを走らせたりすると、これらの問題がよく発生します。これらの問題により、データエラーが発生したり、I2Cバスの信頼性が低下したりする可能性があります。常に配線を確認し、ケーブルをできるだけ短くしてください。
| 信号劣化源 | 説明 |
|---|---|
| 近くの情報源からの干渉 | ESD、電圧/電流サージ、RF信号、および家庭の活動による障害は、長いI2Cワイヤに影響を与える可能性があります。 |
| バスのグリッチ | グリッチは、ハードウェアまたはソフトウェアのエラーを引き起こし、通信の問題を引き起こす可能性があります。 |
| グラウンドポテンシャルの違い | 負荷の変更による接地電位の変動により、データエラーが発生する可能性があります。 |
ヒント: シールドケーブルと適切な接地は干渉を減らすのに役立ちますそして信号の質を改善して下さい。
最大信頼できる長さ
あなたは知っている必要がありますI2Cコミュニケーションのための最高の信頼できる長さあなたの回路を設計するとき。長さは、i2cの速度、ワイヤの品質、および容量をどの程度制御するかによって異なります。標準モード (100 kbit/s) を使用する場合は、通常、良好なワイヤとレイアウトで最大1.5メートルに達することができます。高速モードと高速では、さらに短いケーブルが必要です。
| I2Cモード | スピード |
|---|---|
| 標準モード | 100 kbit/s |
| 高速モード | 400 kbit/s |
| 高速モードプラス | 1 Mbit/s |
| 高速モード | 3.4 Mbit/s |
| 超高速モード | 5 Mbit/s |
総バス容量を400 pF未満に保つ必要がありますが、200 pF未満を目指すと、より良い結果が得られます。レイアウト、ワイヤー品質、シールドはすべて最大の長さに影響します。より長い距離が必要な場合は、I2Cエクステンダーまたはリピーターを使用して信号をブーストできます。
- I2Cの最大信頼できる長さは、理想的な条件下で約1.5メートルです。
- 低容量と高品質のワイヤは、より長い距離に到達するのに役立ちます。
- シールドと慎重なレイアウトは干渉から信号を保護します。
I2Cネットワークを計画するときは、常にワイヤの長さを測定し、容量を確認してください。これにより、データエラーを回避し、通信を安定させます。
信頼性の問題
データエラー
あなたは気づくかもしれませんデータエラー多くのデバイスを接続するか、I2Cネットワークで長いワイヤを使用するとき。これらのエラーにより、システムの信頼性が低下する可能性があります。データエラーは、センサーからの奇妙な値または予期しない値として表示されることがよくあります。メモリチップ。場合によっては、データに余分なビットが表示されたり、送信中にデータが破損したりすることがあります。
I2Cシステムの一般的なデータエラーは次のとおりです。
- データに余分なビットが表示され、受け取る情報の意味が変わる可能性があります。
- データの破損は、信号が形状やタイミングを失うと発生します。
- 電気ノイズが多い場所では、信号の完全性の問題が悪化します。
これらの問題を防ぐために、エラー回復方法を使用できます。多くのエンジニアは、システムが動かなくなった場合にシステムをリセットするためにウォッチドッグタイマーを追加します。センサーデータの平均化を使用して、悪い読み取り値を除外することもできます。これらの手順は、多くのデバイスや長いワイヤがある場合でも、I2C通信を安定させるのに役立ちます。
ヒント: 常にデータのエラーを確認し、検証方法を使用して問題を早期にキャッチします。
ノイズと干渉
ノイズと干渉は、特に忙しい環境や産業環境で、I2Cの信頼性に大きな問題を引き起こす可能性があります。回路内のワイヤはアンテナのように機能し、他の電子機器から不要な信号を拾うことができます。これにより、データが失われたり破損したりする可能性があります。
ノイズと干渉の一般的な原因は次のとおりです。
- 電磁干渉 (EMI)あなたのワイヤーを入力し、データを混乱させることができます。シールドケーブルと良好な接地により、このリスクを軽減できます。
- 長いケーブルまたは多くのデバイスからの高いバス容量は、信号を遅くする可能性があります。これにより、I2Cの立ち上がり時間ルールが破られ、障害が発生する可能性があります。これを修正するには、定電流プルアップまたは特別なバスドライバーを使用できます。
- クロストークは、SDA線とSCL線が近すぎる場合に発生します。PCBでそれらを離しておくと、この問題を減らすのに役立ちます。
- 電力線からのグラウンドノイズは電圧低下を引き起こす可能性があります。これにより、デバイスが間違った値を読み取る可能性があります。しっかりとした地面またはガルバニック分離を使用すると役立ちます。
これらのリスクを念頭に置いて、常にI2Cバスを設計する必要があります。慎重なレイアウトと適切な配線の選択は、信号を保護するのに役立ちます。これらの手順は、i2cの速度を押したり、多くを接続したりしても、データを安全に保ち、デバイスをうまく機能させます集積回路を使用します。
I2Cパフォーマンスの最適化
バスレイアウト
優れたバスレイアウトの実践に従って、I2Cネットワークを改善できます。これらのステップはキャパシタンスを減らし、あなたの信号をきれい保つのを助けます:
- I2Cバスラインをできるだけ短くしてください。
- 寄生容量を下げるために、I2Cデバイスの近くにプルアップ抵抗を配置します。
- クロストークを避けるために、ノイズの多いコンポーネントや高速信号からルートトレースします。
- I2C信号専用のグランドプレーンを備えた4層PCBを使用します。
- 低インピーダンス戻りパス用のソリッドグランドプレーンがあることを確認してください。
ヒント: 慎重なレイアウトは、i2cの速度を維持し、データエラーのリスクを減らすのに役立ちます。
プルアップ抵抗器
正しいプルアップ抵抗を選択する値は信頼できるI2Cコミュニケーションのためのキーです。1kΩ から4.7kΩ のようなより低い抵抗値、、信号をより速く上昇させます。これは、高速モードを使用する場合に重要です。10kΩ などの高い値は、立ち上がり時間を遅くし、エラーを引き起こす可能性があります。抵抗値を選ぶときは、常にバス容量、立ち上がり時間、デバイスの数を考慮する必要があります。セットアップに最適な抵抗値を計算すると、速度と信頼性のバランスをとることができます。
戦略への取り組み
スマートアドレス指定戦略を使用すると、アドレスの競合を回避し、より多くのデバイスを接続できます。
- 電源シーケンスを使用してデバイスの電源をオンにするときに制御するこれにより、アドレスの競合の可能性が低くなります。
- デバイスアドレスピンを変更するには、外部IOエクスパンダーを追加して、一度に1つのデバイスと通信できるようにします。
- シフトレジスタを使用して多くのデバイスのアドレスピンを管理し、競合することなくより多くのチップを接続できるようにします。
これらの方法は、特に多くの集積回路で作業するときに、I2Cバスを最大限に活用するのに役立ちます。
リピータとバッファ
リピーターとバッファーを拡張できますI2Cネットワークをより長い距離に接続し、より多くのデバイスを接続します。たとえば、PCA950718メートルまでバスを伸ばすことができますを使用します。SDAラインとSCLラインの両方に双方向バッファリングを提供し、長いワイヤで信号を強く保ちます。このデバイスは、より高い容量負荷を処理でき、1つのポートで最大1400 pF、別のポートで最大400 pFをサポートします。リピーターとバッファーを使用すると、大規模または複雑なネットワークでも、i2cの速度と信号品質を維持できます。
アプリケーションシナリオ
小型ネットワーク
少数の小さなネットワークでI2Cをよく使用します集積回路を使用します。これらのセットアップは、センサーアレイ、ディスプレイモジュール、単純な制御システムなどのプロジェクトに表示されます。温度センサー、EEPROMチップ、リアルタイムクロックなどのデバイスを接続できます。各デバイスは、独自のアドレスを使用してマイクロコントローラと通信します。
これは、一般的なアプリケーションシナリオと考慮すべきパフォーマンスメトリックを示す表です。:
| アプリケーションシナリオ | パフォーマンスメトリクス |
|---|---|
| 環境モニタリングシステム | スピードモード (標準、高速) |
| モーショントラッキングデバイス | パワー消費 |
| EEPROM通信 | データ転送率 |
| リアルタイムクロック (RTC) | 計時精度 |
| ディスプレイインターフェース (LCD、OLED) | 通信速度 |
| 産業オートメーションおよび制御システム | センサー応答时间 |
速度、電力使用量、およびデータ精度に焦点を当てる必要があります。たとえば、環境モニタリングシステムを構築する場合、センサーが迅速に応答し、信頼できるデータを送信する必要があります。ディスプレイインターフェースでは、スムーズな更新が必要なため、通信速度が重要です。適切な速度モードを選択し、ワイヤを短く保つことで、ネットワークを最適化できます。
ヒント: 小さなネットワークでは、ほとんどのアプリケーションで標準または高速のI2Cモードを使用できます。これはあなたのデザインをシンプルで信頼性の高いものに保ちます。
長距離セットアップ
産業用または建物の自動化プロジェクトでは、集積回路を長距離接続する必要がある場合があります。長いワイヤは、信号損失や電気ノイズなどの課題をもたらします。データを安全に保つには、容量と干渉を管理する必要があります。
一般的な解決策は次のとおりです。
- LTC4311などのI2Cエクステンダーを使用して信号品質を向上させるより高い容量性負荷を処理します。
- 遅い信号の立ち上がり時間によって引き起こされるエラーを減らすために低速で動作します。
- 近くの電子機器からの干渉を最小限に抑えるための差分シグナリングの実装。
長距離のセットアップでは、あなたは直面しますキャパシタンスと電気ノイズがI2Cプロトコルに影響を与えるため、信号の完全性の問題を使用します。エクステンダーを使用し、通信速度を下げ、ケーブルをシールドすることで、これらの問題を解決できます。これらの手順は、ワイヤが広い領域に広がっている場合でも、集積回路間の信頼できるデータ伝送を維持するのに役立ちます。
注: 最終的なインストールの前に、常にセットアップをテストしてください。長いワイヤは、環境と使用するコンポーネントによって異なる動作をする可能性があります。
デバイスの数と距離が速度と信頼性の両方にどのように影響するかを理解することで、I2Cシステムを改善できます。
上昇時間と下降時間は、I2Cコミュニケーションの重要な要素です。たとえば、ケーブルが長いほど、立ち上がり時間に影響を与えるキャパシタンスが発生します。これは、信号の完全性を維持するために不可欠です。を達成するには200 pFケーブルの1000 nsの立ち上がり時間、プルアップ抵抗は2.2kΩ を超えてはいけません。これは、デバイスの数と距離がI2Cの速度と信頼性にどのように影響するかを示しています。
- バス容量、速度モード、およびPCBレイアウトはすべて一緒に機能して、i2cの速度を決定します。
- プロトコルアナライザーやオシロスコープなどのツールを使用して問題を診断できます。
- システムを最適化するには、次の手順を実行します。
| 実用的なステップ | 説明 |
|---|---|
| 10ビットアドレス指定の使用 | これにより、アドレスの競合を回避し、デバイスカウントを高くするためのスケーラビリティが向上します。 |
| 低速で操作する | これは、より長い距離のバス容量を管理するのに役立ちます。 |
| より高いドライブ出力デバイスを使用する | これにより、より長い距離で信号の完全性を向上させることができます。 |
よくある質問
I2Cバスに接続できるデバイスはいくつありますか?
最大128台のデバイスを7ビットアドレスで接続できます。実際には、バス容量とアドレスの競合がこの数を制限します。ほとんどの集積回路は、いくつかの一意のアドレスのみをサポートします。
I2Cに長いワイヤを使用するとどうなりますか?
長いワイヤはバス容量を増加させる。これにより、信号の立ち上がり時間が遅くなり、データエラーが発生する可能性があります。信頼性の高い通信を行うには、速度を下げるか、I2Cエクステンダーを使用する必要があります。
I2Cの正しいプルアップ抵抗をどのように選択しますか?
総バス容量と希望の速度に基づいてプルアップ抵抗を選択します。より低い値 (2.2kΩ のような) は、速い信号に対してうまく働く。常にあなたの集積回路データシート推奨のために。
1つのバスで異なるI2C速度モードを混在させることはできますか?
いいえ、同じI2Cバス上のすべてのデバイスは、選択した速度モードをサポートする必要があります。デバイスを混在させる場合は、サポートされている最も遅いモードを使用して、信頼性の高いデータ転送を確保します。
2つのデバイスが同じI2Cアドレスを共有する場合はどうすればよいですか?
I2Cマルチプレクサまたはスイッチを使用して、重複アドレスを持つデバイスを接続できます。これにより、いつでもマイクロコントローラと通信する集積回路を選択できます。







