TI中文支持网
TI专业的中文技术问题搜集分享网站

TLV320AIC3101 开始录音的POP声

你好!

  我们用TLV320AIC3101 开始录音,电路按照规格书,出现0.4S左右的破音,正常吗?用耳机监听,有明显的POP声

 有没有好的解决办法?

user6219454:

user6219454:

回复 user6219454:

Amy Luo:

您好,

感谢您使用E2E中文论坛,您的问题我正在处理,我会尽快回复您。

Amy Luo:

回复 user6219454:

您好,这完全取决于你的录音顺序,你能分享出你的顺序吗?

user6219454:

回复 Amy Luo:

void InitCodec(){        volatile unsigned int delay = 0xFFF;        /* Select Page 0 */    CodecRegWrite(AIC31_P0_REG0, 0,sizeof(CodecWrite));        /* Reset the codec */    CodecRegWrite(AIC31_P0_REG1, AIC31_RESET,sizeof(CodecWrite));        while(delay–);            CodecRegWrite(AIC31_P0_REG9, (0u << 6u | 2u << 4u),sizeof(CodecWrite));    CodecRegWrite(AIC31_P0_REG10, 0,sizeof(CodecWrite));        CodecRegWrite( AIC31_P0_REG8, 0x00,sizeof(CodecWrite));    CodecRegWrite(AIC31_P0_REG7, 0x0A,sizeof(CodecWrite));            //set ADC        CodecRegWrite(AIC31_P0_REG15, 0x00,sizeof(CodecWrite));    CodecRegWrite(AIC31_P0_REG16, 0x00,sizeof(CodecWrite));    CodecRegWrite(AIC31_P0_REG17, 0x0F,sizeof(CodecWrite));    CodecRegWrite(AIC31_P0_REG18, 0xF0,sizeof(CodecWrite));    CodecRegWrite(AIC31_P0_REG25, 0x40,sizeof(CodecWrite));    CodecRegWrite(AIC31_P0_REG19, 0x04,sizeof(CodecWrite));        CodecRegWrite(AIC31_P0_REG22, 0x04,sizeof(CodecWrite));    //set DAC    CodecRegWrite(AIC31_P0_REG37, 0xE0,sizeof(CodecWrite));    CodecRegWrite(AIC31_P0_REG41, 0x02,sizeof(CodecWrite));    CodecRegWrite(AIC31_P0_REG42, 0x6C,sizeof(CodecWrite));    CodecRegWrite(AIC31_P0_REG47, 0x80,sizeof(CodecWrite));    CodecRegWrite(AIC31_P0_REG46, 0x80,sizeof(CodecWrite));    CodecRegWrite(AIC31_P0_REG51, 0x01,sizeof(CodecWrite));    CodecRegWrite(AIC31_P0_REG64, 0x80,sizeof(CodecWrite));    CodecRegWrite(AIC31_P0_REG63, 0x80,sizeof(CodecWrite));    CodecRegWrite(AIC31_P0_REG65, 0x01,sizeof(CodecWrite));    CodecRegWrite(AIC31_P0_REG43, 0x00,sizeof(CodecWrite));    CodecRegWrite(AIC31_P0_REG44, 0x00,sizeof(CodecWrite));    CyDelay(500);    CodecRegWrite(AIC31_P0_REG51, 0x09,sizeof(CodecWrite));    CodecRegWrite(AIC31_P0_REG65, 0x09,sizeof(CodecWrite));}

Amy Luo:

回复 user6219454:

这看起来像初始化,您每次录制时都运行这个吗?

user6219454:

回复 Amy Luo:

因为有低功耗要求,TLV320AIC3101经常进入深度睡眠,所以每次都会初始化,再录音

Amy Luo:

回复 user6219454:

以下是我的建议:

volatile unsigned int delay = 0xFFF;    

   /* Select Page 0 */

   CodecRegWrite(AIC31_P0_REG0, 0,sizeof(CodecWrite));    

   /* Reset the codec */

   CodecRegWrite(AIC31_P0_REG1, AIC31_RESET,sizeof(CodecWrite));    

   while(delay–);

   CodecRegWrite(AIC31_P0_REG9, (0u << 6u | 2u << 4u),sizeof(CodecWrite));

   CodecRegWrite(AIC31_P0_REG10, 0,sizeof(CodecWrite));

   CodecRegWrite( AIC31_P0_REG8, 0x00,sizeof(CodecWrite));

   CodecRegWrite(AIC31_P0_REG7, 0x0A,sizeof(CodecWrite));

   //set ADC    

   CodecRegWrite(AIC31_P0_REG15, 0x00,sizeof(CodecWrite));

   CodecRegWrite(AIC31_P0_REG16, 0x00,sizeof(CodecWrite));

   CodecRegWrite(AIC31_P0_REG17, 0x0F,sizeof(CodecWrite));

   CodecRegWrite(AIC31_P0_REG18, 0xF0,sizeof(CodecWrite));

   CodecRegWrite(AIC31_P0_REG25, 0x40,sizeof(CodecWrite));

   CodecRegWrite(AIC31_P0_REG19, 0x04,sizeof(CodecWrite));

   CodecRegWrite(AIC31_P0_REG22, 0x04,sizeof(CodecWrite));

   //set DAC

   CodecRegWrite(AIC31_P0_REG37, 0xE0,sizeof(CodecWrite));

   CodecRegWrite(AIC31_P0_REG41, 0x02,sizeof(CodecWrite));

   CodecRegWrite(AIC31_P0_REG42, 0x6C,sizeof(CodecWrite));

   CodecRegWrite(AIC31_P0_REG47, 0x80,sizeof(CodecWrite));

   CodecRegWrite(AIC31_P0_REG46, 0x80,sizeof(CodecWrite));

   CodecRegWrite(AIC31_P0_REG51, 0x01,sizeof(CodecWrite));

   CodecRegWrite(AIC31_P0_REG64, 0x80,sizeof(CodecWrite));

   CodecRegWrite(AIC31_P0_REG63, 0x80,sizeof(CodecWrite));

   CodecRegWrite(AIC31_P0_REG65, 0x01,sizeof(CodecWrite));

//The delay below should match the ramp up time set  in register 42.  this is to allow the output to power up.Alternately wait until Reg 94 D1 = '1'.

   CyDelay(500);

   CodecRegWrite(AIC31_P0_REG51, 0x09,sizeof(CodecWrite));

   CodecRegWrite(AIC31_P0_REG65, 0x09,sizeof(CodecWrite));

//  the delay below is a function of the soft stepping. if set to 1step per sample this is 508/fs .  if set to 1 step every 2 samples then 1016/fs.

  CyDelay(500)

   CodecRegWrite(AIC31_P0_REG43, 0x00,sizeof(CodecWrite));

   CodecRegWrite(AIC31_P0_REG44, 0x00,sizeof(CodecWrite));

// the delay below is a function of the soft stepping. if set to 1step per sample this is 508/fs .  if set to 1 step every 2 samples then 1016/fs.

   CyDelay(500);

}

如果你能利用HPOUT上的弱偏压,这将消除任何剩余的POP音。所以在设备首次初始化时启用弱偏压。当然,在启用时会有轻微的电流消耗。

If you can make use of the weak bias on the HPOUT,  that would eliminate any residual pop on power up. so if you enable the weak bias when the device first initializes only,  that would do the trick. of course there is a slight current draw when this is enabled.  so make sure it is acceptable for you.

user6219454:

回复 Amy Luo:

谢谢,问题已经解决

赞(0)
未经允许不得转载:TI中文支持网 » TLV320AIC3101 开始录音的POP声
分享到: 更多 (0)