Other Parts Discussed in Thread: TAS5805
Hello,
One customer used TAS5805 for his application, fs=384Khz,Hybird Mode. When disable MUTE, there is something sound like POP, but it didn't sound loudly.
And each time from deep sleep to sleep would have this sound. If it played and then changed to high impedance, after a short time, return play mode, it also has this sound.
Could you please help to analyze?
#define AP_MUTE_DEEP_SLEEP 0
#define AP_MUTE_SLEEP 1
#define AP_MUTE_HIZ 2
#define AP_MUTE_SOFT 3
#define AP_MUTE_MODE AP_MUTE_HIZ
#define AP_FSW_768K 0
#define AP_FSW_384K 1
#define AP_FSW_480K 2
#define AP_FSW_576K 3
#define AP_DAMP_MODE_BD 0
#define AP_DAMP_MODE_1SPW 1
#define AP_DAMP_MODE_HYBRID 2
#define AP_FSW AP_FSW_384K
#define AP_DAMP AP_DAMP_MODE_HYBRID
#define AP_DEV_CTRL ((AP_FSW<<4) || AP_DAMP)
void _EXT_HW_MUTE()
{//测试结果 24V //384K +Hybrid Mode
// soft Mute = 36mA
// Hiz = 10mA
// Sleep = 6mA
// Deep Sleep = 0mA
// return;
puts("SPK mute\n");
if(b_ap_mute_flag == 0)
{
puts("SPK Hiz\n");
TAS5805_Write_Reg(TAS5805_ADDR,0x00, 0x00);
TAS5805_Write_Reg(TAS5805_ADDR,0x7F, 0x00);
TAS5805_Write_Reg(TAS5805_ADDR,0x00, 0x00);
#if (AP_MUTE_MODE == AP_MUTE_SOFT)
TAS5805_Write_Reg(TAS5805_ADDR,0x03, 0x08 | 0x03); //soft mute + Play
#elif (AP_MUTE_MODE == AP_MUTE_HIZ)
TAS5805_Write_Reg(TAS5805_ADDR,0x03, 0x02); //Hiz
#elif (AP_MUTE_MODE == AP_MUTE_SLEEP)
TAS5805_Write_Reg(TAS5805_ADDR,0x03, 0x02); //Hiz
TAS5805_Write_Reg(TAS5805_ADDR,0x03, 0x01); //Hiz
#elif (AP_MUTE_MODE == AP_MUTE_DEEP_SLEEP)
TAS5805_Write_Reg(TAS5805_ADDR,0x03, 0x02); //Hiz
TAS5805_Write_Reg(TAS5805_ADDR,0x03, 0x00); //Deep Sleep
#endif
// TAS5805_Write_Reg(TAS5805_ADDR,0x03, 0x00); //Deep Sleep
TAS5805_Write_Reg(TAS5805_ADDR,0x78, 0x80); //Clrear analog fault
IIC_Idle();
}
b_ap_mute_flag = 1;
}
void _EXT_C_HW_MUTE()
{
// return;
puts("SPK unmute\n");
if(b_ap_mute_flag == 1)
{
//00 00
//3ms
//7F 00
//4ms
//00 00
//r 03 00
//00 00
//7F 00
//00 00
//03 02
//r 03 02
//03 03
//r 02 12
puts("SPK AP\n");
TAS5805_Write_Reg(TAS5805_ADDR,0x00, 0x00);
TAS5805_Write_Reg(TAS5805_ADDR,0x7F, 0x00);
TAS5805_Write_Reg(TAS5805_ADDR,0x00, 0x00);
#if (AP_MUTE_MODE == AP_MUTE_SOFT)
TAS5805_Write_Reg(TAS5805_ADDR,0x03, 0x03); //Play
#elif (AP_MUTE_MODE == AP_MUTE_HIZ)
TAS5805_Write_Reg(TAS5805_ADDR,0x03, 0x03); //Play
#elif (AP_MUTE_MODE == AP_MUTE_SLEEP)
TAS5805_Write_Reg(TAS5805_ADDR,0x03, 0x02); //Hiz
delay_2ms(5);
TAS5805_Write_Reg(TAS5805_ADDR,0x03, 0x03); //Play
#elif (AP_MUTE_MODE == AP_MUTE_DEEP_SLEEP)
TAS5805_Write_Reg(TAS5805_ADDR,0x03, 0x00); //deep sleep
delay_2ms(5);
TAS5805_Write_Reg(TAS5805_ADDR,0x02, 0x00); //BD Mode
delay_2ms(5);
TAS5805_Write_Reg(TAS5805_ADDR,0x03, 0x02); //Hiz
delay_2ms(5);
TAS5805_Write_Reg(TAS5805_ADDR,0x02, AP_DEV_CTRL); //384K / Hybrid Mode //384K +Hybrid 模式电流最低
// TAS5805_Write_Reg(TAS5805_ADDR,0x02, 0x00); //BD Mode //Hybrid Mode
delay_2ms(5);
// TAS5805_Write_Reg(TAS5805_ADDR,0x03, 0x03); //Play
TAS5805_Write_Reg(TAS5805_ADDR,0x03, 0x03); //Play
#endif
// TAS5805_Write_Reg(TAS5805_ADDR,0x03, 0x00); //deep sleep
// delay_2ms(5);
// TAS5805_Write_Reg(TAS5805_ADDR,0x02, 0x00); //BD Mode
// delay_2ms(5);
// TAS5805_Write_Reg(TAS5805_ADDR,0x03, 0x02); //Hiz
// delay_2ms(5);
// TAS5805_Write_Reg(TAS5805_ADDR,0x02, 0x12); //384K / Hybrid Mode //384K +Hybrid 模式电流最低
// TAS5805_Write_Reg(TAS5805_ADDR,0x02, 0x00); //BD Mode //Hybrid Mode
// delay_2ms(5);
TAS5805_Write_Reg(TAS5805_ADDR,0x78, 0x80); //Clrear analog fault
IIC_Idle();
}
b_ap_mute_flag = 0;
Best regards
kailyn