DRC动态范围控制这个是调节音频的输出幅度吗?还有就是TAS57XX GDE在TI的官网上的下载地址是什么,找了好久没找到下载点。。。麻烦TI的工程师指点江山,不胜感激!
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.
你好:
1.DRC可以设置当输入达到一个门限的时候,改变输入的幅值,同时信号不失真。例如,我们用来做压缩。下图就是输入信号一直增大,当增大到门限值时,就被压缩为某一固定的值。这个就是DRC应用的典型范例。
更多信息:
1)请阅读app note
2)关于DRC的帖子:http://www.deyisupport.com/question_answer/analog/audio/f/42/p/62267/139770.aspx#139770
2.TAS57X1 GDE下载地址:http://www.ti.com/tool/tas5711phpevm
Hello Flora,
感谢你的解答,还有一事,我现在把5711配置为2.1 BD MODE,在写寄存器之前把0X05寄存器写0X40 SHUTDOWN,
然后下面采用一结构体数组的形式,初始化5711的相关寄存器,最后再把0X05寄存器写0X0,在此过程后,开机时会有碰的一声,
如果不写0X05寄存器进行SHUTDOWN的话,似乎开机没有碰的一声,以下是我初始化寄存器的表值,麻烦你给看看有什么
问题没有?
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
code TAS5711_REGMAP DrvTas5711InitTbl1[] =
{
// Addr Count DataArrary
//wait 50ms here to let part acquiring lock
//01 (Below) DRC energy time(2ms)
{0x3A, 0x08, {0x00, 0x01, 0x53,0x8F, 0x00, 0x7D, 0x2F ,0xD2}},
//01 (Below) DRC attack time(1ms)
{0x3B, 0x08, {0x00, 0x02, 0xA3, 0x9A, 0x00, 0x7D, 0x2F, 0xD2}},
//01 (Below) DRC decay time(100ms)
{0x3C, 0x08, {0x00, 0x00, 0x06, 0xD3, 0x00, 0x7F, 0xF9, 0x2B}},
#if 0 /* chenyan marked*/
//01 (Below) DRC threshold 1(-9.5dB,8.8W,THD+N=8.747%)
{0x40, 0x04, {0xFD, 0xB5, 0x36, 0xF2}},
#else
{0x40, 0x04, {0xFD, 0xA2, 0x14, 0x90}},
#endif /* chenyan marked */
//01 (Below) DRC compression ratio(100)
{0x41, 0x04, {0x03, 0x81, 0x47, 0xAF}},
//01 (Below) DRC offset(0)
{0x42, 0x04, {0x00, 0x08, 0x42, 0x10}},
//01 (Below) DRC control
{0x46, 0x04, {0x00, 0x00, 0x00, 0x01}},
#if 0 /* chenyan marked*/
//01 (Below) Bank switch control (no automatic bank switching)
{0x50, 0x04, {0x0F, 0x70, 0x80, 0x00}},
#else
//Auto Bank switch.
{0x50, 0x04, {0x0F, 0x70, 0x80, 0x04}},
#endif /* chenyan marked */
#if 1 /* chenyan marked*/
//01 (Below) Input Mux Register(BD mode)
{0x20, 0x04, {0x00, 0x89, 0x77, 0x72}},
#else
//01 (Below) Input Mux Register(AD mode)
{0x20, 0x04, {0x00, 0x01, 0x77, 0x72}},
#endif /* chenyan marked */
#if 0 /* chenyan marked*/
//01 (Below) PWM Output MUX Register (Note: Writes to this register affect Inter-Channel Delay)
{0x25, 0x04, {0x01, 0x02, 0x13, 0x45}},
#else
{0x25, 0x04, {0x01, 0x01, 0x23, 0x45}},
#endif /* chenyan marked */
#if 0 /* chenyan marked*/
{0x07, 0x01, {0x10}}, //Master Volume Register (0xFF = Mute)
#else
{0x07, 0x01, {0x1A}}, //Master Volume Register (0xFF = Mute)
#endif /* chenyan marked */
{0x08, 0x01, {0x30}}, //Channel 1 Volume
{0x09, 0x01, {0x30}}, //Channel 2 Volume
{0x0A, 0x01, {0x30}}, //Channel 3 Volume
{0x06, 0x01, {0x00}}, //Soft Mute Register (mute off)
{0x02, 0x01, {0x00}}, //error status register /write 0 to clear the register.
{0x03, 0x01, {0xA0}}, //System Control Register 1(opt.)
{0x04, 0x01, {0x05}}, //Serial Data Interface Register
//{0x05, 0x01, {0x8C}}, //System Control Register 2(exit hard mute)//chenyan 2.1SE+BTL mode
{0x0E, 0x01, {0x91}}, //Micro Register(opt.)
{0x10, 0x01, {0x02}}, //Modulation Limit(opt.)
{0x19, 0x01, {0x30}}, //PWM channels are all active.//chenyan add for 5711.
{0x1A, 0x01, {0x0A}}, //Split Capacitor Charge Period(opt.)//chenyan modified 0x0A to default value 0x0F.
{0x1C, 0x01, {0x02}}, //Back-end Error Register(opt.)
#if 1 /* chenyan marked*/ //BD mode default value.
{0x11, 0x01, {0xB8}}, //Inter-Channel Delay Channel 1
{0x12, 0x01, {0x60}}, //Inter-Channel Delay Channel 2
{0x13, 0x01, {0xA0}}, //Inter-Channel Delay Channel 3
{0x14, 0x01, {0x48}}, //Inter-Channel Delay Channel 4
#else //AD mode default value.
{0x11, 0x01, {0xAC}}, //Inter-Channel Delay Channel 1
{0x12, 0x01, {0x54}}, //Inter-Channel Delay Channel 2
{0x13, 0x01, {0xAC}}, //Inter-Channel Delay Channel 3
{0x14, 0x01, {0x54}}, //Inter-Channel Delay Channel 4
#endif /* chenyan marked */
{__ENDTBL__, 0x00, {0x00}},
};
你好:
开关机的时候确实会造成POP,这个帖子里提到了POP产生的原因,你可以看一下,虽然是器件不同,但是产生的原因是相同的,请参考。
http://www.deyisupport.com/question_answer/analog/audio/f/42/p/63428/143921.aspx#143921
初始化,请参照我们datasheet中提到的。
你好:
shutdown的时候是也会出现Clik或POP声的。我的建议是先mute,在shutdown。
I2S 上的电阻和电容,通常是用来滤除PWM波形上的尖峰,不会造成开机的POP。
你好:
我说的mute是0x06寄存器。你看到的EVM示例代码,能否指明是哪一个文档,哪一页?
关于shutdown的POP,还可参考datasheet,page38,figure57的初始化顺序,通过修改0x1A寄存器修改start 和stop的时间,或者是enable 0x05寄存器的mid-Z ramp。
SSTIMER的电容,无论接与否都不会影响芯片的功能,文档推荐的是2.1mode不接电容,接了也不会有影响,只是省cost。
Hello Flora,
关于PoP 的问题,现在这种情况,我如果整机断电的话重启,就会在初始化5711之前出现碰的一声,如果是遥控关机,芯片的供电还存在,再次通过遥控开机,此时POP声很小,几乎听不到,我在配置相关寄存器之前首先实现soft mute(0x06寄存器写0X07),然后SHUT DOWN(0X05寄存器),然后再通过循环的方式写其它寄存器,最后EXIT SHUTDOWN,延时700MS,最后soft unmute,5711初始化完了之后,主程序开始加载开机音乐,这个POP声就存在开机音乐播放之前,在这个POP之前CPU初始化其它的设备也有一段时间了,不考虑上电的POP声,在初始化5711之前我拉低PDN,直到配置5711时才拉高PDN引脚。
你好:
我们没有提供MCU的示例代码,之前的帖子是用户自己写的代码。
当然我们会有相应的工具帮助客户开发配置,需要在官网上购买我们EVM模块,下载GUI软件,按用户指南提示安装使用即可。
简单配置出声的代码如下:
1. 先回读一下0x00寄存器是否为0x6C,确认IIC通信无问题。
2. 写0x1B寄存器为0x00,延时至少50ms等待,回读应为0xC0。
3. 写0x07寄存器为0x00-C0,设置主音量为0dB。
4. 写0x05寄存器为0x00,退出关断模式。
Dear Jacky & ALL TI EE
如下为我的初始化代码!REST 与PDN 并在一起!
现在IIC通讯没问题,读写正常,就是OUT_ABCD 没有输出!没有输出6V;
希望您能帮我解决问题,非常感谢!
void TAS5717_Init(void)
{
//SET_PDN_EN;
Set_PDN_Out;
CLR_PDN_EN; //上电复位;RES与PDN引脚并在一起了;
delay_ms(1);
SET_PDN_EN;// 拉高;
//delay_us(500);
delay_ms(14);
//0x1b trim oscillator
TMP_DATA[0] = 0x00;
Send5717_Data(0x1b, (unsigned char *)TMP_DATA, 1);
delay_ms(50);
mm_TEST=I2C_ReadByte(0x1b); //回读寄存器为130,即0x82
//0x00 时钟控制寄存器-48K/256FS
TMP_DATA[0] = 0x6c;
Send5717_Data(0x00, (unsigned char *)TMP_DATA, 1);
//0x01 状态寄存器
TMP_DATA[0] = 0x00;
Send5717_Data(0x01, (unsigned char *)TMP_DATA, 1);
//0x02 报错寄存器
TMP_DATA[0] = 0x00;
Send5717_Data(0x02, (unsigned char *)TMP_DATA, 1);
//0x03 系统控制寄存器1-出错时软复位,使能高通;
TMP_DATA[0] = 0x90;
Send5717_Data(0x03, (unsigned char *)TMP_DATA, 1);
//0x04 数字音频接口配置 I2S、24bit;
TMP_DATA[0] = 0x05;
Send5717_Data(0x04, (unsigned char *)TMP_DATA, 1);
//0x05 系统控制寄存器2-初始设置为扬声器输出;
TMP_DATA[0] = 0x03;
Send5717_Data(0x05, (unsigned char *)TMP_DATA, 1);
//0x06 解除静音
TMP_DATA[0] = 0x00;
Send5717_Data(0x06, (unsigned char *)TMP_DATA, 1);
//0x10 调制指数
TMP_DATA[0] = 0x07;
Send5717_Data(0x10, (unsigned char *)TMP_DATA, 1);
//0x11 CH1 AD MODE
TMP_DATA[0] = 0xAC;
Send5717_Data(0x11, (unsigned char *)TMP_DATA, 1);
//0x12 CH 2 AD MODE
TMP_DATA[0] = 0x54;
Send5717_Data(0x12, (unsigned char *)TMP_DATA, 1);
//0x13 AD MODE
TMP_DATA[0] = 0xAC;
Send5717_Data(0x13, (unsigned char *)TMP_DATA, 1);
//0x14 AD MODE
TMP_DATA[0] = 0x54;
Send5717_Data(0x14, (unsigned char *)TMP_DATA, 1);
//0x19 enable pwm
TMP_DATA[0] = 0x30;
Send5717_Data(0x19, (unsigned char *)TMP_DATA, 1);
//0x20 输入mix配置
TMP_DATA[0] = 0x00;
TMP_DATA[1] = 0x01;
TMP_DATA[2] = 0x77;
TMP_DATA[3] = 0x72;
Send5717_Data(0x20, (unsigned char *)TMP_DATA, 4);
//0x21 输入mux配置
//TMP_DATA[0] = 0x00;
//TMP_DATA[1] = 0x00;
//TMP_DATA[2] = 0x43;
//TMP_DATA[3] = 0x03;
//Send5717_Data(0x21, (unsigned char *)TMP_DATA, 4);
//0x25 PWM输出控制;
TMP_DATA[0] = 0x01; //ch1-OUT_A
TMP_DATA[1] = 0x02; //ch2-OUT_B
TMP_DATA[2] = 0x13; //ch1-OUT_A
TMP_DATA[3] = 0x45; //ch2-OUT_B
Send5717_Data(0x25, (unsigned char *)TMP_DATA, 4);
//0x1a start&stop period
TMP_DATA[0] = 0x14;
Send5717_Data(0x1a, (unsigned char *)TMP_DATA, 1);
//0x07 设置扬声器初始音量为0db
TMP_DATA[0] = 0x00;
TMP_DATA[1] = 0xc0;
Send5717_Data(0x07, (unsigned char *)TMP_DATA, 2);
//0x0b 设置耳机初始音量为0db
TMP_DATA[0] = 0x00;
TMP_DATA[1] = 0xc0;
Send5717_Data(0x0b, (unsigned char *)TMP_DATA, 2);
//0x46 DRC 控制
TMP_DATA[0] = 0x00; //ch1-OUT_A
TMP_DATA[1] = 0x00; //ch2-OUT_B
TMP_DATA[2] = 0x00; //ch1-OUT_A
TMP_DATA[3] = 0x23; //ch2-OUT_B
Send5717_Data(0x46, (unsigned char *)TMP_DATA, 4);
//0x72,0x73 ch1L/CH2R 通道设置
Send5717_Data(0x72, (unsigned char *)INLINE_UN_EN, 4);
Send5717_Data(0x73, (unsigned char *)INLINE_EN, 4);
//0x76,0x77 ch1L/CH2R 通道设置
Send5717_Data(0x76, (unsigned char *)INLINE_UN_EN, 4);
Send5717_Data(0x77, (unsigned char *)INLINE_EN, 4);
//0x50 EQ控制,默认初始关闭,左右同步;
TMP_DATA[0] = 0x00; //
TMP_DATA[1] = 0x00; //
TMP_DATA[2] = 0x00; //
TMP_DATA[3] = 0x90; //
Send5717_Data(0x50, (unsigned char *)TMP_DATA, 4);
//0x71,0x70 通道设置
Send5717_Data(0x71, (unsigned char *)INLINE_UN_EN, 4);
Send5717_Data(0x70, (unsigned char *)INLINE_EN, 4);
//0x75,0x74 通道设置
Send5717_Data(0x75, (unsigned char *)INLINE_UN_EN, 4);
Send5717_Data(0x74, (unsigned char *)INLINE_EN, 4);
//0x51,0x52 ch1、ch2 OUTPUT 通道设置
Send5717_Data(0x51, (unsigned char *)OUT_EN, 8);
Send5717_Data(0x52, (unsigned char *)OUT_EN, 8);
//0x19 enable pwm
//TMP_DATA[0] = 0x30;
//Send5717_Data(0x19, (unsigned char *)TMP_DATA, 1);
//drc1
Send5717_Data(0x3b, (unsigned char *)DRC1_ao, 8);
Send5717_Data(0x3c, (unsigned char *)DRC1_ar, 8);
Send5717_Data(0x40, (unsigned char *)DRC1_at, 8);
//drc2
Send5717_Data(0x3e, (unsigned char *)DRC1_ao, 8);
Send5717_Data(0x3f, (unsigned char *)DRC1_ar, 8);
Send5717_Data(0x43, (unsigned char *)DRC1_at, 8);
//58595a5b
Send5717_Data(0x58, (unsigned char *)DRC_band1, 8);
Send5717_Data(0x59, (unsigned char *)DRC_band1, 8);
//58595a5b
Send5717_Data(0x5a, (unsigned char *)DRC_band2, 8);
Send5717_Data(0x5b, (unsigned char *)DRC_band2, 8);
//eq ch12
Send5717_Data(0x26, (unsigned char *)eq_band1, 8);
Send5717_Data(0x30, (unsigned char *)eq_band1, 8);
Send5717_Data(0x28, (unsigned char *)eq_band1, 8);
Send5717_Data(0x32, (unsigned char *)eq_band1, 8);
}
你好:
请问一下,有没有参照Jacky给出的顺序检查那几个相关的寄存器?
1.0x07,0x08,0x09号寄存器音量控制有没有操作?这个要解mute的。
2.还有0x05寄存器要推出shutdown。
3.读一下0x02寄存器,看有没有报error。
4.正常情况下,即使没有输出,量电感前,也就是L201/L202左边的引脚,应该是50%占空比的方波。你看下你的是不是?
Dear Flora :
只是互相交流学习而已,我能再问您个问题吗?
首先是我TAS5717上电过程中耳机和扬声器能切换正确,耳机能出声!扬声器也能出声,即上电过程中对HP_SD有个判断,然后进行切换;
但是在工作过程中(即保持有电),拔插耳机就扬声器耳机都没有出声音;使用了调试(如图灯亮灭来判断),发现拔插过程都能进入到相应的子程序里面,子程序里面只进行了耳机和扬声器切换的寄存器,即是如下程序;
if(Read_HP_CON_Pin!=0) //判断是否插入耳机
{
SET_LEDG_EN; //灯灭
TMP_DATA[0] = 0x13;
Send5717_Data(0x05, (unsigned char *)TMP_DATA, 1);
}
else
{
CLR_LEDG_EN; //灯亮
TMP_DATA[0] = 0x03;
Send5717_Data(0x05, (unsigned char *)TMP_DATA, 1);
delay_ms(100);
}
所以我的问题是在我机子正常工作下切换耳机扬声器还需要配置哪些寄存器,除了0X05,或者看我的程序是否有问题?谢谢!