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.

TLV320AIC3204 headphone delay, causes annoying echo when speaking into mic with headphones

Other Parts Discussed in Thread: TLV320AIC3204

Greetings,

We are using the TLV320AIC3204 in an audio recorder.  Record/playback is great.  But, during setup/record when the user has headphones plugged in, there is a delay through the headphones, which gives the user a really annoying echo (of the live sound plus the delayed sound in headphones).  Any registers that can be tickled to control this?

Here is the current register configuration:

page0
[0] 0x0000 Page Select Register
[1] 0x0000 Software Reset Register
[2] 0x0060 Reserved Register
[3] 0x0000 Reserved Register
[4] 0x0000 Clock Setting Register 1, Multiplexers
[5] 0x0011 Clock Setting Register 2, PLL P&R Values
[6] 0x0004 Clock Setting Register 3, PLL J Values
[7] 0x0000 Clock Setting Register 4, PLL D Values (MSB)
[8] 0x0000 Clock Setting Register 5, PLL D Values (LSB)
[9] 0x0000 Reserved Register
[10] 0x0000 Reserved Register
[11] 0x0081 Clock Setting Register 6, NDAC Values
[12] 0x0082 Clock Setting Register 7, MDAC Values
[13] 0x0000 DAC OSR Setting Register 1, MSB Value
[14] 0x0080 DAC OSR Setting Register 2, LSB Value
[15] 0x0002 Reserved Register
[16] 0x0000 Reserved Register
[17] 0x0008 Reserved Register
[18] 0x0081 Clock Setting Register 8, NADC Values
[19] 0x0082 Clock Setting Register 9, MADC Values
[20] 0x0080 ADC Oversampling (AOSR) Register
[21] 0x0001 Reserved Register
[22] 0x0000 Reserved Register
[23] 0x0004 Reserved Register
[24] 0x0000 Reserved Register
[25] 0x0000 Clock Setting Register 10, Multiplexers
[26] 0x0001 Clock Setting Register 11, CLKOUT M divider value
[27] 0x000D Audio Interface Setting Register 1
[28] 0x0000 Audio Interface Setting Register 2, Data offset setting
[29] 0x0000 Audio Interface Setting Register 3
[30] 0x0088 Clock Setting Register 12, BCLK N Divider
[31] 0x0000 Audio Interface Setting Register 4, Secondary Audio Interface
[32] 0x0000 Audio Interface Setting Register 5
[33] 0x0000 Audio Interface Setting Register 6
[34] 0x0000 Digital Interface Misc. Setting Register
[35] 0x0000 Reserved Register
[36] 0x00CC ADC Flag Register
[37] 0x00AA DAC Flag Register 1
[38] 0x0011 DAC Flag Register 2
[39] 0x0000 Reserved Register
[40] 0x0000 Reserved Register
[41] 0x0000 Reserved Register
[42] 0x0000 Sticky Flag Register 1
[43] 0x0000 Interrupt Flag Register 1
[44] 0x00C0 Sticky Flag Register 2
[45] 0x0000 Sticky Flag Register 3
[46] 0x00C0 Interrupt Flag Register 2
[47] 0x0000 Interrupt Flag Register 3
[48] 0x0000 INT1 Interrupt Control Register
[49] 0x0000 INT2 Interrupt Control Register
[50] 0x0000 Reserved Register
[51] 0x0000 Reserved Register
[52] 0x0000 GPIO/MFP5 Control Register
[53] 0x0012 DOUT/MFP2 Function Control Register
[54] 0x0002 DIN/MFP1 Function Control Register
[55] 0x0002 MISO/MFP4 Function Control Register
[56] 0x0002 SCLK/MFP3 Function Control Register
[57] 0x0000 Reserved Registers
[58] 0x0000 Reserved Registers
[59] 0x0000 Reserved Registers
[60] 0x0001 DAC Signal Processing Block Control Register
[61] 0x0001 ADC Signal Processing Block Control Register
[62] 0x0000 Reserved Register
[63] 0x00D4 DAC Channel Setup Register 1
[64] 0x0002 DAC Channel Setup Register 2
[65] 0x0000 Left DAC Channel Digital Volume Control Register
[66] 0x0000 Right DAC Channel Digital Volume Control Register
[67] 0x0000 Headset Detection Configuration Register
[68] 0x006F DRC Control Register 1
[69] 0x0038 DRC Control Register 2
[70] 0x0000 DRC Control Register 3
[71] 0x0000 Beep Generator Register 1
[72] 0x0000 Beep Generator Register 2
[73] 0x0000 Beep Generator Register 3
[74] 0x0000 Beep Generator Register 4
[75] 0x00EE Beep Generator Register 5
[76] 0x0010 Beep Generator Register 6
[77] 0x00D8 Beep Generator Register 7
[78] 0x007E Beep Generator Register 8
[79] 0x00E3 Beep Generator Register 9
[80] 0x0000 Reserved Register
[81] 0x00C0 ADC Channel Setup Register
[82] 0x0000 ADC Fine Gain Adjust Register
[83] 0x0000 Left ADC Channel Volume Control Register
[84] 0x0000 Right ADC Channel Volume Control Register
[85] 0x0000 ADC Phase Adjust Register
[86] 0x0000 Left Channel AGC Control Register 1
[87] 0x0000 Left Channel AGC Control Register 2
[88] 0x007F Left Channel AGC Control Register 3
[89] 0x0000 Left Channel AGC Control Register 4
[90] 0x0000 Left Channel AGC Control Register 5
[91] 0x0000 Left Channel AGC Control Register 6
[92] 0x0000 Left Channel AGC Control Register 7
[93] 0x0000 Left Channel AGC Control Register 8
[94] 0x0000 Right Channel AGC Control Register 1
[95] 0x0000 Right Channel AGC Control Register 2
[96] 0x007F Right Channel AGC Control Register 3
[97] 0x0000 Right Channel AGC Control Register 4
[98] 0x0000 Right Channel AGC Control Register 5
[99] 0x0000 Right Channel AGC Control Register 6
[100] 0x0000 Right Channel AGC Control Register 7
[101] 0x0000 Right Channel AGC Control Register 8
[102] 0x0000 DC Measurement Register 1
[103] 0x0000 DC Measurement Register 2
[104] 0x0000 Left Channel DC Measurement Output Register 1
[105] 0x0000 Left Channel DC Measurement Output Register 2
[106] 0x0000 Left Channel DC Measurement Output Register 3
[107] 0x0000 Right Channel DC Measurement Output Register 1
[108] 0x0000 Right Channel DC Measurement Output Register 2
[109] 0x0000 Right Channel DC Measurement Output Register 3
[110] 0x0000 Reserved Register
[111] 0x0000 Reserved Register
[112] 0x0000 Reserved Register
[113] 0x0000 Reserved Register
[114] 0x0000 Reserved Register
[115] 0x0000 Reserved Register
[116] 0x0000 Reserved Register
[117] 0x0000 Reserved Register
[118] 0x0000 Reserved Register
[119] 0x0000 Reserved Register
[120] 0x0000 Reserved Register
[121] 0x0000 Reserved Register
[122] 0x0000 Reserved Register
[123] 0x0000 Reserved Register
[124] 0x0000 Reserved Register
[125] 0x0000 Reserved Register
[126] 0x0000 Reserved Register
[127] 0x0000 Reserved Register
page1
[0] 0x0001 Page Select Register
[1] 0x0008 Power Configuration Register
[2] 0x0001 LDO Control Register
[3] 0x0000 Playback Configuration Register 1
[4] 0x0000 Playback Configuration Register 2
[5] 0x0000 Reserved Register
[6] 0x0000 Reserved Register
[7] 0x0000 Reserved Register
[8] 0x0000 Reserved Register
[9] 0x0030 Output Driver Power Control Register
[10] 0x0000 Common Mode Control Register
[11] 0x0010 Over Current Protection Configuration Register
[12] 0x0008 HPL Routing Selection Register
[13] 0x0008 HPR Routing Selection Register
[14] 0x0000 LOL Routing Selection Register
[15] 0x0000 LOR Routing Selection Register
[16] 0x0000 HPL Driver Gain Setting Register
[17] 0x0000 HPR Driver Gain Setting Register
[18] 0x0040 LOL Driver Gain Setting Register
[19] 0x0040 LOR Driver Gain Setting Register
[20] 0x0000 Headphone Driver Startup Control Register
[21] 0x0000 Reserved Register
[22] 0x0000 IN1L to HPL Volume Control Register
[23] 0x0000 IN1R to HPR Volume Control Register
[24] 0x0000 Mixer Amplifier Left Volume Control Register
[25] 0x0000 Mixer Amplifier Right Volume Control Register
[26] 0x0000 Reserved Register
[27] 0x0000 Reserved Register
[28] 0x0000 Reserved Register
[29] 0x0000 Reserved Register
[30] 0x0000 Reserved Register
[31] 0x0000 Reserved Register
[32] 0x0000 Reserved Register
[33] 0x0000 Reserved Register
[34] 0x0000 Reserved Register
[35] 0x0000 Reserved Register
[36] 0x0000 Reserved Register
[37] 0x0000 Reserved Register
[38] 0x0000 Reserved Register
[39] 0x0000 Reserved Register
[40] 0x0000 Reserved Register
[41] 0x0000 Reserved Register
[42] 0x0000 Reserved Register
[43] 0x0000 Reserved Register
[44] 0x0000 Reserved Register
[45] 0x0000 Reserved Register
[46] 0x0000 Reserved Register
[47] 0x0000 Reserved Register
[48] 0x0000 Reserved Register
[49] 0x0000 Reserved Register
[50] 0x0000 Reserved Register
[51] 0x0040 MICBIAS Configuration Register
[52] 0x0080 Left MICPGA Positive Terminal Input Routing Configuration Register
[53] 0x0000 Reserved Register
[54] 0x0080 Left MICPGA Negative Terminal Input Routing Configuration Register
[55] 0x0080 Right MICPGA Positive Terminal Input Routing Configuration Register
[56] 0x0000 Reserved Register
[57] 0x0080 Right MICPGA Negative Terminal Input Routing Configuration Register
[58] 0x0000 Floating Input Configuration Register
[59] 0x000C Left MICPGA Volume Control Register
[60] 0x000C Right MICPGA Volume Control Register
[61] 0x0000 ADC Power Tune Configuration Register
[62] 0x0003 ADC Analog Volume Control Flag Register
[63] 0x00C0 DAC Analog Gain Control Flag Register
[64] 0x0000 Reserved Register
[65] 0x0000 Reserved Register
[66] 0x0000 Reserved Register
[67] 0x0000 Reserved Register
[68] 0x0000 Reserved Register
[69] 0x0000 Reserved Register
[70] 0x0000 Reserved Register
[71] 0x0000 Analog Input Quick Charging Configuration Register
[72] 0x0000 Reserved Register
[73] 0x0000 Reserved Register
[74] 0x0000 Reserved Register
[75] 0x0000 Reserved Register
[76] 0x0000 Reserved Register
[77] 0x0000 Reserved Register
[78] 0x0000 Reserved Register
[79] 0x0000 Reserved Register
[80] 0x0000 Reserved Register
[81] 0x0000 Reserved Register
[82] 0x0000 Reserved Register
[83] 0x0000 Reserved Register
[84] 0x0000 Reserved Register
[85] 0x0000 Reserved Register
[86] 0x0000 Reserved Register
[87] 0x0000 Reserved Register
[88] 0x0000 Reserved Register
[89] 0x0000 Reserved Register
[90] 0x0000 Reserved Register
[91] 0x0000 Reserved Register
[92] 0x0000 Reserved Register
[93] 0x0000 Reserved Register
[94] 0x0000 Reserved Register
[95] 0x0000 Reserved Register
[96] 0x0000 Reserved Register
[97] 0x0000 Reserved Register
[98] 0x0000 Reserved Register
[99] 0x0000 Reserved Register
[100] 0x0000 Reserved Register
[101] 0x0000 Reserved Register
[102] 0x0000 Reserved Register
[103] 0x0000 Reserved Register
[104] 0x0000 Reserved Register
[105] 0x0000 Reserved Register
[106] 0x0000 Reserved Register
[107] 0x0000 Reserved Register
[108] 0x0000 Reserved Register
[109] 0x0000 Reserved Register
[110] 0x0000 Reserved Register
[111] 0x0000 Reserved Register
[112] 0x0000 Reserved Register
[113] 0x0000 Reserved Register
[114] 0x0000 Reserved Register
[115] 0x0000 Reserved Register
[116] 0x0000 Reserved Register
[117] 0x0000 Reserved Register
[118] 0x0000 Reserved Register
[119] 0x0000 Reserved Register
[120] 0x0000 Reserved Register
[121] 0x0000 Reserved Register
[122] 0x0000 Reserved Register
[123] 0x0005 Reference Power-up Configuration Register
[124] 0x0000 Reserved Register
[125] 0x0000 Reserved Register
[126] 0x0000 Reserved Register
[127] 0x0000 Reserved Register
  • Are you sure that the delay is through the codec and not through the rest of the system? Please explain the signal path in more detail.

  • Thank you for your quick reply!

    Yes, the delay is through the IN1_L/IN1_R to HPL/HPR path of the codec .  The board has an analog bypass output (circumventing the codec entirely, taking the same signal presented to the IN_L/IN1R pins) which can be used to connect aux equipment.  Monitoring with headphones there results in no confusing echo.

  • Hi!  

    I'm following up, hoping to get help from TI support on this ... Thanks!

  • Oh, and please ignore these addresses.  Here is what the new registers read.  I originally cut/pasted this register list from a register readout of a board that had an error (connection between analog/digital grounds missing).

    Page  Addr   Old     New
    0     44     0x00C0  0x0000
    0     46    
    0x00C0  0x0000

    Anyhow, looking forward to TIs help with this headphone delay issue, resulting in an annoying user echo experience ...

  • Attached is an audio file, so you can hear for yourself what I am talking about.

    There is a microphone plugged into our board.  The signal goes through an op-amp preamplifier.  Then, the signal goes into IN1_L of the codec, and comes out HPL to headphones.  I have rested the headphones on the table, and have the mic of an external recorder next to the earcup.  The recorder mic picks up ambient (my direct voice) as well as the codec headphone output.  Playing the attached recording, you can hear the annoying echo experienced by the user (direct voice plus delayed voice through the codec).  This is a big problem for us.

    We are certain that the delay path is though the codec.  When we take a signal directly from the opamp output (which subsequently feeds the codec IN1_L) and use an analog headphone amplifier, there is no echo/delay.  I have not attached an audio file of this, as it is not instructive.

    TI must have some test bench of this codec.  Do you experience the same delay/echo?  What programming settings are you using?  If you use the register settings we are using, do you experience this delay/echo?

    Thank you for your help ...

  • and other TI apps people,

    Are there any other questions that you would like me to answer, to convince you that this delay is through the TI codec?

    I have provided an audio file, so you can hear the delay for yourself, and experience the very distracting 'echo' effect that is experienced by the user.  Have you listened to this?

    Please help ...

  • Don Dapkus,

    I've seen this video of yours:

    http://www.youtube.com/watch?v=iJyWx57vCX0

    For me, so far, E2E has not been a success story. It's great to have a searchable database.  I have searched, to no avail.  Now, this issue requires the attention of your apps team.  Please tell me how I can get a response to this matter?  Do you need more clarification?  Ask me more questions and I'm happy to oblige?  I've got to believe that there must be some registers that I have programmed that are not optimized, resulting in this delay.  Or, is there something fundamentally wrong with this chip and nobody at TI wants to talk about it?  That doesn't help me.  If there's something fundamentally wrong, then set me free and let me know, so I can go design in a Cirrus (or something else) chip.  But, right now, we've got this chip designed on our board, and it's just not an acceptable user experience with this delay.

    Please guide me on what I need to do to get a response from you and your app team ... please help!