Other Parts Discussed in Thread: BQ76942, BQ76952, , ISO1640
Hi all,
I've been testing an ISO1641B IC to perform isolated I2C communication, between an MCU Master, and a BQ76942 AFE slave (address 0x60). Unfortunately I have been unable succeed; It appears that the isolator is failing to pass some clock pulses from SCL1 to SCL2. I've attached an image from my oscilloscope that demonstrate this problem:
- Pink: SDA2 (slave)
- Green: SDA1 (master)
- Yellow: SCL2 (slave)
- Blue: SCL1 (master)
Some Clocks transmitted by the Master (Blue) are not passed on to the Slave (Yellow). After this occurs, the bus enters a BUS_BUSY state, and no further communication is observed. Additionally, every time I restart the Master and Slave, I observe the same waveform - the exact same SCL pulses are clipped every time.
- VCC1 is 3.3 volts with respect to GND1. SCL1 and SDA1 are pulled up to VCC1 with 4.7K resistors.
- VCC2 is shorted to VCC1, and GND2 is shorted to GND1.
- SCL2 and SDA2 are pulled up to VCC2 with 2K resistors.
I have tried numerous resistors on the Slave side: 2K, 4.7K, 6.8K, 10K and 20K. All show very similar symptoms, of missed SCL2. Master side always has 4.7K pullups to VCC1
I have tried baud rate 50kHz, 100kHz, and 400kHz. Here, too, SCL clocks are often missed.
I have also tried a 5v supply to VCC2, to no effect.
There's a bit more confusing behaviour, I'm hoping this might help to narrow down the problem:
When the BQ76952 slave is removed from the I2C bus, the isolator does appear to work. SCL2 exactly matches SCL1.
Similarly, when I attempt to communicate with address 0x40 (not present on the bus), SCL2 matches SCL1.
I am able to communicate between the MCU and the Slave without the isolator, when I connect the MCU's I2C bus directly to the Slave's I2C bus. So surely the Slave device does work. Similarly, I am able to communicate with a different slave (MPU9250 sensor) through this isolator without trouble. So it appears the isolator does work, too.
Why do some of the SCL pulses get missed, and how may I resolve the issue?
Thanks,
Arush