Electronic – arduino – Trouble initiating I2C communication between Arduino and 3.3V Slave

arduinoi2csensor

I'm trying to get into capacitive sensing and therefore need a stable communication between an Arduino and a TI FDC2114, which is already soldered on an EVM. Both support I2C, and because of the different operating voltage of 5V for the Arduino and 3.3V for the FDC, I'm using an PCA9512A bidirectional level shifter and 10k pullups to 5V (Arduino Mega internal) as well as to 3.3V.

When scanning the address of the FDC, I sometimes get a positive response (ACK on last clock after the requested 7bit address) but mostly a NACK. Even if I receive a ACK, some seconds later the FDC can't pull down the SDA to 0V anymore and I get NACK again. In case of NACK, it may help to unplug SDA and SCL while under voltage and plug them back in, but it doesn't work every time. I've already changed all wires, so it shouldn't be an mechanical problem.
I also observed that the peak Voltage is 3.4V on SCL and more than 3.6V on SDA, but I don't know if this could cause any problems and also where the voltage difference results from.

When using the included MCU of the EVM, there are no problems at all. What am I missing, why doesn't it work reliable?

Wiring

Best Answer

Problem solved!

I tried to get the FDC working with an Arduino Mini Pro 3,3V and had the same problem as before.

In the end, the solution was simple: The FDC has a shutdown Pin (SD), which sets it into sleep when HIGH and sets it active when LOW. When I connected SD to GND, all problems went away. Now I have a stable signal between Arduino Mini Pro 3,3V and FDC2114. I think it would also work with the Arduino Mega and level shifter, but I can't test it out.

Thanks again for your help.