I am using an LTC2945IMS to monitor power in a design I am working on. It uses i2c to communicate with a MCU and must be isolated. The chip has two separate pins for the data line (SDAI and SDAO) for input and output data. This is to make isolation easier. Below are some isolation circuits from their app note.

enter image description here

I already had an optoisolator in my circuit so I wanted to re-use the part here to avoid adding a line item. However since it is not inverting like the one in the app note I had to wire it a bit different (in order to combine the two data lines into SDA). My implimentation is below.. But I'm not sure if it is equivalent to what they were doing. Do you think this will work or am I missing something? Thanks!

enter image description here

  • \$\begingroup\$ Looks like you're willing to forego SCL clock stretching? Master SDA can't pull up to +3V3. At this point, am looking away. \$\endgroup\$
    – glen_geek
    Aug 22, 2017 at 1:06
  • 1
    \$\begingroup\$ Is there a reason you want to use optos for this instead of a digital isolator IC? You can get digital isolators tailored for I2C apps these days... \$\endgroup\$ Aug 22, 2017 at 2:16
  • \$\begingroup\$ The SDA pin is only 0V and 0.7V due to your circuit. Hint "Q". \$\endgroup\$
    – Jason Han
    Aug 22, 2017 at 3:58
  • \$\begingroup\$ Sims are basically free - simulate it. \$\endgroup\$
    – Andy aka
    Aug 22, 2017 at 9:15
  • 2
    \$\begingroup\$ I'm voting to close this question as off-topic because it has been abandoned by the asker in unresolvable form for over a year \$\endgroup\$ Nov 27, 2018 at 15:16

1 Answer 1


I was thinking about this same thing yesterday and came up with this thread when I searched. I know there isn't much need to re-invent wheels, but it is a fun design problem, and who knows, one day we might need something in a hurry and have to make something from the spare parts drawer. So - what about this? I think it does the job. Only one open-collector line show, the two are the same. One dual-opto per line.

homebrewed opto-isolated I2C

  • 2
    \$\begingroup\$ The question is not about isolating I2C in a generic situation. It is about isolating I2C specifically with LTC2945. And the LTC2945 is a bit special, you see, there is no SDA pin, but two pins: SDAI and SDAO. Why? Well, this is to solve the problem of the design you just suggested. In your design, as soon as one device pulls the line low, it will trigger the opto it drives. Which will pull the line on the other side low. Which will trigger the other opto, which will force the original line to stay low, even if no device is driving its output pin low anymore. The cycle never ends. \$\endgroup\$
    – dim
    Oct 24, 2018 at 18:54
  • 1
    \$\begingroup\$ ... So, to sum up: your design unfortunately doesn't work, but it didn't really answer the actual original question, which was about the LTC2945, which is different from a regular I2C device. \$\endgroup\$
    – dim
    Oct 24, 2018 at 18:57
  • \$\begingroup\$ you are correct! It latches up. I didn't spot that. Thank you! \$\endgroup\$
    – danmcb
    Oct 29, 2018 at 18:35

Not the answer you're looking for? Browse other questions tagged or ask your own question.