I2Cバスの最大長は?


38

2つのI2Cデバイスの接続に使用できるケーブルの最大長はどれくらいですか(I2Cマスター-> I2Cスレーブ)?

はい、I2Cは実際にボード内通信用に設計されていることを知っています。デモをサポートするために、複数のI2Cスレーブに共通のI2Cバスを使用するという「設計目標」を課されました。

わかりやすくするために、標準のI2Cバスレートを100 kHzと仮定します。


1
最大長は、長さによってもたらされる静電容量で遊ぶようになります。容量が大きすぎると、速度に影響する可能性があります。いつものように、これは依存します。
グスタボリトフスキー14

@GustavoLitovskyあなたは静電容量について正しいです。また、使用されているケーブルのタイプ(シールド付きvs非シールド)にも依存します。私は一般的なガイドラインに最も興味があります。
ネイト14

2
@Nateガイドライン:最大ネットバス容量400pF。(質問に多少関連:生い茂ったI2Cバスの回顧録。)
ニックAlexeev

1
I2C =集積回路間バス。ボックス間の長距離用には設計されておらず、確かに400kHzではありません。
スペロペファニー14

1
計算以外の個人的な経験を取り入れたかっただけです。私は、開発ボードからI2CからUSBコンバーターへのデモを行いました。シールドなしのワイヤは約3フィートです。きれいに見えませんでしたが、それは90%の時間で機能しました。
-mcmiln

回答:


16

このNXPドキュメント I2Cバス仕様およびユーザーマニュアルによると、高速モードおよび抵抗プルアップの場合、容量は200pF未満でなければなりません。

電流源プルアップを使用すると、400pFに到達できますが、抵抗を使用することはできません。

ワイヤが20pF / 30cmで、さらに50pFの浮遊容量と入力容量がある場合、ケーブル長は2.25mに制限されます。仮定が異なると、数値も異なります。


1
@KrunalDesaiこれは、上記のリンクされたNXPドキュメントで具体的に言及されています。I2Cバス仕様書とマニュアル
Spehro Pefhany

1
実際の例として、ニンテンドーWiiの「Wiimote」は400kHz I2C(wiibrew.org/wiki/Wiimote/Extension_Controllers)を使用して、Nunchuk(wiibrew.org/wiki/Wiimote/Extension_Controllers/Nunchuck)などの周辺機器と通信します。ご覧のとおり、約1mのケーブルがあります。パッシブエクステンダーは、追加の1m(amazon.com/Extension-Cable-Wii-Nunchuck-Nintendo/dp/B0039OEV9K)を提供するために販売されているため、プッシュされますが、その2.25mの制限内に留まります。
ロブ・スターリング

16

10,25、100mのような非常識な音の長さは完全に可能であり、私は物事をすばやくまとめる必要があるときに(I2CではなくUARTを使用しますが、この方法は有効です)頻繁にこの方法を使用します。ただし、これは必ずしも最善の方法ではありません。

重要なのは、入力電圧のしきい値を知ることです。アース線の電圧降下がこの値を十分に下回っていないことを確認してください。そうしないと、高い接地電位にあるトランスミッターが電圧を十分に低くすることができません。グラウンドオフセットの許容誤差の欠如IMHOは、RS485またはCANトランシーバを使用する最大の理由です(CANを介したI2Cについては、いくつかのアプリケーションノートで説明されています)。

理想的には、すべてのデバイスに独自の壁war贅とバッテリーがあり、デバイス間のアース線を介して電力が送られないようにします。

しかし、CAT5を例に考えてみましょう。CAT5は52pf / mを超えることはできません。またはCAT5ではありません。

100mの52pfケーブルの静電容量は5200pfまたは5.2nfです。

5.2n倍の20kΩ(プルアップ)は、約104マイクロ秒の時定数を与えます。これにより、速度が約10kHz程度に制限されます。

2.2kohmのプルアップを使用すると、おそらく100kHzに達する可能性があります。

デバイスには、SDLとSCKに抵抗が必要であると聞いたことがあります。これは、デバイスが駆動する大きな容量性負荷のために、180オームまたは200オームなどの抵抗があるためです。

しかし、正直なところ、I2Cは長距離を行く方法ではありません。通常のUARTで使用されるCANトランシーバーまたはRS485は、非常に優れた障害保護、ESD耐性、速度、距離などを備えた堅牢なソリューションです。1チップあたり1ドル程度のコストで、グランドオフセットはそれほど重要ではありません。データとともに電力を自由に運ぶことができます。

唯一の欠点は、CANトランシーバーが70maの送信に到達し、1または2maだけをリッスンできることです。したがって、I2CまたはダイレクトTTL UARTは極端な低電力の状況で役立ちますが、実際に送信に費やす時間を考慮してください。


7

私はUSBセンサーを製造する会社で働いています。それらのほとんどはI2Cセンサーチップに基づいています。これらのデバイスは2つに分割できるため、CPUパーツを1箇所に、センサーパーツを別の場所に取り付けることができます。デバイスCPUとI2Cセンサー間のI2C接続について、かなり多くのテストを実施しました。100 kHzで、適切なエラー回復プロトコルを使用すると、基本的なワイヤを使用して25mに簡単に到達できます。CAT5ケーブルで100mに到達することさえできました。


USBケーブルの長さについて話しているようですね。OPは未加工の I2Cのケーブル接続について尋ねています。これはまったく別のテーマです。私が間違っている場合は、あなたの答えを編集し、私のダウン投票を削除します。
DoxyLover 14

1
25メートルが...でも、USB用のかなり多くある
ウラジミールクラベロ

3
いいえ、ホストとCPU間のUSB接続ではなく、デバイスCPUとI2Cセンサーチップ間のI2C接続について実際に話しています。次に例を示します。yoctopuce.com
EN

1
I2Cと電源にツイストペアを使用する場合、どちらのペアをツイストしますか?(SDA、SCL)、(VCC、GND)または(SDA、GND)、(SCL、VCC)?
Cano64

4
理想的には、ツイストペアをまったく使用しないでください。ツイストペアは、平衡信号に役立ちます。他のケーブルがない場合は、信号を接地してください。本当に4本のワイヤしかない場合、リモートエンドがどれだけの電力を消費するかを考えてください-GNDに1本のワイヤのみを使用する前に、許容範囲を超えるグランドオフセットで終わる可能性があります。私は通常、1ペアのアース、1ペアの+ 5V、およびSDA + GNDとSCL + GNDのペアを持つ古いCat5ケーブルを使用します(ダブルシールドは必要のない容量を追加します)。
マティアスユリクス

4

IICは同期プロトコルであるため、距離とノイズに関するシステム要件を満たすために、任意にゆっくり実行できます。

1990年代のACCESS.busから現在のビデオディスプレイからEDID情報を取得する方法まで、ケーブルを介してIICを使用する多くの例があります。


別の例は、4フィートのシールドケーブルを使用してI²C経由でWiiリモートに接続するWiiヌンチャックです。
tcrosley 14

4

NXPのP82B96のようなものを使用して、バスの電圧レベルを変更し、はるかに長い距離を可能にすることができます。

データシートには、 I2Cケーブル3メートル、25メートル、100メートルの長さと250メートルの例を含んでいます。

同様の機能を持つ他のチップがあります。


NXPチップの問題は、最終的に2倍のワイヤが必要になることです。他のアイデアはありますか?私が見つけた双方向ICは+ 5Vを上回らない。
マティアスユリクス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.