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.

PCM5142: I2C NACK : slave not responding to address

Part Number: PCM5142


Hi,

I'm trying to configure my PCM5142 using I2C. When trying to communicate, slave doesn't ACK to his own address. The circuit, is the following :

The DAC ans I2S busses are directly wired to the microcontroller. The only mismatch between this picture and what is wired on my breadboard is that I don't have separate power supply for 3V3_AVDD and 3V3_µC : both come from the same power supply.

When looking at the I2C frames with a logic analyser here's what I see :


Since I've grounded both ADDr pins, the address should be 1001100, according to table 39. Since my logic analyser sees exactly this I came to the conclusion that the code from I2C master (STM32 microcontroller) is fine and that the issue comes from the DAC.
Do you have any idea of what could be wrong?Should I use separate supplies for analog & digital circuitry?

Have a Nice day,
Pierre

  • Hi Pierre,

    Can you confirm the voltages on all the supply pins? Is an I2S signal being applied? What is the voltage on the VNEG pin?

    Do you have additional pull-ups on the the SDA and SCL pins? 22kohm is very large to an I2C bus, it is possible that the digital pins are not rising fast enough.  I recommend 2kohm.

    Thanks,

    Paul

  • The supply voltage is 3.3V on all supply pins. It comes from the same stabilized lab power supply. I'm not applying I2S signals yet. I've figured out my problem a few hours ago, when looking witha  scope instead of a logic analyser: I did not properly setup the I2C pins as open drain on my microcontroller. (I've also lowered my RPU to 10k to improve rising time).
    It caused an intermediate voltage level on the bus when the slave tried to ACK,because slave was driving the line low and the master was keeping it high.  This intermediate level was read as NACK from my analyzer. Thanks for your answer Paul.