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!