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.

[参考译文] TLV320AIC3212:降低背景噪声的建议?

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1122302/tlv320aic3212-suggestions-for-reducing-background-noise

器件型号:TLV320AIC3212
主题中讨论的其他器件: AM5728
尊敬的 TI 团队:
我们将 Audiocodec TLV320AIC3212与 TI AM5728 SOC 搭配使用在定制板上。 将器件与系统集成后、我们正在调整 Audiocodec 参数以获得最佳性能、因为该电路板将用于 VIOP 应用。
我们需要优化 ADC 的入站流、以降低背景噪声。 请查找附加的 wav 文件,用于以16kHz 的频率录制输入流。 e2e.ti.com/.../voice_2D00_sample1.wav ,e2e.ti.com/.../voice_2D00_sample2.wav
请建议我们如何减少背景噪音/噪音。
 
2.调整 AGC 参数是否有帮助? 目前、我们的记录中禁用了 AGC。
 
3.自适应滤波器是否可用于相同的??? 如果是、请分享详细信息。
4. MIC 输入的寄存器设置如下:(在我们的主板中,模拟输入接口设置为 Mono)
===================================================================================================
!/bin/sh                                                                                                                                                                                                                                                                                                                                                                       
运算通道                                                                                                                                                                                                                                                                                                                                                                     
/usr/sbin/i2cset -f -y 3 0x18 0x00 0x00
#set to Page-0                                                                                                                                                                                                                                                                                                                          
/usr/sbin/i2cset -f -y 3 0x18 0x3f 0xc0
左侧和右侧 DAC 通道上电                                                                                                                                                                                                                                                                                               
/usr/sbin/i2cset -f -y 3 0x18 0x40 0x00
左侧和右侧 DAC 取消静音                                                                                                                                                                                                                                                                                                            
/usr/sbin/i2cset -f -y 3 0x18 0x00 0x01
#set to Page-1                                                                                                                                                                                                                                                                                                                          
/usr/sbin/i2cset -f -y 3 0x18 0x03 0x00
模式 PTM_P3、PTM_P4中的#Left DAC                                                                                                                                                                                                                                                                                                        
/usr/sbin/i2cset -f -y 3 0x18 0x04 0x00
模式 PTM_P3、PTM_P4中的#Right DAC                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                                                                                                                                               
#听筒-关闭                                                                                                                                                                                                                                                                                                                                                                    
/usr/sbin/i2cset -f -y 3 0x18 0x08 0x00
#Output commom mode for HP & REC drivers (HP 和 REC 驱动程序的输出通信模式)设置为 Input Common Mode (输入共模)                                                                                                                                                                                                                                                                    
/usr/sbin/i2cset -f -y 3 0x18 0x24 0x7f
#LOL 输出未路由至 RECP 驱动器(默认)                                                                                                                                                                                                                                                                                         
/usr/sbin/i2cset -f -y 3 0x18 0x25 0x7f
Lor 输出未路由至 RECM 驱动器(默认)                                                                                                                                                                                                                                                                                         
/usr/sbin/i2cset -f -y 3 0x18 0x26 0x7f
#IN1L 输入未路由至 RECP 驱动器(默认)                                                                                                                                                                                                                                                                                         
/usr/sbin/i2cset -f -y 3 0x18 0x28 0x39
#Power Down RECM & RECP and RECP Volume Control (断电 RECM 和 RECP 音量控制)已静音                                                                                                                                                                                                                                                                                
/usr/sbin/i2cset -f -y 3 0x18 0x29 bb9.
#RECM 音量控制已静音                                                                                                                                                                                                                                                                                                           
/usr/sbin/i2cset -f -y 3 0x18 0x2a 0x08
#强制校准失调电压                                                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                                                                                                                                                                               
#耳机-关闭                                                                                                                                                                                                                                                                                                                                                                    
/usr/sbin/i2cset -f -y 3 0x18 0x1f bb9.                                                                                                                                                                                                                                                                                                                                         
/usr/sbin/i2cset -f -y 3 0x18 0x20 bb9.                                                                                                                                                                                                                                                                                                                                         
/usr/sbin/i2cset -f -y 3 0x18 0x1b 0x33
#Left DAC -> HPL | Right DAC -> HPR | HPL 和 HPR 断电                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                                                                               
扬声器打开                                                                                                                                                                                                                                                                                                                                                                     
/usr/sbin/i2cset -f -y 3 0x18 0x16 0xc3 #LOL & LOR 输出驱动程序加电                                                                                                                                                                                                                                                                                                       
/usr/sbin/i2cset -f -y 3 0x18 0x2D 0x06 #SPKL 加电、SPRK 断电                                                                                                                                                                                                                                                                                                         
/usr/sbin/i2cset -f -y 3 0x18 0x2e 0x00 #Route LOL to SPK-LEFT @ 0dB                                                                                                                                                                                                                                                                                                            
/usr/sbin/i2cset -f -y 3 0x18 0x2F 0xff #Route Lor to SPK-right @ 0dB                                                                                                                                                                                                                                                                                                           
/usr/sbin/i2cset -f -y 3 0x18 0x30 0x10 #set 扬声器增益用于 SPKL@6dB 和 SPKR @ MUTE                                                                                                                                                                                                                                                                                          
                                                                                                                                                                                                                                                                                                                                                                               
