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.

[参考译文] TLV320AIC3101:TLV320AIC3101开始录制时发出噼啪声

Guru**** 2381920 points
Other Parts Discussed in Thread: TLV320AIC3101
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/866338/tlv320aic3101-pop-sound-when-tlv320aic3101-starts-recording

器件型号:TLV320AIC3101

大家好、

电路是 TLV320AIC3101数据表的典型应用。 我们开始使用 TLV320AIC3101进行录制、声音大约为0.4秒。 这是正常的吗? 显示器上、有明显的噼啪声。 是否有办法解决这个问题?

此致、
罗美

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Amy、  

    这将完全取决于您的录制顺序、您能否与我分享您的录制顺序?

    此致、

    -Steve Wilson

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Steve、

    感谢您的回答。

    空 InitCodec()
    {    
       volatile unsigned int delay = 0xFFF;    
       /*选择第0页*/
       CodecRegWrite (AIC31_P0_REG0、0、sizeof (CodecWrite));    
       /*重置编解码器*/
       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));
          
       //设置 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));

       //设置 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、  

    这看起来像初始化序列。  您是否在每次编解码器记录时运行此操作?

    此致、

    -Steve Wilson

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Steve、

    由于具有低功耗要求、TLV320AIC3101需要进入深度睡眠模式、因此它将每次初始化并重新记录。

    此致、
    罗美

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Amy、  

    以下是我的建议:

      volatile unsigned int delay = 0xFFF;    
       /*选择第0页*/
       CodecRegWrite (AIC31_P0_REG0、0、sizeof (CodecWrite));    
       /*重置编解码器*/
       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));
          
       //设置 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));

       //设置 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));


    //下面的延迟应与 寄存器42中设置的斜升时间匹配。  这是为了允许输出上电。交替等待、直到寄存器94 D1 ="1"。  

      CyDelay(500);

      CodecRegWrite (AIC31_P0_REG51、0x09、sizeof (CodecWrite));
       CodecRegWrite (AIC31_P0_REG65、0x09、sizeof (CodecWrite));

    // 下面的延迟是软步进的函数。 如果设置为每样本1步,则为508/FS。  如果设置为每2个样本1步进、则为1016/FS。

      CyDelay (500)  


       CodecRegWrite (AIC31_P0_REG43、0x00、sizeof (CodecWrite));
       CodecRegWrite (AIC31_P0_REG44、0x00、sizeof (CodecWrite));
    //下面的延迟是软步进的函数。 如果设置为每样本1步,则为508/FS。  如果设置为每2个样本1步进、则为1016/FS。

       CyDelay(500);


    如果您可以利用 HPOUT 上的弱偏置、 这将消除上电时的任何残余杂音。 因此、如果您在器件首次初始化时启用弱偏置、 这将达到目的。 当然、启用此功能时会产生轻微的电流消耗。  因此、请确保您可以接受它。

    此致、

    -Steve Wilson