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.

TLV320AIC3007: Echo / feedback issue

Part Number: TLV320AIC3007

Hi.

We are using the TLV230AIC3007 in a design and have a echo or feedback issue we cannot seem to resolve.

We are using wired earphones (Android compatible) connected to the MIC3R input. The earpieces are being driven by the HPOUT drivers in a pseudo-differential manner (capless) exactly as per page 44 of the datasheet.

The MCU connected to the codec is an M4 so the code is a simple C test application that captures the digital audio, delays it by 1s and plays it back over the earphones. 

The audio settings are:

Codec is the audio master

Format is I2S

16bit audio

MCLK pin driven from 16MHz clock output from the MCU.

PLL setup for 48kHz

ADC & DAC is 16kHz sample rate (Fsref/3)

We isolated the microphone from the earpieces, but keep getting the echo / feedback that decay fairly quickly.

The routing in the codec is:

MIC3R to PGA_L

ADC_L is active

No filters are active

DINL routed to DAC_L (with no digital processing or 3D processing active)

DAC_L1 routed to HPLOUT and HPROUT (via analog mixers)

VCOM set to VCM

All gains are set to 0dB

The audio (ignoring the echo) sounds really good and there does not seem to be any other issues with it at all.

Can you please suggest anything that I may look at to help resolve this issue?

Thanks

  • Am i correct in assuming that for this test you are not involving the M4?

    The signal path is  MIC-ADC-DAC-Headphone.

    Could there be a layout issue in your setup such that the Large signal Headphone currents are somehow getting into the Mic input circuit.

    Does the oscillation go down if you turn down mic gain or Headphone Gain?

    I would suggest to remove the Mic and give an Input with a signal generator so that the possibility of sound feedback be eliminated. Check the headphone output over 20Hz-15k range to  see if audio is normal and free from any oscillation.

    Another check may be to  keep the mic and replace headphone  with 16 or 32 ohm resistor and see output on an oscilloscope with  voice impulses to the Mic.

  • Thanks for the reply and suggestions.

    I tested with both the M4 involved and without.

    With the M4 in the loop the echo/feedback is easily detectable due to the induced delay.

    Without the M4, the path was MIC-PGA-Headphone, but I could not perceive any echo (but this might be due to the almost 0 delay of the audio within the system.)

    I will test by using your suggested path MIC-ADC-DAC-Headphone and use a signal gen as the input source and oscilloscope at the output.

  • I did some more tests with different configurations.

    I routed the mic directly to the HP drivers and in this configuration I cannot detect an echo / feedback (by listening and by measuring with an oscilloscope.

    I then set the routing up as it would be in the final application:

    MIC3R - L_PGA - LADC - DOUT (I2S) - M4 (M4 buffers the audio for about 500ms and sends out to codec) - LDAC - HPLOUT & HPROUT (via analog mixers) since I'm using mono audio and the RDAC is used for the SPK amp.

    With this setup I used an oscilloscope to generate a single pulse and was able to see that there is an echo or feedback at about 1s (which makes sense since I'm delaying the audio by 500ms).

    I then modded a headset by removing the MIC and using a separate MIC connected to MIC3R (the - of the MIC was tied to system GND and not the HPCOM (that is set to VCM mode @ 1.5V).

    This did not yield any better results.

    I modded further to change the headset to be AC coupled (disconnected the HPCOM output) and connecting the headset to GND.

    This also did not work.

    I'm now a bit out of ideas and wonder if the issue is not maybe to do with the digital interface setup on the codec side.

    I have a 16MHz clk fed into the MCLK pin and the PLL setup to generate a FSREF of 48kHz. The DAC and ADC is 16kHz (fsref/3). Setting the ADC and DAC to 8kHz also did not yield any improvements.

  • I did some further testing.

    I set the codec to route the MIC directly to the output, but in this mode I could not hear or measure any echo or feedback - I suspect due to the fact that the delay through the codec is almost nothing.

    I then changed the setup to again use the M4:

    MIC3R - L_PGA - LADC - DOUT (I2S) - M4 (M4 buffers the audio and plays it back to the codec) - LDAC - HPOUTL & HPOUTR (analog mixer) (the RDAC is used for a SPK driven by the internal amp but disabled for tests).

    I then modified the headset and removed the MIC and used a function generator to play a short burst into the MIC input. With this setup I can still see the echo on the scope as well as hear it. The function gen - terminal was connected to system GND.

    I then used a separate mic (- also connected to the system GND) and still no improvement.

    As a last step I then made the headset AC coupled (HPCOM disconnected) and the headset GND tied to the system GND. This also made no improvement.

    So I'm at a loss what to test next.

    Wondering if it would be the digital setup or clocking of the codec.

    I'm feeding a 16MHz clock into the MCLK pin and using the PLL to generate a 48kHz clock and then setting ADC and DAC to fsref/3.

    Also using standard I2S with no changes.

  • I am thinking that what you are experiencing is an Echo not an unwanted feedback.

    In the case of a MIC-ADC-DAC-Speaker you do not hear an echo but if you bring the Mic and the speaker very close together it might be that the speaker goes into an oscillation and creates a kind of howling sound . That is because the small time delay induced by the propogation of sound from the speaker to the Mic will create at some frequency a phase shift of 180 degree that then might make a phase shift of 360 degree at that frequency if the signal path is inverting.

    In your case you have created an echo generator by the Time Delay of 0.5 second. When you create an impulse, it reaches the speaker 0.5 seconds later, attenuates a bit to the Microphome and 0.5 seconds later creates a reduced replica on the speaker giving a time delay of 1 second.

    this theory 'comes into question' by your test where you remove the mic and connect a signal generator and hear the echo.  What's picking up the sound if there is no mic? Could it be a component displaying Microphony? I would suggest the following:

    1. from the signal generator to GND connect a 100 ohm resistor. Take a Coupling capacitor from this point to the ADC  input. This reduces the impedance at the input making it harder for feedback coming into input from making a big voltage.

    2. Remove the speaker and see on an oscilloscope if the echo goes away. Then check with a Load resistor instead of the speaker. Do you see the echo. If you do with a resistor then its a Layout issue due to high current coupling into input stages. if you see echo with load resistor then return the end connecting to ground direct on the ground of the Power supply entering the Board.

    3.if its possible increase the delay to about 2 seconds . This can give you time to physically short the input with a wire as soon as the impulse is sent.