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;
}
Kailyn Chen:
您好,我已将您的问题提交到英文E2E上了,由资深工程师为您解答,请注意他们的回复。有问题您也可以直接跟进:
https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1126043/tas5805m-there-is-noise-when-remove-play-mode