This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ISO1540: SDA line not being released

Part Number: ISO1540
Other Parts Discussed in Thread: ISO1541

Good afternoon,

I have a PCB with 7 devices on an I2C bus (including 3 that are isolated with the ISO1540 and ADUM5010ARSZ (power)). When I transmit I2C commands to non-isolated devices, it works well. I can even attach an o-scope to SDA2/SCL2 on one of the ISO1540 IC's and see the signal coming through quite well. However, when I attempt to address one of the devices behind the ISO1540, the SDA line for the entire board is pulled down to ~700mV and is not released until power is reset.

For reference, I am exploring this issue by sending an I2C command to one of the isolated devices every 10 seconds.

Here are particularly weird things that happen:

  • The SDA line is only pulled to ~700mV after an I2C command specifically addressed to an isolated device is issued.
  • Sometimes a command is successful on the first try. Usually, it's not.
  • When the master is transmitting data (address, data from a write operation), the bus works fine. I can see the address transmitted, I can see an ACK (only pulls down to about ~800mV), and I can see the data sent (but there's no ACK afterward).
  • When the peripheral is transmitting data, it sometimes does so accurately at first, but then SCL still has a clock signal on it (I'd assume generated by the master/µC?) and SDA remains high (and this continues for a while... at least several ms).

In general, it seems like the SDA line becomes stuck at either high or "low" (700mV), but only after the peripheral is required to post data on the line. When the SDA line gets stuck on "low", it seems like the µC stops transmitting I2C commands altogether.


Here's what I've done to explore the problem:

  • Remove I2C/power isolation for one of the isolated devices and connect to the circuit (to check if it's the device that's intentionally holding the line low). Everything works well when the device is not under isolation from the ISO1540.
  • Verify that I2C commands are accurately reflected across the ISO1540. It appears that they are.

Here are potential ideas I have around the problem:

  • It seems like the maximum capacitance on SDA1/SCL1 is low–maybe the bus has too much capacitance? The entire length of the bus is less than 10cm.

Thoughts? Thanks so much for any help you can offer!

  • Hello Bailey,

    thank you for using TI E2E.

    I have a few questions to make sure I understand your problem correctly:

    It would be the best if you could share a simplified block diagram of your Bus, with the isolators.

    You have one I2C master, which is connected directly to the bus?
    Then you got 7 slaves conneced, of which you have 3 slaves behind 3 seperate ISO1540? Or is it 3 slaves behind 1 ISO1540?
    What are the supply voltages you are using?
    Are you using pullup resistors? If yes, where did you put them?
    Did you try your circuit with just 1 slave and 1 master and the ISO1540 inbetween?

    Thank you for providing more details!

    Best Regards,
    Matthias
  • Hey Matthias,

    Tjamls four your reply! Here's a block diagram of the system:

    I'm using IC's from Atlas Scientific, who recommends that they be electrically isolated due to sensitive signals. I have two 1.5kΩ resistors on the non-isolated bus that pull it to 3.3V. I know that this value is low; I've tried higher values (4.7k, 10k) and haven't had success. I also have two 1.5k resistors on each isolated side that pull the isolated I2C lines to isolated 3V3. Again, I've tried other values to no avail.

    I just ran an experiment with only one device on the I2C line (aside from the master) and experienced the same problem. However, for my experimentation thus far, I've only used one particular device on the isolated side. I just ran an experiment with an I2C device from another manufacturer and all works very well.

    So here's a summary of my facts:

    • When I use a chip from Atlas Scientific with the ISO1541, it can't write to SDA.
    • When I used a chip from another company, it worked well with the ISO1541.
    • When I use the chip from Atlas without the ISO1541, it works well.

    For reference, here's a link to one of the Atlas datasheets: www.atlas-scientific.com/.../DO_oem_datasheet.pdf

    So now my question is: how do you think incompatibilities are arising?

  • Hello Bailey,

    thank you for providing more details.

    I have a few more questions to try to figure out the possible error sources and understand you system.

    Just to confirm, are you using the ISO1540 or the ISO1541?

    I assume your master is connected to VCC1 and the slave is on side 2?

    Could you maybe also share the input buffer specs of your Master device?

    Plese note the table below from the ISO154x datasheet:

    The device has a diode in series with the output, which causes a maximum VOL1 on SDA1 of 800mV.

    You can see a simplified schematic in the second picture below.


    One possibility could be noise on the supply voltage, which reduces the margin on the input buffer. Would it be possible for you to use a 5V Supply on your BUS and see if the issue still exists?

    Other than that, does your master have a bus stuck low recovery implemented to its I2C stack?

    When I used a chip from another company, it worked well with the ISO1541.

    When you mention it works with another I2C device, you connected another slave behind the ISO1541 on side? It would also help if you could share a schematic of the I2C section of your system.

    Thank you for answering these questions!

    Best Regards,
    Matthias

  • Dear Bailey,

    its been a few days since I replied. Have you been able to determine the reason your design was not working? Do we need to look into further details?

    Best regards,
    Matthias
  • Dear Bailey,

    I hope you could solve your design issue. As I have not heard from you in a while, I am closing this thread.

    Feel free to reach out to us any time, if you still need support on this!

    Best Regards,
    Matthias