We've recently attempted to add 2x PCA9615's between 2 PCB's in an existing system. One PCB includes a MLX90614 temp sensor which is the Slave device, and the other, an STM32F415 microcontroller (Master).
Note we do have 3 other slave I2C devices on this bus (of different adresses, of course), but they are on the same PCB as the microcontroller and thus connected directly to the I2C (not via PCA9615's)
Directly wiring the I2C lines between the PCB's works perfectly, however we're trying to improve radiated immunity performance by adding a differential link between the boards.
Unfortunately, with the PCA9615's added, we don't recieve any temperature data from the MLX90614, and digging deeper, we found we the ACK bit isn't getting through to the master side of the bus. The slave is clearly generating it, as observed at the SDA pin of the slave-side PCA9615. But on both the differential SDA pair, and the master-side SDA, the ACK bit does not come through.
Please see attached captures, which compare the straight I2C setup, with the dI2C setup.
CH1: SCL (measured at Master)
CH2: SDA (measured at Slave)
CH3: SDA (measured at Master)
CH4: Differential probe across DSDAP/DSDAM
My theory is that the slave ACK wont appear at the master side until the next falling edge of the clock? Since the master-side does eventually drop to LOW, and this appears to happen on the clock falling edge. Is this true? If so, why does it occur?
Can you suggest any changes we can make to get this to work so we can use PCA9615's in our product? Or is there a device that might be better suited?