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.

TAS5538 noise sounded like boiled water

Other Parts Discussed in Thread: TAS5538, TAS5342

Attachment is the schematic of TAS5538.

Sch_TAS5538.pdf

The customer finds when EQ is used, there would be a noise sounded like boiled water.

When EQ is disabled, the noise would disappear.

The attached excel file is the EQ setting.

V1 EQ-PPA6-2016-10-18.xls

The customer has spent a lot of efforts to do that, but it still could not be solved.

Any suggestion?

Thank you.

  • Robin,

    Thanks for contacting us. I am Adam Sidelsky, one of the Audio Applications engineers.

    Let me look into this and get back to you.

    Regards,

    -Adam

  • Robin,

    Could you please provide your register settings? I see your EQ settings in the Excel file but I want to make sure we capture all your settings.

    If you also have a register table for the case where the problem does not exist, kindly provide that as well.

    Regards,

    -Adam
  • Hi Adam,

    Here is the code, thanks for your help.
    void Tas5538_Init (void)
    {

    TAS5538_reset ();

    AMP_Write_Byte (0x12, 0);
    AMP_Write_Byte (0x0f, 0xff);
    AMP_Write_Byte (0x03, 0xA0);
    AMP_Read_Buf (0x03, read_data, 1);
    SYS_DBG ("reg0x03:%d\r\n", read_data[0]);
    AMP_Write_Byte (0x04, 0x12);
    AMP_Read_Buf (0x04, read_data, 1);
    SYS_DBG ("reg0x04:%d\r\n", read_data[0]);

    /*********for disable 5558 ASRC ****************/
    #if 1
    read_data[3] = 0x55;
    read_data[2] = 0x50;//bypass asrc
    read_data[1] = 0x01;
    read_data[0] = 0x00;

    AMP_Write_Buf (0xC4,(unsigned char *)read_data,4);
    #endif
    /**********end******************************/
    //Input mix
    Channel_Set ();

    /**********************channel4 EQ setting*********************************/
    AMP_Write_Buf (0x66, (unsigned char *) R66_DATA, 20); //de Ch8 BQ1 eq for sub
    AMP_Write_Buf (0x67, (unsigned char *) R67_DATA, 20); //de Ch8 BQ2
    AMP_Write_Buf (0x68, (unsigned char *) R68_DATA, 20); //de Ch8 BQ1 eq for sub
    AMP_Write_Buf (0x69, (unsigned char *) R69_DATA, 20); //de Ch8 BQ2
    AMP_Write_Buf (0x6a, (unsigned char *) R6a_DATA, 20); //de Ch8 BQ1 eq for sub
    AMP_Write_Buf (0x6b, (unsigned char *) R6b_DATA, 20); //de Ch8 BQ2
    /**********************channel8 EQ setting*********************************/
    AMP_Write_Buf (0x82, (unsigned char *) R82_DATA, 20); //de Ch8 BQ1 eq for sub
    AMP_Write_Buf (0x83, (unsigned char *) R83_DATA, 20); //de Ch8 BQ2
    AMP_Write_Buf (0x84, (unsigned char *) R84_DATA, 20); //de Ch8 BQ3
    AMP_Write_Buf (0x85, (unsigned char *) R85_DATA, 20); //de Ch8 BQ4
    //AMP_Write_Buf(0x86,(unsigned char *)R86_DATA,20);//de Ch8 BQ4
    //AMP_Write_Buf(0x87,(unsigned char *)R87_DATA,20);//de Ch8 BQ4
    #if 1
    /* */
    //DRC enable . disable
    AMP_Write_Buf(0x96,(unsigned char *)R96_DATA,4);//de DRC1 Ctrl Ch1-Ch7 (No, Pre, Post)
    AMP_Write_Buf (0x97, (unsigned char *) R97_DATA, 4); //de DRC2 Ctrl Ch8 (No, Pre, Post)

    //DRC1 pwm1 for tewtter
    AMP_Write_Buf (0x98, (unsigned char *) R9d_DATA, 8); //de DRC1 Energy, 1-Energy
    AMP_Write_Buf (0x99, (unsigned char *) R9e_DATA_1, 8); //de DRC1 Thresh T1, T2
    AMP_Write_Buf (0x9a, (unsigned char *) R9f_DATA, 12); //de DRC1 Slope k0, k1, k2
    AMP_Write_Buf (0x9b, (unsigned char *) Ra0_DATA, 8); //de DRC1 Offset O1, O2
    AMP_Write_Buf (0x9c, (unsigned char *) Ra1_DATA, 16); //de DRC1 Attack, 1-Attack, Delay, 1-Delay

    /**/
    //DRC2 pwm4 for sub
    AMP_Write_Buf (0x9d, (unsigned char *) R9d_DATA, 8); //de DRC2 Energy, 1-Energy
    AMP_Write_Buf (0x9e, (unsigned char *) R9e_DATA_2, 8); //de DRC2 Thresh T1, T2
    AMP_Write_Buf (0x9f, (unsigned char *) R9f_DATA, 12); //de DRC2 Slope k0, k1, k2
    AMP_Write_Buf (0xa0, (unsigned char *) Ra0_DATA, 8); //de DRC2 Offset O1, O2
    AMP_Write_Buf (0xa1, (unsigned char *) Ra1_DATA, 16); //de DRC2 Attack, 1-Attack, Delay, 1-Delay

    //DRC Bypass
    AMP_Write_Buf (0xa2, (unsigned char *) Ra2_DATA, 8); //de DRC1 Ch1 Bypass/Inline
    AMP_Write_Buf (0xa3, (unsigned char *) Ra3_DATA, 8); //de DRC1 Ch2 Bypass/Inline
    AMP_Write_Buf (0xa5, (unsigned char *) Ra8_DATA, 8); //de DRC1 Ch4 Bypass/Inline
    AMP_Write_Buf (0xa9, (unsigned char *) Ra9_DATA, 8); //de DRC2 Ch8 Bypass/Inline

    #endif
    //volume

    AMP_Write_Buf (0xd9, (unsigned char *) Rd9_DATA, 4);
    Volume_Set ();

    AMP_Write_Byte (0x0F, 0x00);

    SYS_DBG ("tas5538 init finished!\r\n");
    }
  • Hi Adam,
    Any progress?
    Thank you.
    Robin
  • Robin,

    Looking at your register table is very difficult. Please provide the register Writes only and in the following format:

    Register address 1, Register Data

    Register address 2, Register Data

    Register address 3, Register Data

    Register address 4, Register Data

    etc...

    You also mention many register writes with no data, only the variable name which the data is stored in such as: 

    AMP_Write_Buf (0x66, (unsigned char *) R66_DATA, 20); //de Ch8 BQ1 eq for sub

    I do not know what "R66_DATA" is.

    Regards,

    -Adam

  • Hi Adam,

    Below is the register setting related with EQ.
    When customer deletes these settings, the noise would disappear.
    Thank you.
    Robin

    Register address Register Data
    0x66 static const uchar R66_DATA[20] = { 0x00, 0x7F, 0x86, 0xE2, 0x0F, 0x00, 0xF2, 0x3B, 0x00, 0x7F, 0x86, 0xE2, 0x00, 0xFF, 0x0D, 0x52, 0x0F, 0x80, 0xF1, 0xC8};
    0x67 static const uchar R67_DATA[20] = { 0x00, 0x7F, 0x86, 0xE2, 0x0F, 0x00, 0xF2, 0x3B, 0x00, 0x7F, 0x86, 0xE2, 0x00, 0xFF, 0x0D, 0x52, 0x0F, 0x80, 0xF1, 0xC8};
    0x68 static const uchar R68_DATA[20] = { 0x00, 0x05, 0xD4, 0x8B, 0x00, 0x0B, 0xA9, 0x17, 0x00, 0x05, 0xD4, 0x8B, 0x00, 0xAB, 0x1F, 0x9C, 0x0F, 0xBD, 0x8E, 0x35};
    0x69 static const uchar R69_DATA[20] = { 0x00, 0x05, 0xD4, 0x8B, 0x00, 0x0B, 0xA9, 0x17, 0x00, 0x05, 0xD4, 0x8B, 0x00, 0xAB, 0x1F, 0x9C, 0x0F, 0xBD, 0x8E, 0x35};
    0x6a static const uchar R6a_DATA[20] = { 0x00, 0x80, 0x38, 0x48, 0x0F, 0x00, 0xC3, 0x5B, 0x00, 0x7F, 0x07, 0x43, 0x00, 0xFF, 0x3C, 0xA5, 0x0F, 0x80, 0xC0, 0x75};
    0x6b static const uchar R6b_DATA[20] = { 0x00, 0x7F, 0xE7, 0x7D, 0x0F, 0x01, 0x3F, 0x14, 0x00, 0x7E, 0xE3, 0x76, 0x00, 0xFE, 0xC0, 0xEC, 0x0F, 0x81, 0x35, 0x0C};
    0x6c static const uchar R6c_DATA[20] = { 0x00, 0x80, 0x63, 0x73, 0x0F, 0x04, 0x62, 0xD3, 0x00, 0x7B, 0x7D, 0x63, 0x00, 0xFB, 0x9D, 0x2D, 0x0F, 0x84, 0x1F, 0x29};
  • Hi Adam,

    Below is other register settings. Please help review.
    Thank you.
    Robin

    Register address Register Data
    0x82 static const uchar R82_DATA[20] = { 0x00, 0x5C, 0xC9, 0x52, 0x0F, 0x46, 0x6D, 0x5C, 0x00, 0x5C, 0xC9, 0x52, 0x00, 0xAD, 0xBC, 0x01, 0x0F, 0xBA, 0x96, 0xB9};
    0x83 static const uchar R83_DATA[20] = { 0x00, 0x5C, 0xC9, 0x52, 0x0F, 0x46, 0x6D, 0x5C, 0x00, 0x5C, 0xC9, 0x52, 0x00, 0xAD, 0xBC, 0x01, 0x0F, 0xBA, 0x96, 0xB9};

    0x96 static const uchar R96_DATA[4] = { 0x00, 0x00, 0x00, 0x80 };
    0x97 static const uchar R97_DATA[4] = { 0x00, 0x00, 0x00, 0x02 };

    0x98 static const uchar R9d_DATA[8] = { 0x00, 0x00, 0x88, 0x3f,0x00, 0x7f, 0x77, 0xc0};
    0x99 static const uchar R9e_DATA_1[8] = { 0x0F, 0x1D, 0x61, 0xc0,0x2,0x6a,0x22,0x22};
    0x9a static const uchar R9f_DATA[12] = { 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00,0x0f, 0x81, 0x47, 0xaf};
    0x9b static const uchar Ra0_DATA[8] = { 0x02, 0x00, 0x00, 0x00,0x02, 0x00, 0x00, 0x00};
    0x9c static const uchar Ra1_DATA[16] ={ 0x00, 0x00, 0x22, 0x1d,0x00, 0x7f, 0xdd, 0xe2,0x00, 0x00, 0x06, 0xd3,0x00, 0x7f, 0xf9, 0x2c};

    0x9d static const uchar R9d_DATA[8] = { 0x00, 0x00, 0x88, 0x3f,0x00, 0x7f, 0x77, 0xc0};
    0x9e static const uchar R9e_DATA_2[8] = { 0x0F, 0x1D, 0x61, 0xc0,0x02, 0x61, 0x00, 0x00};
    0x9f static const uchar R9f_DATA[12] = { 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00,0x0f, 0x81, 0x47, 0xaf};
    0xa0 static const uchar Ra0_DATA[8] = { 0x02, 0x00, 0x00, 0x00,0x02, 0x00, 0x00, 0x00};
    0xa1 static const uchar Ra1_DATA[16] ={ 0x00, 0x00, 0x22, 0x1d,0x00, 0x7f, 0xdd, 0xe2,0x00, 0x00, 0x06, 0xd3,0x00, 0x7f, 0xf9, 0x2c};

    0xa2 static const uchar Ra2_DATA[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00 };
    0xa3 static const uchar Ra3_DATA[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00 };
    0xa5 static const uchar Ra8_DATA[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00 };
    0xa9 static const uchar Ra9_DATA[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00 };

    0xd9 static const uchar Rd9_DATA[4] = { 0x00, 0x00, 0x00, 0x01 };
  • Hi Adam,

    Any progress for this issue?
    Thank you.

    Robin
  • Robin,

    Sorry for the delay, let me check and get back to you.

    Regards,

    -Adam

  • Hi Adam,
    Any suggestion?Thanks.
    Robin
  • Robin,

    I tried the setup on my bench with the exact same register settings included in both of your posts. I do not hear the same Boiling Water Noise. The output sounds normal to me.

    I see that the settings you mention which specifically cause the issue are 0x66 through 0x6C. These correspond to PWM output 4. Are you seeing this issue on only PWM4? or is it happening on more channels as well?

    What is the input to the TAS5538, please tell me your sample rate, MCLK speed, bit depth, etc.

    Regards,

    -Adam
  • Hi Adam,

    About your questions, I will check with customer.
    I want to confirm that your test is conducted when EQ is enabled?
    Thank you.

    Robin
  • Robin,

    I used all the settings you provided me. I also tried with my standard setup and neither setup had an issue.

    Regards,

    -Adam
  • Hi Adam,

    Here are the answers which your raised before:
    1. In previous test, they used PWM4. And they have also tried PWM8, but the same issue.
    2.The input to TAS5538 is line in or summit wireless module. The sample rate is 48k, MCLK is 12.288M, and bit depth is 24 bit.
    Could you give some suggestions?
    Thank you.

    Robin
  • Robin,

    Has the customer captured the audio output waveform on the scope? We would like to see an image of the behavior.

    Regards,

    -Adam
  • Hi Adam,

    The customer reflects that they could not get some information from output waveform.
    Could you please give some suggestions or guidelines for capture?
    What would you see from it?
    Thank you.

    Robin
  • Robin,

    The description of the problem "sounds like boiled water" does not help us debug the problem. We would like to see what the output waveform looks like to see if we can estimate what phenomenon is happening. if the customer plays a 1kHz sine wave and we see oscillations on it of a different frequency, then we can look further into the problem.

    At the moment since we have not been able to reproduce the issue on our setup, it is hard to give more help. 

    Regards,

    -Adam.

  • Hi Adam,

    Yeah, I agree with you.

    Attachment are the waveforms of TAS5538 output and TAS5342 output.

    waveforms.docx

    I could not find any significant difference between the normal and issued case.

    Do you have any suggestion? Or how to get the right waveform you need?

    Thank you.

    Robin 

  • Robin,

    We cannot debug the issue if the problem case looks the same as the non-problem case on the scope. I did notice the following though:

    The first image, is this the output from the TAS5538? The waveform looks like a sine wave, it should be a square wave, this is not correct. The customer needs to look into why the TAS5538 output is not square.

    The second image, is this the output from the TAS5342 before the LC filter? We need to look at the post LC filter node to see what the speaker itself is receiving in the problem case and non-problem case.

    Regards,

    -Adam