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.

TLV320AIC3254: Auto mute on DAC/mDSP when mixing mic and I2S signal

Part Number: TLV320AIC3254

Hello TI,

I am using an audio codec AIC3254 on a custom board, and I am trying to modify my application that has worked well until now.
I have an I2S audio input source and analog microphone input signals as well. The microphone input is on IN2 and I am using the headphone amplifier, HPL/HPR, as the output.

What I am trying to do, is to route the microphone signal from IN2, into the ADC then the mDSP and finally DAC in order to use my PurePath process flow to process the input signal from the microphone, that shall result in output sound from the headphone drivers. I am mixing the signals from I2S and mic using mono mixer in PP.

The problem is that the headphone drivers (or the DAC) only outputs sound when the codec receives I2S audio and for about 18 seconds after it stops receiving data, and during that time I get the signals mixed just as I am expecting. Then it mutes the sound until there is I2S data sent again.

Is there any power saving/auto mute functionality that you can point me towards? Or can you think of any other reason for this behavior?
I have checked Page0 Register 64, and the DAC auto mute control is set to disabled.

Best regards,
Gamli

  • Gamli, 

    The Auto-mute function you already mentioned is the one I would typically see.  Are you using a linux driver for your custom board?  often times driver Architects don't imagine situations where the ADC is mixed with the DIN for the DAC, so when data stops, there may be a function that is automatically muting the outputs.  

    if that is not the case,  can you provide your device configuration? I can take a look and see if there is anything else odd

    best regards,

    -Steve Wilson

  • Hi Steve,

    Thanks for a quick reply! But no, not using a Linux driver. The custom board consists mainly of an ARM based 32 bit MCU, the TLV320AIC3254 codec chip, and a Bluetooth module. The codec chip can receive I2S stream either the BT module or the MCU, resulting in the same previously explained behavior - auto mute when the data stream stops.

    The device configuration (pps driver) that I use in normal operation, generated from the purepath process flow, is attached (I will let the PP project file follow if that helps with the troubleshoot). However, I do some manual during some parts of my application. That is though mainly adjustments on gain, initialize and deinitialize DAC/ADC based on need and so on.

    I have successfully been able to route the microphones on IN2 through the Mixer amplifiers to the headphone, but that limits my possibility of processing the signal using Purepath.

    Please let me know if you find anything odd, or get an idea what could be causing this mute problem!

    Best regards,AudioProcessFlow.zip
    Gamli

  • Hi again,

    I have done some further troubleshooting and identified the problem:
    I manually do some clock adjustments. I set the BCLK as the input to PLL and PLL as CODEC_CLKIN. The BCLK is the Bit clock of the I2S, which is terminated by the HAL driver I use for my MCU when there is no data to be delivered. Thus are the ADC/DAC not working when no I2S data transmission is ongoing.

    Best regards,
    Gamli

  • Thank you for letting us know you resolved the issue Gamli!