ADC 配置                                                                                                                                                                                                                                                                                                                                                                     
/usr/sbin/i2cset -f -y 3 0x18 0x00 0x01 #Setting to Page-1                                                                                                                                                                                                                                                                                                                      
/usr/sbin/i2cset -f -y 3 0x18 0x08 0x00 #HP 和 REC 驱动程序的输出通信模式设置为输入共模                                                                                                                                                                                                                                                                    
/usr/sbin/i2cset -f -y 3 0x18 0x33 0x15 #MicBias 控制加电                                                                                                                                                                                                                                                                                                               
/usr/sbin/i2cset -f -y 3 0x18 0x34 0x04 #IN3L 已选择为左侧 MIC PGA,IN1R 未选择                                                                                                                                                                                                                                                                                       
/usr/sbin/i2cset -f -y 3 0x18 0x36 0x40 #CM1选中(Rin-20K),CM2未选中                                                                                                                                                                                                                                                                                               
/usr/sbin/i2cset -f -y 3 0x18 0x37 0x00 #IN1R、2R、3R 未选中                                                                                                                                                                                                                                                                                                              
/usr/sbin/i2cset -f -y 3 0x18 0x39 0x00 #CM 未选中                                                                                                                                                                                                                                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                               
/usr/sbin/i2cset -f -y 3 0x18 0x3b 0x3c #Left MICPGA 增益以30dB 启用                                                                                                                                                                                                                                                                                                  
/usr/sbin/i2cset -f -y 3 0x18 0x3c 0x80 #Right MICPGA gain 在处启用                                                                                                                                                                                                                                                                                                        
/usr/sbin/i2cset -f -y 3 0x18 0x3D 0x00 #Left & Right ADC 调制器从左右 ADCPGA 获取输入                                                                                                                                                                                                                                                                         
/usr/sbin/i2cset -f -y 3 0x18 0x00 0x00 #Setting to Page-0                                                                                                                                                                                                                                                                                                                      
/usr/sbin/i2cset -f -y 3 0x18 0x51 0x80 #Left & Right Channel ADC 加电                                                                                                                                                                                                                                                                                                      
/usr/sbin/i2cset -f -y 3 0x18 0x52 0x00 #Left & Right ADC 信道取消静音、0dB                                                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                                                                                                               

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

    您好!

    附件是我从上面的寄存器中提取的内容。 我看不到您的时钟配置、比如您提供的 MCLK、格式、PLL 启用/禁用等

    噪声也可能来自错误的时钟配置、电路板本身或记录环境。

    e2e.ti.com/.../config.xlsx

    我建议您单独调试路径、只调试 ADC 路径并使用 Audacity / GoldWave 进行记录。  

    使用来自已知来源的纯音进行检查、以验证您的时钟/ ADC 设置。 如果情况良好、则可以调试 MIC 输入侧。

    以下是您可以检查的音频编解码器中的一些常见噪声。

    https://www.ti.com/lit/an/slaa749/slaa749.pdf?ts=1659122117928&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTLV320AIC3212

    此致。

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

    大家好、我是

    我们的 MCLK 为22.5792MHz (与 AM5728 EVM 相同),格式为 DSP_b  我们不使用音响本 PLL。

    在我们的设置中、SOC 是主设备、而 Audiocodec 是从设备模式。 我们以11KHz 运行 WCLK。

    我们已经完成了本文档 SLAA749 如何隔离 ADC 路径中引入的噪声类型。

    AGC 是否能帮助减弱噪音?? 如果是,可以使用其参数的哪些值来降低背景噪声?

    请给出建议。

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

    您的 MCLK 不是采样的多个整数、因此您需要使用 PLL。

    有关时钟配置、请参阅本参考指南的第2.7节、直至第2.7.1节。 确保时钟不超过表2-40和2-41中所示的最大允许频率。

    https://www.ti.com/lit/ug/slau360/slau360.pdf?ts=1659365738185&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTLV320AIC3212

    例如、您可以在时钟配置中使用以下分频器、通过将 PLL_CLKIN_DIV 配置为2、首先将 MCLK 从22.5792MHz 减半至11.2896MHz、然后配置分频器的其余部分以获得所需的采样率、从而获得11KHz 采样率。

    我提供了一个示例、如下所示。

    您可以从该产品文件夹下载此 PLL 时钟表、并使用具有类似 AIC325x 的时钟树配置的时钟表。

    https://www.ti.com/product/TLV320AIC3254-Q1

    这是时钟配置问题、AGC 不会消除噪声。

    此致。

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

    尊敬的 Peter:

    根据我们的理解、由于 SoC (主器件)正在将同步时钟驱动到编解码器(从器件)、因此编解码器 PLL 不会
    影响 BCLK、WCLK。  

    我们的 MCLK 为22579200Hz、是44100Hz、22050Hz 和11025Hz 的整数倍。

    我们还通过硬件探测验证了这一点、在上述任何采样率下、WCLK、BCLK 都将使用正确的值生成。

    我要附上以11025 Hz 记录的样本。 考虑到上述陈述、为什么我在随附的样本中听到噪音??!

    e2e.ti.com/.../11025Hz_5F00_sample.wav



    亲切的导游。

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

    您好!

    1. ADC/DAC 模块需要时钟、因此需要根据参考指南中所示的时钟树结构对其进行相应配置、并且具有最小和最大频率要求、请参阅表2-41。 如果 PLL 未被使用、22.5792MHz 低于最小值。
    2. 我认为最初的采样率正好为11KHz、这里是11.025kHz 的 PLL 配置。

    请按照上述建议配置时钟、以确保时钟设置不会出现问题。

    此致。

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

    尊敬的 Peter:

    我们尝试启用 PLL 并使用建议的 P、J、R、D 和其他时钟系数值。

    噪音没有太大的改善、整体声音也变得发热了。 我要再次迭代,“如果我们的编解码器处于从模式,那么时钟(MCLK、BCLK、WCLK)来自 SOC,我们是否应该在编解码器上启用 PLL?”

    运行以下命令来执行建议的 PLL 启用实验。

    #Commands to set various values with suggested PLL related register values
    
    /usr/sbin/i2cset -f -y 3 0x18 0x00 0x00
    /usr/sbin/i2cset -f -y 3 0x18 0x06 0x92 #P and R
    /usr/sbin/i2cset -f -y 3 0x18 0x07 0x04 #J
    /usr/sbin/i2cset -f -y 3 0x18 0x08 0x13 #D MSB
    /usr/sbin/i2cset -f -y 3 0x18 0x09 0x88 #D LSB
    /usr/sbin/i2cset -f -y 3 0x18 0x0B 0x88 #NDAC
    /usr/sbin/i2cset -f -y 3 0x18 0x0C 0x83 #MDAC
    /usr/sbin/i2cset -f -y 3 0x18 0x0D 0x01 #DOSR MSB
    /usr/sbin/i2cset -f -y 3 0x18 0x0E 0x80 #DOSR LSB
    /usr/sbin/i2cset -f -y 3 0x18 0x12 0x88 #NADC
    /usr/sbin/i2cset -f -y 3 0x18 0x13 0x89 #MADC
    /usr/sbin/i2cset -f -y 3 0x18 0x14 0x80 #AOSR

    2.是否有一些文档或策略来选择计时和分频? 《应用参考指南》提到了我们应该如何选择哪一个适用于我们的设计的所有选项?

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

    启用 PLL 时、您的设置不正确、请参阅随附的工作表以获取注释。

    e2e.ti.com/.../1588.config.xlsx

    如上所述、调制器需要其时钟、如 ADC_MOD_CLK 或 DAC_MOD_CLK 等。尽管编解码器是从器件、但您仍需要配置调制器时钟源、如参考指南的时钟生成部分所示。

    如果您不想启用 PLL、只需确保提供正确的 NDAC/MDAC/DOSR 即可实现正确的11.025K 采样。

    参考指南是您的参考指南、您可以先阅读 DAC 设置(2.5.6)或 ADC 设置部分2.4.3.6以开始。 显然、您需要确保不违反参考指南中也提到的时钟限制。

    使用上面提供的 PLL 计算器链接来帮助处理分压器分压比。

    此致。

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

    您好!

    正如您所建议的、DAC 和 ADC 设置部分是从应用参考指南中引用的。

    • PLL 掉电。

    • DAC_CLCKIN 和 ADC_CLCKIN 通过 MCLK1供源、MCLK1保持等于2257900。

    请验证以下设置:

    DAC 设置(第2.5.6节)

    1. MDAC - 4.

    NDAC–2.

    DOSR - 256

    DAC_CLKIN = MCLK1 (由寄存器 B0_P0_R4设置:0x00)

    满足以下条件

    a) DAC_FS = DAC_CLCKIN /(DOSR * NDAC * MDAC)

    DAC_FS = 22579200 /(4*2*256)

    DAC_FS = 11025 (等于我们的采样率值)

    b) 2.8MHz < DOSR * DAC_FS < 6.2Mhz

    28、000、000 < 256 * 11025 < 62、000

    28 000 000 < 28 22 400 < 62 000 000

    C)(MDAC* DOSR)/32 >= RC

    (4*256)/32 >=RC

    32>= RC

    ADC 设置(第2.4.3.6节)

    1. mAdc - 4.

    NADC - 2.

    3、AOSR - 256

    ADC_CLKIN = MCLK1 (由寄存器 B0_P0_R4设置:0x00)

    满足以下条件

    a) ADC_FS = ADC_CLCKIN /(AOSR * NADC * mAdc)

    ADC_FS = 22579200 /(4*2*256)

    ADC_FS = 11025 (等于我们的采样率值)

    b) 2.8MHz < AOSR * ADC_FS < 6.2Mhz

    28、000、000 < 256 * 11025 < 62、000

    28 000 000 < 28 22 400 < 62 000 000

    c)(mAdc * AOSR)/ 32 >= RC

    (4*256)/32 >=RC

    32>= RC

    观察结果:

    我们正在使用 Linux 命令–arecord 和 aplay 来验证噪音。 设置不同的分频值时、噪声没有明显的差异。

    查询:

    1.是否有任何方法可以验证 ADC_FS 和 DAC_FS 的值–通过在驱动程序代码中打印相同的内容或通过硬件探测来验证?

    2.如何设置处理块和滤波器类型?

    我可以在 ADC 设置中看到一些 PowerTune 寄存器。 是否需要配置 PowerTune 和性能寄存器来消除噪声?

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

    上述设置对于 DAC_CLKIN/ADC_CLKIN 看起来是正确的、并且您已经验证了它具有正确的 WCLK、BCLK 和音频格式、因此我相信编解码器设置是正确的、并且噪声可能来自您的系统/板。 您可以从已知来源检查 IN3L 上的纯正弦音并进行记录。

    我不是 Linux 专家、因此无法评论 Linux 实施/配置。

    • 对于 ADC_FS/DAC_FS、您可以参阅参考指南将该信号路由出去、如图2-46所示。
    • 有一个寄存器 (B0_P0_R60/R61)用于设置不同的 PRB。 此 PRB 具有其关联的过滤器。
    • PowerTune 是为了平衡功率和性能、而不是消除噪声。  

    此致。