The TI E2E™ design support forums will undergo maintenance from July 11 to July 13. If you need design support during this time, open a new support request with our customer support center.

TLV320AIC3104EVM-K: I2C write problem during External Audio Interface Configuration

Part Number: TLV320AIC3104EVM-K
Other Parts Discussed in Thread: TLV320AIC3104

Tool/software:

Hi,

We are using the nRF5340 Audio Development Kit (DK) with the TLV320AIC3104 audio codec. We're trying to configure the codec using I2C in the External Audio Interface Configuration mode, but we're facing a problem when writing to its registers.

According to the EVM software instructions, we turned OFF the switch (for External Audio Interface Configuration), but we still can't write to the registers over I2C. Interestingly, if we turn ON the switch (USB Audio Interface Configuration), we're able to write to the registers successfully, but there's no audio output. To get audio output, we have to turn the switch OFF again after writing.

Why is this happening?

Also, the datasheet says the I2C address is 0x18, but the EVM software shows it as 0x30. Why is there a difference?

We've attached a reference video and a screenshot of the EVM software for more context.

Regards,

Aditya


 TWO MODES

  • Hi Aditya,

    I think there is some confusion on the limitations of the EVM.  The EVM can receive I2S audio data externally using SW0. It's not well intended for I2C external control. External Audio Interface refers only to I2S audio data, not I2C control data. SW0 has nothing to do with I2C, so I'm a little surprised that it's making a difference for you.

    The EVM board has I2C pull ups on it already. If your microcontroller also has pullups there may a resulting pullup value that is incorrect or too slow. Try probing the I2C lines and check the results for abnormalities. You could also just remove R2 and R3 on the EVM motherboard if the pullups are a problem so that the microcontroller has sole control.

    Schematics for the motherboard are in this document: https://www.ti.com/lit/ug/slau855a/slau855a.pdf?ts=1750262635749&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTLV320AIC3104

    Best regards,
    Jeff McPherson

  • Hi,

    Following your advice, we checked the pull-up resistor values on the I2C lines of the nRF5340 Audio DK. We’ve also included a reference image for you.

    We noticed a difference in the pull-up resistor values between the TLV320AIC3104 and the nRF5340 Audio DK. The TLV320AIC3104 uses 2.2k ohm resistors, while the nRF5340 uses 1.8k ohm resistors.

    We also measured the I2C signals on the TLV320AIC3104 and attached an image of the results. Could you please guide us on what to do next?nRF5340 Audio DK Pull-UpsI2C Signals on TLV

  • Hi Aditya,

    The microcontroller is pulling up to 1.8V but the EVM is pulling up to 3.3V. So you have a voltage conflict that might be creating all the extra ringing at low values.

    First power down and try setting J16 on the EVM daughterboard to 1.8V and J4 on the EVM motherboard to 1.8V setting to match with the microcontroller 1.8V. If the issue persists, remove R1, 2, and 3 on the motherboard and R2, R3 on the daughtercard so that the microcontroller is the only pull up and driving source of I2C.

    Best regards,
    Jeff McPherson

  • Hi,

    We’ve already tried setting the codec voltage to 1.8V to match the microcontroller’s voltage. However, I2C communication still failed to write under those conditions. We’ll proceed with removing the resistors from both the motherboard and daughterboard and will update you with the results.

    Regards,

    Aditya

  • Hi,

    We’ve removed R1, R2, and R3 from the motherboard, and R2 and R3 from the daughterboard. However, there is still no audio after removing the resistors.

    I want to control the CODEC using the nRF5340 Audio DK instead of the PC. I would really appreciate your help in resolving this issue.


    Regards,
    Aditya P

  • Hi Aditya,

    Are you able to configure over I2C, but no signal out? Can you measure the I2S lines (data, MCLK, BCLK, and WCLK) on the scope and show them? What is your script you are running, and are you trying to use USB audio? If using USB audio, make sure the audio device is selected correctly in your windows settings.

    Best,
    Mir