資料ライブラリ
AN-913: I2Cインターフェースのアイソレーション
はじめに
I2C®(Inter-Integrated Circuit)バスは、IC間の低速近距離通信に用いられる2線式双方向バスです。このI2Cは、1980年代初頭にPhilips1がシングル・ボード上のIC間通信のために開発しました。今日、マルチボード・アプリケーションでもI2Cの使用が増大していますが、これは新しいバスの機能拡張や制御デバイスがそれまでの最大許容負荷容量(400pF)の制約の克服に役立ったためです。
ブレード・サーバーやデジタル制御の電力コンバータなどのマルチカード・アプリケーションでは、多くの場合、各インターフェースをアイソレートすることによりカードのスムーズな着脱や安全性の確保に対応する必要があります。しかし、I2Cバスは双方向であるため、I2Cのアイソレーションはそれほど簡単ではありません。この特性は、フォトカプラの単方向動作とは同等ではありません。
このアプリケーション・ノートでは最初にI2Cバスの概要を簡単に説明し(物理層を中心に説明)、次にI2Cインターフェースのアイソレーションに関する課題を取り上げます。最後に、I2Cインターフェース・アイソレーションのiCoupler®ソリューションについて説明します。
I2Cの概要
I2Cインターフェースは、NXP Semiconductors社のI2Cバス仕様バージョン2.1(2000年1月)で規定されています。このインターフェースは、SDA(シリアル・データ)、SCL(シリアル・クロック)という2本の線から構成されています。これらの線を使って、バスに接続された固有のアドレスを持つ各デバイスに対して情報の送受信を行います。一般にデバイスは必要に応じてトランスミッタまたはレシーバとして機能しますが、どちらか一方の機能のみを持つデバイスもあります。また、デバイスは必要に応じてマスターまたはスレーブとして機能します。マスターはほかのデバイスのアドレスを指定してデータ転送を開始するデバイスであり、スレーブはマスターによってアドレス指定されるデバイスです。
I2Cバスに2つ以上のデバイスを接続して、複数のマスター/スレーブ関係を構築することができます。こういった環境でのバス動作は、I2C標準に準拠したアービトレーション手順で規定されています。
デバイスは、トランスミッタ/レシーバのいずれであっても、マスターまたはスレーブとして指定できます。たとえば、スレーブからのデータ転送を開始するシーケンスでは、マスターは最初にトランスミッタ(スレーブのアドレスを指定)に、次にレシーバ(スレーブからデータを受信)に、その後に再度トランスミッタ(転送終了を指示)になります。一方、スレーブは最初にレシーバに、次にトランスミッタに、その後レシーバになります。
I2Cバスは、オープンドレイン/オープンコレクタによるワイヤAND機能を使って動作します(図1を参照)。バスをロジック・ハイレベルの状態にするためには、バスに接続されたデバイスはすべてロジック・ハイレベルの状態になる必要があります。SDAラインとSCLラインの両方でこの状態が存在するとき、デバイスはバスを開放状態とみなしてデータ転送を開始できます。SDAとSCLは共に双方向ラインなので、デバイスはトランスミッタとレシーバの両方の役割を担うことができます。
Parameter | Symbol | Min | Max | Unit | Comments |
Logic Low Input Voltage | VIL | −0.5 | 0.3 × VDD | V | Standard mode allows for a fixed-input specification (−0.5 V min, +1.5 V max) |
Logic High Input Voltage | VIH | 0.7 × VDD | VDD+ 0.5 | V | |
Logic Low Output Voltage (for 3 mA sink current) | |||||
VDD > 2 V | VOL1 | 0 | 0.4 | V | |
VDD< 2 V | VOL3 | 0 | 0.2 × VDD | V | Standard mode does not allow for VDD < 2 V |
データ転送は、最大100kbps(標準モード)、最大400kbps(ファースト・モード)、最大1Mbps(ファースト・モード・プラス)、または最大3.4Mbps(ハイスピード・モード)で行うことができます。バス制限値である400pFを超えない限り、そのバスに接続できるデバイスの数は無制限です。表1に、I2Cのロジック・レベルを示します。
I2Cインターフェースの重要な点は、SCLクロック信号がローレベルのときにだけSDAのロジックが変化するということです。また、データ送信を制御するスタート信号とストップ信号は、SCLクロック信号がハイレベルのときに発生するSDAロジック変化です。したがって、バス上の通信障害を避けるには、ローレベルとハイレベルの両状態でSCL信号を安定させることが重要です。
絶縁型I2Cインターフェースの課題
I2Cインターフェースは双方向という特性を持つため、バスのグリッチ/ロックアップ防止に適したアイソレーションを実現しようとする際に問題が生じます。図2に、フォトカプラ技術に基づく回路を示します。フォトカプラは本来単方向性のデバイスであるため、フォトカプラを使用して通信を行うためには、I2Cの各双方向ラインをそれぞれ2本の単方向ラインに分割する必要があります。図2に、簡略化したSDAラインのみを示します。I2Cインターフェース全体をアイソレートするには、4個のフォトカプラが必要となります。この方法を採用すると、コスト、ボード・スペース、および複雑さが増して、シンプルな低価格の2線式インターフェースというI2C本来の価値が薄れてしまいます。
こういった回路には、望ましくないバス・グリッチが発生するという別の問題もあります(図3を参照)。
- ハイレベルからローレベルへの変化はSDAで発生します。この場合、IC1はR2を流れる電流によってオンします。これによってノード1がローレベルにプルダウンされ、D2を介してSDA'がローレベルにプルダウンされます。
- SDA'はローレベルに変化します。D2が動作しなくなること以外、何も変化しません。
- SDAをローレベルにしておく必要はないため、SDAラインは開放され、ハイレベルになります。IC1内のLEDはオフになります。一定の遅延の後に、IC1のトランジスタがオフになります。ノード1はハイレベルになり、IC2のLEDがオンになります。次の遅延の後に、IC2のトランジスタがオンになり、SDAがローレベルにプルダウンされて望ましい状態になります。
SDAは、IC1がオフになってIC2がオンになるまでの間ハイレベルを維持します。このためにバス上に不要なグリッチが発生します。このグリッチはSDAがハイレベルのときにSDA'がバスをローレベルにしようとして発生します。
P82B96のデータシートでNXP Semiconductorsが提供しているソリューションは、同社のデュアル双方向バス・バッファと4個のフォトカプラから構成されています。このソリューションにはグリッチやロックアップの問題はありませんが、複数の部品が必要となるため、ボード・スペースやコスト面で不利であり、I2Cインターフェースのメリットが損なわれます。
iCoupler I2Cアイソレーション・ソリューション
一方、アナログ・デバイセズのADuM1250/ADuM1251 iCoupler製品は、グリッチやロックアップの問題を解消した部品1個のI2Cアイソレータであり、フォトカプラ採用のソリューションでの複雑さ、サイズ、コスト面での問題もありません。
ADuM1250は双方向データ・ラインと双方向クロック・ラインとのインターフェースをサポートし、ADuM1251は双方向データ・ラインと単方向クロック・ラインとのインターフェースをサポートしています。この2つの製品は、UL認定の2.5kVrmsアイソレーション定格を持ち、8ピンSOICパッケージを採用しています。
ADuM1250/ADuM1251を使用する絶縁型I2Cインターフェースはきわめてシンプルです(図6を参照)。これは、わずか1個の部品と各電源のバイパス・コンデンサから構成されています。プルアップ抵抗は、すべてのI2Cインターフェースに関係しています。抵抗値選択のガイドラインは、I2C仕様に記載されています。
ADuM1250/ADuM1251アイソレータは2本の双方向通信ラインをサポートするために、I2CインターフェースのワイヤードANDオープンドレイン構成内で4チャンネルの単方向アイソレーションを内部的に構成しています。デバイスのサイド1の特別なロジック電圧レベルは、バスのグリッチまたはラッチアップを防止するために使用します。これによって、サイド1のレシーバからアサートされたロジック・ローレベルがサイド1のトランスミッタによって入力ローレベルと解釈されることがなくなり、その結果、サイド1とサイド2間のループが切断されます(図7を参照)。
サイド1レシーバのロジック・ローレベル出力は最大0.9Vです。この電圧値は、ほかの標準CMOSデバイスがサイド1になった場合に、入力ローレベル電圧として読み取ることができるように十分小さな値であると同時に、ロジック・ローレベルのスレッショールドが0.7V(max)であるサイド1側トランスミッタが、ロジック・ローレベルとは解釈しないように十分大きな値になっています。したがって、サイド1レシーバからのローレベル出力は、バスに接続されたデバイスによって正しく検出されますが、サイド1トランスミッタによってサイド2に帰還されることはありません。そのため、フォトカプラ・ソリューションに関連するバス問題が回避できると同時に、最大1MHzのクロック周波数をサポートすることができます。帰還ループはサイド1で切断されるため、サイド2で同じことをする必要はありません。サイド2では、標準のロジック電圧レベルが使用されます。
ADuM1250/ADuM1251使用時の注意
ADuM1250/ADuM1251を使用する場合は、サイド2をI2Cバスに接続することを推奨します。これらのアイソレータのサイド2は、標準モード/ファースト・モード動作をサポートするI2C仕様に完全に準拠しています。サイド1(I2Cデバイスと完全互換)は、バスのラッチアップを防ぐために特別なロジック・ローレベル電圧を使用するため、I2Cに厳密には準拠していません。
図8に、ADuM1250アイソレータを介して複数のデバイスに接続されているI2Cバスを示します。各デバイスは専用の電源を備えており、ADuM1250のサイド1に接続されています。各ADuM1250のサイド2はバスに接続され、共通のVDD2電源から駆動されます。
I2Cインターフェースについては、デザインがI2C仕様のタイミング条件を満たしているかどうかを確認する必要があります。特に、アイソレーション・チャンネルの伝播遅延とアイソレーション・チャンネル間の伝播遅延の不一致をよく考慮して、インターフェースがI2C条件を満たしているか確認してください。
I2Cインターフェースのアイソレータに関して次の2つのタイミング・パラメータがあります。
- SDAセットアップ時間(ファースト・モードで250ns)
- SDAホールド時間(ファースト・モードで300ns)
I2Cアイソレータの影響を分析するときは、2つの状況を考える必要があります。その1つは、マスター・デバイスがスレーブに書込みを行っているときです(図9を参照)。この場合、アイソレータのチャンネル間不一致によってスレーブ側で受信するSDA信号のセットアップ/ホールド時間が短くなる可能性があります。これを防止するためには、マスターのセットアップ時間とホールド時間を少なくともチャンネル間不一致分だけ増やして、受信側のスレーブ・デバイス側で必要なセットアップ時間とホールド時間を確保できるようにする必要があります。
もう1つの状況は、スレーブ・デバイスがマスターに書込みを行っているときです(図10を参照)。この場合、マスターがスレーブにSCLクロックを送信し、それを使ってSDA信号がマスターに書き込まれます。マスターはSCLをローレベルにして、SCLがロジック・ハイレベルの状態に戻る前(所要のセットアップ時間が経過する前)にスレーブからSDAエッジを受信する必要があります。すなわち、アイソレータの往復伝播遅延とスレーブの応答時間を合わせた時間は、SCLロジック・ローレベル期間からセットアップ時間を差し引いた時間より短くする必要があります。
t0 + tSCL + tRESPONSE < TLOW − TSETUP
したがって、スレーブの応答時間に対する制約は次式で表されます。
tRESPONSE < TLOW − tSETUP −t0 − tSCL
このいずれのケースでも、理想的なI2Cアイソレータは伝播遅延が小さく、チャンネル間で厳密に一致しているという2つの特性を持っています。小型、単純さ、低価格というメリットに加え、ADuM1250/ADuM1251はこうした優れた性能特性も提供します。これは、本製品がI2Cインターフェースのタイミングにそれほど影響を与えないためです。