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.

TLV320AIC3107: 调音过程中耳机里面的滋滋声或者台阶声无法消除

Part Number: TLV320AIC3107

您好,首先感谢百忙之中查看我们的邮件!

我们近期在调试TLV320AIC3107遇到一个问题,就是在调整增益的时候(寄存器 4344),耳机内部会出现滋滋的声音,经过多次测试确认在调整旋钮的时候,连续为寄存器赋值的时候产生。

硬件设计如下:

我们通过单片机采集一滑动变阻器的值来确定要调节的增益值,之后通过i2c 来配置寄存器

单片机程序如下:

void tlv320set()

{      

                          uint8_t a = 0x80;

                   oldvolume = firstadcvulesave;

                          am_i2c_write(&__i2c_tlv320,1,&a,1);//Èí¼þ¸´Î»

                          GDelay(2000);

                          a = 0x32;

                          am_i2c_write(&__i2c_tlv320,102,&a,1);//CLKDIVIN use MCLK

                          a = 0x18;

                          am_i2c_write(&__i2c_tlv320,3,&a,1);//PLL disable and select Q value

                          a = 1;

                          am_i2c_write(&__i2c_tlv320,101,&a,1); //CLKIN use CLKDIV_OUT

                          a = 0xa;

                          am_i2c_write(&__i2c_tlv320,7,&a,1); //FSref = 48KHz

                          a = 0x00;

                          am_i2c_write(&__i2c_tlv320,2,&a,1); //sample

                          a = 0x00;

                          am_i2c_write(&__i2c_tlv320,8,&a,1); //SLAVE mode   ?

                          a = 0x20;

                          am_i2c_write(&__i2c_tlv320,9,&a,1); // i2s mode 24bit  ?

                          a = 0x0f;

                          am_i2c_write(&__i2c_tlv320,12,&a,1); //audio codec diital filter control register

                          a = 0x80;

                          am_i2c_write(&__i2c_tlv320,13,&a,1);

                          a = 0x80;

                 am_i2c_write(&__i2c_tlv320,14,&a,1);

                      a = 0x90;

                          am_i2c_write(&__i2c_tlv320,14,&a,1);//Headset Configuration Register     

//                  a = 0xc0;

//                       am_i2c_write(&__i2c_tlv320,25,&a,1);

//                       a = 0xc0;

//                       am_i2c_write(&__i2c_tlv320,37,&a,1); //left and right DAC power on

                          a = 0xf0;

                          am_i2c_write(&__i2c_tlv320,37,&a,1); //left and right DAC power on             

                          a = 0x00;

                          am_i2c_write(&__i2c_tlv320,41,&a,1); ///*out path select*/ 

                          //a = 0x78;

                          a = 0;

                          am_i2c_write(&__i2c_tlv320,42,&a,1);//*out path select                   a = 0;

                          am_i2c_write(&__i2c_tlv320,43,&firstadcvulesave,1);       /*left DAC not muted*/

                          am_i2c_write(&__i2c_tlv320,44,&firstadcvulesave,1);       /*right DAC not muted*/

                          a = 0x80;

                          am_i2c_write(&__i2c_tlv320,47,&a,1);        //DAC_L1 to HPLOUT Volume Control Register

                          a = 0x80;

                           am_i2c_write(&__i2c_tlv320,64,&a,1);//DAC_R1 to HPROUT Volume Control Register         

               a = 0xd;

                          am_i2c_write(&__i2c_tlv320,51,&a,1);

                          a = 0xd;

                          am_i2c_write(&__i2c_tlv320,65,&a,1);                         

                          a = 0x80;

                      am_i2c_write(&__i2c_tlv320,82,&a,1);                

                   a = 0x0c;

                    am_i2c_write(&__i2c_tlv320,73,&a,1);           

}

 

// normaladcvulesave 即为采到的AD值对应到的R43/44寄存器的值

void TLV320volumeset()

{

if(normaladcvulesave != oldvolume)

         {               

am_i2c_write(&__i2c_tlv320,43,&normaladcvulesave,1);

           am_i2c_write(&__i2c_tlv320,44,&normaladcvulesave,1);             

           oldvolume = normaladcvulesave ;

}

}

 

我们按照贵司的芯片使用手册介绍做以下尝试

一、手册指导

  1. 静音(R43\44高位置1
  2. 配置寄存器(R43\44 1xxx xxxx
  3. 解除增益(R43\44 0xxx  xxxx
  • 拓展
  • 静音所有相关寄存器 (R43\44 R47\64 R51\65
  • 配置增益寄存器(R4344
  • 解除静音(R43\44 R47\64 R51\65
  • 解决滋滋声方案
  1. 我们采取粗调 (R43\44寄存器增益值每次递增大于1

根据第三个方案,如果我们把R43\44增益值间隔变大,声音调节不连续,声音有突变,且随着间隔值的变大,突变越明显,有一种类似台阶一样的阶梯感。

 

无论是阶梯感还是滋滋声都无法满足我们这边的需求

请问还有什么好的办法来消除这些噪音?或者有哪些细节我们没有注意?