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.

TAS2505-Q1: TAS2505 Open Load Diagnostic Crackling Sound Issue

Part Number: TAS2505-Q1
Other Parts Discussed in Thread: TAS2505

Tool/software:

In our hardware design for the automotive sector, we are using the TAS2505 Audio IC. During operation and in the short/open circuit mechanisms, there is no issue.

However, after the microcontroller completes the TAS2505 initialization, I hear a crackling sound from the speaker. Additionally, every time I perform an open circuit check, since TAS2505 is being turned off and on again, I hear the same sound. Could this be related to the gain settings? I need to perform continuous polling once per second, and I hear this sound every time. I don't want to set the gain to 0 dB and then back to 6 dB every time. Reinitializing through I2C could take time and cause delays, as the sounds need to be handled in real time.

  • Hi Serhat,

    Did you supply the clock before initialing IC?

    There's possibility to cause abnormal noise if turn on/off SPK driver without clock.

    Thanks

    Kevin

  • Hello Kevin,

    Is it necessary to activate the clock over I2C before initializing the TAS2505? And which clock are we talking about here — MCLK, WCLK, or BCLK?

  • Yes, it depends on which clock be used as clock source, if no MCLK, activate BCLK before initialization, otherwise activate MCLK & BCLK both

  • In our system, we have two different cores. The Cortex-R7 starts up earlier and performs the TAS2505 initialization over I2C. Later, during audio playback, the Cortex-A57—which starts up later—plays the sound. The audio data is driven over I2C by the CA57. In this case, what should we do? During normal operation, the clock is always present for Open Load detection. Yet, I still hear a clicking/ticking noise. What is the reason for this?

  • Hi Serhat,

    First, this is a question of system operation, and I can't provide specific advice for your system level

    Then I think if clock is always presenting, then the clicking/ticking noise is POP pulse signal generated when mute/unmute, (since TAS2505 doesn't have automatically start-up ramp-up/down), when the speaker is more sensitive to this signal, it will be heard.

    My advice is adding the soft ramp-up and soft ramp-down, you can check below

    The best way to avoid pop noise is to add a soft ramp- up/down.

    Unmute:

         Set DAC Volume to be smallest (Page0/Register65) -> unmute -> >3ms -> set DAC Volume as normal

    Mute

         Set DAC Volume to be smallest (Page0/Register65) -> >3ms -> mute

    Regards

  • Hello Kevin,

    Currently, in the IC initialization phase, PAGE 0, Register 65 is set to the default value of 0.0 dB. What value should I set here? For the mute option, should the value be 0? Also I will share the PAGE0 and PAGE1 Register values:

    {PAGE0, SOFTWARE_RESET_REG,            0x01},   // Soft reset
    
    {PAGE0, PAGE_SELECT,                   0x01},   // Select Page 1
    
    {PAGE1, LDO_CTL_REG,                   0x00},   //   : AVDD LDO = 1.8V
                                                    //       : PLL and HP Level Shifters powered up
                                                    //       : No short circuit detected
                                                    //       : LDO_SEL pin is low
    
    {PAGE1, PAGE_SELECT,                   0x00},   // Back to Page 0
    
    {PAGE0, PLL_CODEC_MUX_REG,            0x01},   //       : Low PLL clock range
                                                    //   : BCLK is input to PLL
                                                    //   : PLL clock is CODEC_CLKIN
    
    {PAGE0, PLL_P_R_REG,                  0x91},    //       : PLL powered up
                                                    // [D6-D4]     : P = 1
                                                    // [D3-D0]     : R = 1
    
    {PAGE0, PLL_J_REG,                    0x07},    // J = 7
    
    {PAGE0, PLL_D_MSB_REG,                0x18},    // D[13:8] = 0x18
    {PAGE0, PLL_D_LSB_REG,                0x3D},    // D[7:0]  = 0x3D  => D = 6205
    
    {PAGE0, PLL_NDAC_REG,                 0x81},    //       : NDAC powered up
                                                    // [D6-D0]     : NDAC = 5
    
    {PAGE0, PLL_MDAC_REG,                 0x81},    //       : MDAC powered up
                                                    // [D6-D0]     : MDAC = 3
    
    {PAGE0, DAC_OSR_MSB_REG,              0x00},    // DOSR[9:8]
    {PAGE0, DAC_OSR_LSB_REG,              0x40},    // DOSR[7:0] = 0x40 => DOSR = 64
    
    {PAGE0, AUDIO_IF1_REG,                0x00},    //   : DSP Mode
                                                    //   : 16-bit word length
                                                    //       : BCLK is input
                                                    //       : WCLK is input
    
    {PAGE0, AUDIO_IF2_REG,                0x00},    // Data offset = 0 BCLKs
    
    {PAGE0, DAC_INSTRUCTION_SET_REG,      0x02},    // Signal Processing Block: PRB_P2
    
    {PAGE0, DAC_CH_SETUP1_REG,            0x90},    //       : DAC powered up
                                                    //   : Left channel input
                                                    //   : 1 step per WCLK
    
    {PAGE0, DAC_CH_VOL_CTL_REG,           0x00},    // Digital Volume = +0dB
    
    {PAGE0, DAC_CH_SETUP2_REG,            0x04},    //   : Auto mute disabled
                                                    //        : DAC muted
    
    #if (DIAG_CIRCUIT_TYPE == DIAG_CIRCUIT_2)
    {PAGE0, GPIO_DOUT_CTRL_REG,           0x0C},    // GPIO is general purpose output
    #elif (DIAG_CIRCUIT_TYPE == DIAG_CIRCUIT_1)
    {PAGE0, GPIO_DOUT_CTRL_REG,           0x08},    // GPIO is general purpose input
    #endif
    
    {PAGE0, PAGE_SELECT,                  0x01},    // Switch to Page 1
    
    {PAGE1, REF_POR_LDO_BGAP_CTL_REG,     0x10},    //       : Master Reference enabled
                                                    //       : POR not powered down
                                                    //       : Bandgap powered down
    
    {PAGE1, COMM_MODE_CTL_REG,            0x00},    //       : Common Mode = 0.9V
                                                    //       : HP full drive ability
    
    {PAGE1, HP_ROUTING_REG,               0x04},    //       : Mixer P to HP attenuator
    
    {PAGE1, HP_VOL_CTL_REG,               0x00},    // HP Volume = 0.0dB
    
    {PAGE1, AINL_VOL_CTL,                 0x00},    // AINL Volume = 0.0dB
    
    {PAGE1, OUTDRV_AINLR_CTL_REG,         0x20},    //       : HPL powered up
                                                    //   : AINL/R disabled
    
    {PAGE1, HP_DRIV_GAIN_REG,             0x00},    // HP driver gain = 0dB, unmuted
    
    {PAGE1, SPKR_VOL_CTL1_REG,            0x00},    // SPK Volume = -72.3dB
    
    // TODO: Start with mute, enable when playing
    {PAGE1, SPKR_AMP_CTL2_REG,  DAMP_GAIN_12dB},    // SPK Volume = 6dB
    
    {PAGE1, SPKR_AMP_CTL1_REG,            0x02},    // SPK output driver powered down
    



  • Hi Serhat,

    You check from reference guide, smallest volume (-63.5db) is 0x81, 0dB is 0x00

    Regards

    Kevin

  • Hello Kevin,

    This method didn't work. I'm still hearing the pop sound on every open load request. It hasn't been eliminated.

  • Hi Serhat,

    how did you execute it? could you show me the i2c sequence? (not initialization)

    You can set DAC_CH_SETUP1_REG to be 0x91, (Soft-Stepping is 1 step per 2 DAC Word Clocks)

    For below sequence, the delay time can be slowly increased, like 5ms, 8ms... until eliminate pop.

    Unmute:

         Set DAC Volume to be smallest (Page0/Register65) -> DAC unmute (Page0/Register64) -> >3ms -> set DAC Volume as normal

    Mute

         Set DAC Volume to be smallest (Page0/Register65) -> >3ms -> DAC mute (Page0/Register64

    Thanks & Best Regards

    Kevin

  • Hello Kevin,

    I shared the my I2C Sequence with the Open Load Control:

    1.Page0/Register 41h - Write 81h => -63.5dB

    2.Delay for 3mS

    // -------------------OPEN LOAD DETECTION  START --------------------------//

    3.Page1/Register 2Eh - Write 7Fh  => Mute

    4.   Page1/Register 2Dh - Write Reset D1 bit => SPK output driver is powered down
    4.1 Page1/Register 30h - Write Reset D4-D6 bit => SPK Driver is Muted

    5. Page0/Register 34h - Write  Set D0 bit => GPIO pin is driven to '1' in general purpose output mode

    6. 50ms Delay

    7. Page0/Register 34h - Read D1 bit => GPIO Input Pin state, used along with GPIO as general purpose input

    8. Open Load Detection working .. (That's OK)

    // ----------------- OPEN LOAD DETECTION END---------------------//

    9.  Page1/Register 2Dh Write Set D1 bit =>Speaker Power On           
    9.1 Page1/Register 30h Write  20h => 010: SPK Driver Volume = 12 dB

    10. Page0/Register 41h - Write 0h => 0.0dB


    I hear a pop sound when switching the speaker power from OFF to ON.

  • I think you set the wrong register, DAC mute should be executed before SPK power down or after SPK power up, I made some modification as below:

    1.Page0/Register 41h - Write 81h => -63.5dB

    2.Delay for 5mS

    // -------------------OPEN LOAD DETECTION  START --------------------------//

    3.Page1/Register 40h - Write 04h  => DAC Mute

  • Hello Kevin,

    The latest status is as follows. I don't see any issue in the flow.

     //===Page0/Register 65 DAC Volume to be smallest====//
    
    tas2505_reg_write(PAGE0, DAC_CH_VOL_CTL_REG, 0x81,0); //Digital Volume Control = -63.5dB min Vol.
    
    for(uint16 i=0; i<15000; ++i) //5ms delay
    {
    __asm(" NOP");
    }
    
    //============DAC Mute (Page0/Register64)===========//
    
    tas2505_dac_mute(); //Page 0 40h Bit-1 Set
    
    tas2505_spkr_volume_set(0); //Page1 2Eh Mute 111 1111b
    
    if (tas2505_set_damp_gain(DAMP_MUTE) == FALSE) //Page1 2Dh Speaker Power Off
    { // 6dB kazanç aktif, SPK Driver output ise pasif edilir
     return REGISTER_ACCESS_ERROR;
    }
    
    tas2505_reg_write(PAGE0, GPIO_DOUT_CTRL_REG, 0x08,0); // GPIO pin input------- 50 ms Delay-------
    
    
    gpio_status = tas2505_gpio_read();
    
    if(gpio_status == 1)
    
    { return OPEN_LOAD;
    }
    
    //DAC Volume to be smallest
    tas2505_reg_write(PAGE0, DAC_CH_VOL_CTL_REG, 0x81,0); //Digital Volume Control = -63.5dB min Vol
    
    if (tas2505_set_damp_gain(DAMP_GAIN_12dB) == FALSE)
    {
     return REGISTER_ACCESS_ERROR;
    }
    
    tas2505_dac_unmute(); //Page0 40h
    
    for(uint16 i=0; i<15000; ++i) //5ms delay
    {
     __asm(" NOP");
    }
    
    tas2505_spkr_volume_set(100); //Page1 2Eh 0.0dB



  • Hello Kevin,

    I said there’s no issue according to this flow, but the pop sound still continues in the same way. I implemented what you mentioned in terms of code. Based on that, I meant to say there’s no issue. Currently, the pop sound is still occurring with this configuration.

  • Hi Serhat,

    I think the sequence is not fully complied with mine, the point is changing it with speaker turn ON, I change it as below:

    1.Page0/Register 41h - Write 81h => -63.5dB

    2.Delay for 5ms

    3.Page1/Register 40h - Write 04h => DAC Mute

    4 Page1/Register 30h - Write Reset D4-D6 bit => SPK Driver is Muted
    4.1   Page1/Register 2Dh - Write Reset D1 bit => SPK output driver is powered down


    // -------------------OPEN LOAD DETECTION START --------------------------//
    5. Page0/Register 34h - Write Set D0 bit => GPIO pin is driven to '1' in general purpose output mode

    6. 50ms Delay

    7. Page0/Register 34h - Read D1 bit => GPIO Input Pin state, used along with GPIO as general purpose input

    8. Open Load Detection working .. (That's OK)

    // ----------------- OPEN LOAD DETECTION END---------------------//



    9.  Page1/Register 2Dh Write Set D1 bit =>Speaker Power On           
    9.1 Page1/Register 30h Write 20h => 010: SPK Driver Volume = 12 dB

    10.Page1/Register 40h - Write 00h => DAC Unmute

    11.Delay for 5ms
    12. Page0/Register 41h - Write 0h => 0.0dB

    Well, if the soft ramp-up still doesn't work, it's hard to eliminate in SW, then we should consider in the hardware or speaker.

    Thanks

    Kevin