Opto-electronics i2c interface

What if you want to isolate a digital signal ? You use a optoisolator, of course. What if you want to isolate a bi-directional
digital signal ? Optoisolators only handle one-way communication, so one won't work -- obviously you need (at least) 2.

Here's a really clever circuit that does this.

        D1
 left-+|>|+--------------+
      |   |    (+5V)-R2--+   gnd
      |   |              |   |
      +|<|+               \ /    -
        |                 ---     \(optoisolator chips)
       --- IC1             |  IC2 /
       / \               +|>|+   -
      |   |              |   |
    gnd   +--R1-(+5V)    |   |
          +--------------+|<|+-----right
                          D2

 -|>|- == diode

Circuit by Jerry Steele (National Semiconductor), _EDN_ 1996 Jun 6 p 122. It references "Isolate data acquisition on a
bidirectional bus" article by Jerry Steele in _Electronic Design_ 1995 Nov 6. ASCII schematic drawn by David Cary.

We assume that everything else on the (left) and (right) bus is a open-collector pull-down device. (I don't *think* that it hurts if
there are other pull-up resistors besides the 4.3K R1 and R2 in this circuit).

To build a complete isolated bidirectional I2C bus, you build one of the above circuits for the SDA line and another one for the
SCL line; and you need a isolated "gnd" and +5V power supply. Steele's component list looks like

4 HP HCPL2300 optocouplers.
4 resistors (~4.3K)
4 Schottky diodes (1N57212)
4 capacitors (~0.1 uF) to decouple +5 and gnd at each chip.
1 isolated 5V DC/DC converter (Maxim makes some nice ones).

Steele:

"Assume an initial high state on the [left] serial-data (SDA) bus. The normal rest state for both the SDA and SCL (serial clock)
lines of the I2C bus is high.

The LED in IC1, which has a current path from its anode via R2 [...], is off. As a result, the [turned-off] IC1's output transistor
transmits (via IC2's photodiode in parallel with D2) [a high] to the [right] SDA [...]. Grounding the [left] SDA line causes
current to flow in IC1's LED, thereby activating IC1's output transistor. The transistor's low state transmits to [right SDA] via
[...] D2, [...], limits the reverse-bias drop to the typical 0.4V of a Schottky diode. This arrangement prevents the low condition
from circulating back across the barrier, [which avoids] causing the circuit to latch.

When [something pulls the right SDA bus low], the mirror image of the above scenario occurs. When IC5 pulls the SDA line
low, it turns on the LED in IC2. When IC2's output transistor pulls [left] SDA low, it does so in such a way that it applies a
reverse bias to IC1's LED [keeping it turned off], with a current path via D1 (again, to limit the drop to 0.4 V) preventing a
recirculating condition. In short, when you take the left-side SDA low, the right side goes low. When you take the right side
low, the left side goes low. ... without latching."

[DAV: I've taken the liberty of replacing Steele's terminology "photodiode", "forward biased", "inactive" with the
more-understandable-to-me terms "LED", "turned on", "turned off", even though I know the LED in a optoisolator doesn't emit
visible light.]

The only flaw is that most optoisolator chips have rise and fall times of at least 10 us, meaning maximum bit rates below 50
KHz.

24 août, 2009

matthieu.benoit@free.fr