2つのI2Cデバイスの接続に使用できるケーブルの最大長はどれくらいですか(I2Cマスター-> I2Cスレーブ)?
はい、I2Cは実際にボード内通信用に設計されていることを知っています。デモをサポートするために、複数のI2Cスレーブに共通のI2Cバスを使用するという「設計目標」を課されました。
わかりやすくするために、標準のI2Cバスレートを100 kHzと仮定します。
2つのI2Cデバイスの接続に使用できるケーブルの最大長はどれくらいですか(I2Cマスター-> I2Cスレーブ)?
はい、I2Cは実際にボード内通信用に設計されていることを知っています。デモをサポートするために、複数のI2Cスレーブに共通のI2Cバスを使用するという「設計目標」を課されました。
わかりやすくするために、標準のI2Cバスレートを100 kHzと仮定します。
回答:
このNXPドキュメント I2Cバス仕様およびユーザーマニュアルによると、高速モードおよび抵抗プルアップの場合、容量は200pF未満でなければなりません。
電流源プルアップを使用すると、400pFに到達できますが、抵抗を使用することはできません。
ワイヤが20pF / 30cmで、さらに50pFの浮遊容量と入力容量がある場合、ケーブル長は2.25mに制限されます。仮定が異なると、数値も異なります。
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は極端な低電力の状況で役立ちますが、実際に送信に費やす時間を考慮してください。
私はUSBセンサーを製造する会社で働いています。それらのほとんどはI2Cセンサーチップに基づいています。これらのデバイスは2つに分割できるため、CPUパーツを1箇所に、センサーパーツを別の場所に取り付けることができます。デバイスCPUとI2Cセンサー間のI2C接続について、かなり多くのテストを実施しました。100 kHzで、適切なエラー回復プロトコルを使用すると、基本的なワイヤを使用して25mに簡単に到達できます。CAT5ケーブルで100mに到達することさえできました。
IICは同期プロトコルであるため、距離とノイズに関するシステム要件を満たすために、任意にゆっくり実行できます。
1990年代のACCESS.busから現在のビデオディスプレイからEDID情報を取得する方法まで、ケーブルを介してIICを使用する多くの例があります。