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.

TAS5805M: 解除进入Play模式时会有一声杂音

Part Number: TAS5805M

你好!我用TAS5805,使用的是384KHz,Hybrid Mode(测试这样配置,电流最小,发热最小)。在解除MUTE的时候会有一声类似爆音的声音,应该是功放内部做了处理,没有爆音那么响。

每次由深度睡眠和睡眠状态转播放状态时都会有。由播放状态转高阻状态如果等一段时间以后,再设置为播放状态时,也会有。这个问题有没有好的方法处理?

#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;
}