I2C(Inter-Integrated Circuit)は、バスに接続されたデバイス間で情報を転送するために用いられる規格です。同規格に対応するバスでは、シリアル・データ(SDA)とシリアル・クロック(SCL)の2本のラインが使用されます。また、同規格に対応するデバイスではオープン・ドレイン出力を使用します。I2Cデバイスがローを駆動する際には、その出力によってバスがグラウンドのレベルに引き下げられます。信号がローからハイに切り替わる際には、I2Cデバイスの出力がハイ・インピーダンスの状態になります。I2CバスとVDDの間にはプルアップ抵抗が接続されるので、それによってバスがVDDのレベルにプルアップされます。このプルアップ抵抗とケーブル/バスの容量の組み合わせによって、充電時のRC時定数が決まります。ボード外にわたるケーブルを使用する場合や非常に長いバスを使用する場合には、それらによるトータルの容量値が大きくなります。その結果、信号の立上がり時間が長くなり、最高動作周波数が制限されます。また、バスのトータルの容量は、バスに接続されるデバイス数に伴って増加することになります。図1は、2つの基本的なI2CデバイスがI2Cバスに接続されている様子を表したものです。
I2Cバスの仕様では、様々な動作周波数における信号の立上がり時間が規定されています。例えば、Fast-mode Plus(最高動作周波数が1MHz)については、データ/クロック信号の最大立上がり時間は120ナノ秒と定められています。1MHz未満の動作周波数としては、例えばFast-mode(最高動作周波数は400kHz)が用意されています。このモードでは、立上がり時間は最大300ナノ秒となっています。プルアップ抵抗RPの値が固定である場合、立上がり時間tRとトータルのバス容量CBの間には、以下の式で表されるリニアな関係があります。ここで、tRは、立上がり信号が0.3×VDDから0.7×VDDに達するまでにかかる時間のことを指しています。上の式は、コンデンサの充電電圧 VC = 0.3×VDD、VC = 0.7×VDD に対応する式を解くことによって導出できます。
I2Cに準拠したデバイスの例としては「ADuM1250」が挙げられます。同ICは、ホット・スワップ対応のデジタル・アイソレータです。そのデータシートには、サイド1、サイド2について、5Vの動作条件におけるプルアップ抵抗の推奨値が記載されています。それらを使用して計算すると、許容可能な最大ケーブル容量はサイド1では88pF、サイド2では780pFとなります。これらは理論上の最大容量値です。同ICのデータシートを見ると、負荷容量としてサイド1では40pF、サイド2では400pFという値が推奨されていることがわかります。データシートに記載された値は、設計上のマージン、ESD(Electro Static Discharge)に対する保護、400pFがI2Cバスの標準値であることを考慮した結果です。同ICの各サイドで負荷容量の値が異なるのは、それぞれの駆動能力に差があるからです。駆動能力はサイド1が3mA、サイド2が30mAで、サイド2の方が高くなっています。したがって、サイド2では、プルアップ抵抗の値をサイド1で許容できる値よりも低く設定することが可能です。
I2Cバスは、4芯のリボン・ケーブルを使用することで延長することができます。通常、このタイプのリボン・ケーブルを使用すると、1mあたり約50pFの容量が加わります。ADuM1250の場合、サイド1にはトータルのバス容量が40pFであるI2Cバスの1つのセクションを接続することができます。一方、サイド2には、4芯のリボン・ケーブル(最長8m)を接続することが可能です。それにより、絶縁されたデータを、バスに接続された別のI2Cデバイスに転送することができます。8m以上の距離に対応したい場合や、サイド1に接続されるトータルの容量が40pFを超える場合には、最高動作周波数を低く設定し、立上がり時間を長く確保できるようにします。そのようにすれば、より大きなバス容量を許容することが可能になります。