FPGA搭載基板上で、メモリーや電源シーケンス管理用で複数のデバイスを接続する際に、I2Cバスを使用しているかと思います。システムによっては、基板間でI2Cバスを使用するような場合も出てきています。

I2Cバスは、2線式でシンプル!

I2Cバスは、2本のシングルクロック(SCL)とシングルデータ(SDA)ライン配線のみで、デバイス間の情報のやり取りが出来ます。

シンプルな方式であるため、通信装置で使われるSMBus、PMBus、ATCAのIPMBバスなどでも使用されることが多くなっています。

シンプルだがトラブルに注意!

I2Cバスは、「2線式でシンプルで低速通信なので設計が簡単!」と考えがちです。

しかし、通信が上手く出来ない状況に陥ることも少なくありません。

特に、通信装置などでバックプレーンとの接続が必要になった場合や、IOカード間を長い配線で接続して通信を行うような場合にはトラブルの可能性が高くなります。

通信エラーの原因は?

通信エラーは、配線容量がI2Cバスの規定を逸脱していることが原因である可能性が高いです。I2Cバスの規格では、最大配線容量を400pFと規定しています。

バックプレーンとの接続や、IOカード間の長い配線の場合、I2Cの規格を逸脱するほどの配線容量となり、図1のように立ち上がり波形がなまってしまい通信エラーが発生するので注意が必要です。

Article header library 127585 pic01  2
図1:立ち上がり波形

プルアップ抵抗の調整で対策できる?

通常、立ち上がり波形がなまっている場合は、プルアップ電流を大きくして(プルアップ抵抗を小さくして)配線容量が大きくてもドライブできるよう対策します。

しかし、プルアップ電流を大きくし過ぎると、副作用としてLowレベルが上昇(プルアップ電流x寄生抵抗分)しVOLの規定を逸脱する可能性が出てくるので注意が必要です。

※VOLの規定については、こちらの記事を参考にしてください。
I2CバスのVOL規定を確認していますか?

では、プルアップ抵抗の調整により、通信エラーを回避できない場合は、どのように対策すべきでしょうか?

Article header library 127585 pic02  1
図2:I/O基板間の接続

通信エラーを改善するソリューション

通信装置のようにバックプレーンとの接続が必要になった場合や、基板間をフラットケーブルで接続してI2Cバス通信を行うような寄生容量が原因で通信エラーを回避できない場合はどうしたら良いのでしょうか?

寄生容量が規格に準拠しない場合の回避策として、アナログ・デバイセズ社のI2Cバス・バッファ製品を使用します。

Article header library 127585 pic03  1
図3:I2Cバス・バッファ LTC4315

LTC4315は、Rise Time Accelerator機能を持っているため、なまっている立ち上がり波形を改善することが可能です。

図3のように、LTC4315をコントローラボード上に置くことで、バックプレーンに接続している場合でも正常に通信することが可能になります。

LTC4315は、基板間(デバイス間)に大きな寄生容量が出来てしまった場合の問題を解決する、I2Cバス通信に必須の製品です。


おすすめ記事/資料はこちら

I2CバスのVOL規定を確認していますか?

商品の購入はこちら

LTC4313IDD-1#PBF
LTC4315IMS#PBF
LTM2883IY-5S#PBF