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.

TLV320AIC3106: Noise issue while Audio Recording

Part Number: TLV320AIC3106

Hi,

We have designed a custom board based on IMX8QM SoC and we are using TLV320AIC3106 as our audio codec and added configuration in DTS. We were able to playback audio files without any noise. But while recording the audio, we hear a constant background noise. We are connecting the Microphone pins to the LINE2L.

Please see the dts nodes below:

sound-tlv320 {
compatible = "simple-audio-card";
simple-audio-card,name = "TI-TLV320AIC3x-Card";
simple-audio-card,format = "i2s";
simple-audio-card,bitclock-master = <&codec_dai>;
simple-audio-card,frame-master = <&codec_dai>;
simple-audio-card,widgets =
"Speaker","Speaker",
"Microphone","Microphone";
simple-audio-card,routing =
"LINE2L","Microphone",
"Speaker", "RLOUT",
"Speaker", "LLOUT";
cpu_dai: simple-audio-card,cpu {
sound-dai = <&sai1>;
};
codec_dai: simple-audio-card,codec {
sound-dai = <&tlv320aic3106>;
clocks = <&mclkout0_lpcg 0>;
};
};
tlv320aic3106: codec@19 {
compatible = "ti,tlv320aic3106";
reg = <0x19>;
#sound-dai-cells = <0>;
DRVDD-supply = <&reg_3p3v>;
AVDD-supply = <&reg_3p3v>;
IOVDD-supply = <&reg_1p8v>;
DVDD-supply = <&reg_1p8v>;
ai3x-ocmv = <0>;
ai3x-micbias-vg = <3>;
};
 A sample recorded .wav file is attached . Could you please help by suggesting the reasons for the noise and possible solutions to remove it ?
  • Hi,

    Since playback is good try with different input path to isolate, normally it's from input/board.

    Here is an apps. note which talks about common noise issue in audio system.

    https://www.ti.com/lit/an/slaa749/slaa749.pdf?ts=1640289904614&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTLV320AIC3106

    Regards,

    Peter

  • Hi,

    Thank you @pdjuandi for your support.

    Currently we are only having Line2L routed to microphone in our hardware. So we are unable to check with any other input path. 

    We referred the document you shared but couldn't find anything specific to the issue we are facing.

    One thing we observed is that, the microphone works only when the MICBIAS voltage is 2.5V. For 2V and AVDD, the microphone does not record anything. Does this have to do anything with the noise issue we are currently facing?

    We are getting the background noise even when we are doing a dummy recording without connecting the microphone.

    Please suggest any other pointers that will help us debug this issue?   

  • Hi,

    Peter will be on vacation until Jan 3rd. We will be able to support your question once we are back in the office.

    Regards,

    Arthur

  • Hi,

    Happy New Year

    Could you please update on my query when you are back?

    Thank you

  • Hi,

    Section 2.1 and 2.3 might be something to consider in your system and also if you can configure your MIC as differential as mentioned here.

    https://e2e.ti.com/support/audio-group/audio/f/audio-forum/773099/faq-tlv320aic3254-should-i-connect-a-capacitor-to-a-micbias-pin-what-should-i-do-about-noise?tisearch=e2e-sitesearch&keymatch=MICBIAS#

    What if you send in 1KHz tone without the MIC? 

    Send me the i2cdump.

    Regards,

    Peter

  • Hi,

    Thank you for your support.

    Please find the i2cdump values below.

    0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
    00: 00 00 00 10 04 00 00 00 00 00 00 01 00 00 00 80 ...??......?...?
    10: 80 ff ff 78 78 78 78 78 78 06 00 fe 00 00 fe 00 ?..xxxxxx?.?..?.
    20: 00 00 00 00 00 00 00 00 00 00 00 80 80 00 00 00 ...........??...
    30: 00 00 00 04 00 00 00 00 00 00 04 00 00 00 00 00 ...?......?.....
    40: 00 04 00 00 00 00 00 00 04 00 00 00 00 00 00 00 .?......?.......
    50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    60: 00 00 00 00 00 40 02 00 00 00 00 00 00 00 00 00 .....@?.........
    70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    80: 00 00 00 10 04 00 00 00 00 00 00 01 00 00 00 80 ...??......?...?
    90: 80 ff ff 78 78 78 78 78 78 06 00 fe 00 00 fe 00 ?..xxxxxx?.?..?.
    a0: 00 00 00 00 00 00 00 00 00 00 00 80 80 00 00 00 ...........??...
    b0: 00 00 00 04 00 00 00 00 00 00 04 00 00 00 00 00 ...?......?.....
    c0: 00 04 00 00 00 00 00 00 04 00 00 00 00 00 00 00 .?......?.......
    d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    e0: 00 00 00 00 00 40 02 00 00 00 00 00 00 00 00 00 .....@?.........
    f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

    I also sent a 1 KHz signal through the line after disabling the MICBIAS voltage. Recorded file is clear and doesn't have any noise.I have attached the recorded audio.

    Please note that we use fully differential Mic configuration in our system. I have also attached schematics snippet for your reference.

  • Hi,

    I don't think your i2cdump is correct, the ADC path is not powered and no input is connected.

    I don't know if the recorded 1KHz is the same tone you hear, though the 1KHz tone is there but there's some white noise. 

    If it's clear on your side at least the settings are correct, the noise is from your system.

    Regards,

    Peter

  • Hi,

    Sorry for the delay.

    Please find the i2cdump while recording. Can you please verify whether the values are correct?

    :~# i2cdump -f -y 2 0x19
       0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: 00 00 00 90 1c 36 b0 0a c0 00 00 81 f0 00 00 20    ...??6???..??..
    10: 20 ff ff 7c 80 78 78 78 78 86 80 fe 00 80 fe 00     ..|?xxxx???.??.
    20: 5d 77 00 00 41 00 00 00 00 00 b0 a1 a1 2c 30 ae    ]w..A.....???,0?
    30: 08 01 08 0c 30 2a b0 00 36 00 0c 00 00 00 2c 30    ????0*?.6.?...,0
    40: 2e 0c 00 03 00 30 2a 30 0c 0d 00 76 0d 00 76 08    .?.?.0*0??.v?.v?
    50: 2f 25 af 00 34 14 68 0d 06 a8 2f 25 2f 68 00 00    /%?.4?h???/%/h..
    60: 00 00 00 00 00 41 02 00 00 00 00 00 00 00 00 00    .....A?.........
    70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    80: 00 00 00 90 1c 36 b0 0a c0 00 00 81 f0 00 00 20    ...??6???..??..
    90: 20 ff ff 7c 80 78 78 78 78 86 80 fe 00 80 fe 00     ..|?xxxx???.??.
    a0: 77 77 00 00 51 00 00 00 00 00 b0 a1 a1 2c 30 ae    ww..Q.....???,0?
    b0: 08 01 08 0c 30 2a b0 00 36 00 0c 00 00 00 2c 30    ????0*?.6.?...,0
    c0: 2e 0c 00 03 00 30 2a 30 0c 0d 00 76 0d 00 76 08    .?.?.0*0??.v?.v?
    d0: 2f 25 af 00 34 14 68 0d 06 a8 2f 25 2f 68 00 00    /%?.4?h???/%/h..
    e0: 00 00 00 00 00 41 02 00 00 00 00 00 00 00 00 00    .....A?.........
    f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    Thanks and regards,
    Nandith
  • Hi,

    Your i2cdump shows the following:

    • PLL enabled with Q=2, P=8, R=1, J=28, D=3500,
    • Master mode, I2S, 16 bit

    What's your MCLK, WCLK and BCLK frequency?

    Regards,

    Peter

  • Hi,

    We have configured MCLK in our dts (codec dai node) as below.

    codec_dai: simple-audio-card,codec {
    sound-dai = <&tlv320aic3106>;
    clocks = <&mclkout0_lpcg 0>;
    We haven't specified any frequency values for the node.
    Should we configure BCLK and WCLK in the dts?
    We are using the iMX8QM SoC with 24 MHz crystal.
    Could you please clarify how to configure the clock values?
  • Hi,

    You can use the PLL calculator from this link to determine the PLL ratio, use the AIC310x tab.

    https://www.ti.com/product/TLV320AIC3101?keyMatch=TLV320AIC3101&tisearch=search-everything&usecase=GPN

    Once you have the right PLL ratio for your sampling, you can set the register accordingly or you can run without enabling the PLL.

    For example using PLL to get 48KHz Fs, the following is the MCLK and ratio with PLL enabled. Make sure you meet the PLL constraints.

    Or without PLL:

  • Hi,

    We gave the MCLK value as 12 MHz and set the register values with PLL and the noise issue still persists. Please find the dump.

    No size specified (using byte-data access)
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: 00 00 00 90 20 00 00 0a c0 00 00 81 f0 00 00 20    ...??6???..??..
    10: 20 ff ff 7c 80 78 78 78 78 86 80 fe 00 80 fe 00     ..|?xxxx???.??.
    20: 77 77 00 00 51 00 00 00 00 00 b0 a1 a1 2c 30 ae    ww..Q.....???,0?
    30: 08 01 08 0c 30 2a b0 00 36 00 0c 00 00 00 2c 30    ????0*?.6.?...,0
    40: 2e 0c 00 03 00 30 2a 30 0c 0d 00 76 0d 00 76 08    .?.?.0*0??.v?.v?
    50: 2f 25 af 00 34 14 68 0d 06 a8 2f 25 2f 68 00 00    /%?.4?h???/%/h..
    60: 00 00 00 00 00 41 02 00 00 00 00 00 00 00 00 00    .....A?.........
    70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    80: 00 00 00 90 1c 36 b0 0a c0 00 00 01 f0 00 00 20    ...??6???..??..
    90: 20 ff ff 7c 80 78 78 78 78 86 80 fe 00 80 fe 00     ..|?xxxx???.??.
    a0: 77 77 00 00 51 00 00 00 00 00 b0 a1 a1 2c 30 ae    ww..Q.....???,0?
    b0: 08 01 08 0c 30 2a b0 00 36 00 0c 00 00 00 2c 30    ????0*?.6.?...,0
    c0: 2e 0c 00 03 00 30 2a 30 0c 0d 00 76 0d 00 76 08    .?.?.0*0??.v?.v?
    d0: 2f 25 af 00 34 14 68 0d 06 a8 2f 25 2f 68 00 00    /%?.4?h???/%/h..
    e0: 00 00 00 00 00 41 02 00 00 00 00 00 00 00 00 00    .....A?.........
    f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................

  • See comment below from your settings:

    • Your PLL setting is not correct. Register 4 is 0x20 which gives J 000000b, not a used case. Please send me a picture of your PLL clock tree.
    • Suggest ADC gain start with 0dB instead of 16dB, see register 15 and 16.
    • input path you use LINE2L DIFF to Left ADC only and Left ADC is powered up. 
    • Do you need AGC? Suggest disable AGC for now and visit later once it's working as your setting does not look it's thought through.
    • Try the above since you are only checking the recording we don't need the DAC side for now.
    • Please check your WCLK and BCLK with the scope to make sure it's matching your format and these are coming out of codec. 

    Regards.