Spanish Italian
17454 Users    

Isolating I2C Interfaces

  Download PDF version of the Article

The I2C (Inter-Integrated Circuit) bus is a two-wire bidirectional bus used for low speed, short-distance communication between integrated circuits. Developed by Philips on 1980s for use amongst ICs on a single board, I2C is increasingly being used in multiboard applications as new bus extensions and control devices help overcome the original 400 pF maximum allowable load capacitance.

The I2C bus allows for more than two devices to be connected to it and for multiple master/slave relationships to exist. The operation of the bus under such circumstances is defined by an arbitration procedure defined in the I2C standard.

The bidirectional nature of the I2C interface presents special challenges in implementing isolation in a manner that avoids bus glitches or lock-up. Since optocouplers are inherently unidirectional devices, each bidirectional I2C line must be broken out into two unidirectional lines to support communication through the optocouplers. Isolating a complete I2C interface requires four optocouplers. The resulting increase in cost, board space, and complexity diminishes the inherent value (that of providing a simple, low cost, 2-wire interface) of I2C.

optocoupler-based-i2c-interface

An additional problem with a circuit such as this is that it results in undesirable bus glitches.

    • A high-to-low transition occurs at SDA. In this situation, IC1 is turned on by the current flowing through R2. This, in turn, pulls Node 1 low and consequently pulls SDA' low via D2.
    • SDA' is taken low. Nothing changes except D2 no longer conducts.
    • SDA is released and goes high as there is nothing holding it low. The LED in IC1 turns off. After a delay, the transistors of IC1 turn off. Node 1 goes high and turns on the LED in IC2. After another delay, the transistors of IC2 turn on and SDA is pulled low to the desired state.

Notice that SDA is high for the duration it takes for IC1 to turn off and IC2 to turn on. This is an unwanted glitch on the bus in which SDA is high while SDA' is trying to bring the bus low.

Read more: How to Isolate I2C Interfaces

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
2 + 1 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.

Who's new

  • fernand
  • Ligrock
  • paolo_0665
  • chanuei
  • JM
  • samsilva77
  • araghube
  • stoll
  • mt
  • orionkw

Who's online

There are currently 0 users and 51 guests online.