AnsweredAssumed Answered

ADAU1701 and PIC32 I2C clock stretch issue

Question asked by carpens on Dec 1, 2013
Latest reply on Dec 10, 2013 by bowerymarc



I have a circuit with a Microchip PIC32MX250F128D mcu as a I2C master to communicate with a ADAU1701.

I use the standard PIC32 I2C libraries from Microchip.

I want to read signal values using a Readback cell.

I followed indications given in posts like this one:

A typical read sequence is:

write 2bytes, read request, read values 3-4bytes.

Everything works fine with SigmaStudio and the USBi interface.

I copied the sequence form the capture window in SigmaStudio to my MCU code and it just doesn't work.

The I2C code is functional because I can read/write to registers in the ADAU1701 (example: mute/unmute commands work fine).

I then probed the I2C bus.

With the USBi the clock is stretched a few us just after writing the 2 bytes and before the read command.

With the PIC32, the clock is not stretched at all and the bytes read are always zero.

I checked everything bit by bit and this is the only difference.

I try to avoid rewriting the I2C libraries or doing software bit-banging but maybe I will have to.

Has anyone came across similar I2C issues with PIC32 and found a solution?

Any suggestion appreciated.