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.

[参考译文] PCM1864:输出噪声

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1166933/pcm1864-noisy-output

器件型号:PCM1864

您好!

我们正在尝试在放大器中使用 PCM1864、但是、当我们提供音频信号或不提供任何信号时、扬声器上会产生大量的白噪声和失真、我们已将其缩小为 ADC 的问题。

有4个 PCM1864、每个处理2对立体声输入、它们都处于从模式、由 DSP 提供时钟(SCK、BCK 和 LRCK)、由模拟器件提供 ADA1467、并且 DSP 连接到12.288MHz 晶体。 我们通过 I2C 与 ADC 进行通信、并使用它来配置 ADC 的设置。 至于 ADC 的配置、如前所述、ADC 处于从模式、我们将时钟配置为遵循数据表第41页表10的第12行、请参阅下面突出显示的内容:

我们还配置输入映射以匹配我们的硬件设置、串行音频接口格式为 TDM、4通道 TDM 传输数据和 TDM 偏移至1 bck (与 I2S 相同)、所有其他寄存器配置保留为默认值。

我们已经通过让 DSP 生成测试提示音来测试 ADC 以外的系统、并且提示音上没有噪声或失真、因此我们知道问题与 ADC 有关、无论是如何配置寄存器还是硬件设计。 我们的 ADC 输入设计与您的数据表中所示类似、电阻器和电容器值略有差异、但我们尝试更改这些值以匹配数据表、 但这对音频质量没有任何影响、因此我们认为问题不在于 ADC 的输入。 下面是其中一个 ADC 的原理图图片:

我们希望得到任何帮助或指示,以帮助我们解决这一问题。

谢谢你

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

    所有4个器件都在同一个 I2S 总线上吗?

    您是否选择了16位数据?  4个设备*4个通道*16=256。 因此 bck=256*FS。 BCK 是12.244MHZ 吗?

    您应该检查芯片输入引脚上的输入波形。 它应在1.65V 直流电压上偏置。

    您能否向我发送与4个芯片中每个芯片相关的 I2C 设置

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

    不可以、ADC 0和1共享一条总线、2和3共享另一条总线。

    寄存器11中的 PCM 字长选择? 否、我们为接收 PCM 字长和立体声 PCM 字长选择24位数据。
    但是、根据您所说的内容并考虑到我们的设置、我们应该选择32位数据吗? (2个器件* 4个通道* 32 = 256)

    BCK 引脚上的时钟信号为12.288MHz。
    是的、输入信号具有1.65V 偏置电压。

    当然、这是发送给所有 ADC 的时钟配置

    static const uint8_t TiAdcPLL[] __RDONLY = {
        0, 1,	0xFE,   // reset registers
        0, 1,	0x00,   // set to page 0
      113, 1,	0x1F,   // mute all channels
      // fs = 256 PLL_RATIO = 2048 (?)
      // SCK_FREQ = 12.288
      // PLL_FREQ = 98.304 (P = 4, R = 2, J = 16, D = 0)
      // DSP1_CLK = 24.576, DSP1_SRC = PLL, DSP1_DIV = 4
      // DSP2_CLK = 12.288, DSP2_SRC = SCK, DSP2_DIV = 1
      // ADC_CLK  = 6.144,  ADC_SRC  = SCK, ADC_DIV  = 2
    	32, 4,	0x42, // SCK selected, slave mode, ADC clock = SCK, DSP2 clock = SCK, DSP1 clock = PLL, disable auto clock detect
    	        0x03, // DSP1 clock div = 1/4
    	        0x00, // DSP2 clock div = 1
    	        0x01, // ADC clock div = 1/2
    	37, 9,	0x07, // PLL SCK clock output div = 1/8
    	        0x00, // SCK-BCK div = 1
    	        0xFF, // BCK-LRCK div = 1/256
    	        0x01, // PLL enabled
    	        0x03, // PLL P div = 1/4
    	        0x01, // PLL R multi = 2
    	        0x10, // PLL J = 16
    	        0x00, // PLL D (LSB) = 0
    	        0x00, // PLL D (MSB) = 0
    	 0, 0
    };

    下面是其他也会发送到所有 ADC 的设置配置:

    static const uint8_t TiAdcSetup[] __RDONLY = {
         6, 7, 	0x41, // ADC1L channel select: VINL1 (non-inverted)
                0x41, // ADC1R channel select: VINR1 (non-inverted)
                0x42, // ADC2L channel select: VINL2 (non-inverted)
                0x42, // ADC2R channel select: VINR2 (non-inverted)
                0x00, // no selected input channel for secondary ADC
    		    0x03, // rx PCM 24bit word len, LRCK duty cycle = 50%, stereo PCM 24bit word len, SAIF = TDMDSP
    		    0x01, // 4ch TDM
    	16, 6,  0x00, // GPIO1 = non-inverted GPIO, GPIO0 = non-inverted GPIO
    	        0x00, // GPIO3 = non-inverted GPIO, GPIO2 = non-inverted GPIO
    	        0x44, // GPIO1 = output, GPIO0 = output
    	        0x44, // GPIO3 = output, GPIO2 = output
    	        0x00, // clear GPIO status register
    	        0x00, // pull down GPIO3, 2, 1, and 0
    	 1, 5,  0x00, // Ch1L PGA = 0dB
    	        0x00, // Ch1R PGA = 0dB
    	        0x00, // Ch2L PGA = 0db
    	        0x00, // Ch2R PGA = 0db
    	        0x80, // enable PGA smooth change, independent control, disable clip det, attenuation lim = -3dB, clipping suppression after 80 times, disable auto clip suppression
        25, 1,  0x00, // set everything to auto-gain
     	 0, 0
    };

    以下是发送到 ADC 0和2的 TDM 失调电压配置:

    static const uint8_t    TiAdcOffset0[] __RDONLY = {
        13, 2,  0x01, // Tx TDM offset of 1 BCK (same as I2S)
                0x00, // Rx TDM offset of 0 (default)
         0, 0
    };

    然后、这里是发送到 ADC 1和3的 TDM 失调电压配置:

    static const uint8_t    TiAdcOffset1[] __RDONLY = {
        13, 2,  0x81, // Tx TDM offset of 129 BCK
                0x00, // Rx TDM offset of 0 (default)
         0, 0
    };

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

    我建议从单个器件开始查看音频性能。 您可以通过提供 BCLK 和 LRCK 来尝试从 PLL 模式 。 48K 和12.288Mhz 应该工作并拆下晶体。 第77页和第78页介绍了此模式和所需的设置。

    使用1个芯片和2个输入、您可以查看噪声情况是否更好、然后继续

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

    我们尝试移除了其他 ADC、因此只有一个 ADC 连接到总线、并且断开了 SCKI 输入到该剩余 ADC、因此只提供 BCK 和 LRCK。

    它仍处于从 PLL 模式、如我之前对配置的答复中所示。 但是、我们无法移除12.288MHz 晶体、因为它为 DSP 芯片提供时钟并且不直接连接到 ADC。

    这导致我们从一个 ADC 中完全没有任何东西、没有噪声或音频。

    至于您提到的第77页和第78页上所述的设置、就我所说的、我们遵循这些设置、唯一的微小差异是与麦克风偏置和 VDD、DVDD、IOVDD 和 LDO 设置有关、 但是、我们的一位硬件工程师在数据表中发现了这些:

    这表明我们不需要连接麦克风偏置、并且我们的 AVDD、DVDD、IOVDD 和 LDO 硬件设置应该可以。

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

    您是否使用晶体引脚将时钟耦合到 DSP?

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

    我不确定您的意思是什么? 在我最初发布的 ADC 原理图中、您可以看到、我们已将 ADC 晶体引脚断开连接或接地。

    但下面是 DSP 的时钟输入和信号(我已突出显示)的原理图、这些信号随后连接到 ADC 的 SCK、BCK 和 LRCK 时钟输入:

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

    我的印象是、您将晶体连接到了 ADC 芯片上。

    一个小评论。 是否可以将 D27作为测试移除?

    此外 、当您使用1个 IC 进行测试并断开 SCKI 与芯片的连接时、是否会丢失输出?

    当您还连接了1个芯片和 SCKI 时、会发生什么情况? 那么、噪声是如何的?

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

    我们尝试删除了 D27、没有更改噪声和失真。

    是的、当我们只有1个 ADC 且 SCKI 断开连接时、我们将完全失去 ADC 的输出。

    此外、在连接1个 SCKI 的 ADC 时、噪声和失真没有变化。

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

    从 DSP 生成的时序是否干净?

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

    是的、它们看起来很干净。

    这是 SCKI 信号:

    这是 BCK 信号:

    这是 LRCK 信号:

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

    应在短时间内作出答复

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

    我假设现在您的电路板上只有1个 ADC。 是这样吗?

    您的放大器是否由 ADC 生成的 TDM 数据驱动?

    如果将 ADC 的4个输入接地、噪声会降低吗? 这可以通过将4个耦合电容器的输入侧接地到 ADC 来实现。

    此外、您是否已独立测试放大器以检查它是否没有噪声?

    [引用 userid="542546" URL"~/support/audio-group/audio/f/audio-forum/1166933/pcm1864-noisy-output/4394404 #4394404"] i[/quot]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    正确、电路板当前只有1个 ADC。

    正确、在我先前发送的 ADC 寄存器配置设置中、ADC 应输出 TDM 数据。

    如我在 ADC 原理图的初始博文中所示、您可以看到 ADC 输入和接地之间始终有电容器。

    是的、正如我在初始帖子中所说的、我们已经通过让 DSP 生成测试提示音来测试了 DSP 的其余放大器、并且使用该测试提示音时输出上没有噪声、 但一旦我们使用 ADC、就会出现噪声和失真。 这就是我们认为 ADC 的问题所在、无论是其寄存器配置还是硬件布局。

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

    您的放大器是 I2S 输入放大器吗? 当您发出提示音时、DSP 是否会对此放大器进行 I2S 输入?

    我实际上希望您将4个耦合电容器的输入端接地。 这会将输入引脚置于 交流接地端。我想检查您在本例中是否也听到了嘶嘶声。

    可移除此测试的模拟输入信号。

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

    嗯、是的、但是为了进一步扩展、我们的放大器实际上分为4个部分:

    1. 输入端的 ADC、输出 I2S 数据、然后转至...
    2. DSP、它还输出 I2S 数据、然后转至...
    3. 然后、DAC 输出一个模拟信号、该信号被发送到...
    4. 我们使用的放大器模块(ICEpower80AM2)

    那么、我们  使用的放大器模块(ICEpower80AM2)是 I2S 吗? 否、但之前的步骤是 ADC、DSP 和 DAC。 因此、当 DSP 发出提示音时、它将输出一个进入 DAC 的 I2S 信号。  

    至于输入的接地、这并不会产生影响。 由于输入端没有音频信号、而是对地短路、因此输出端仍然存在白噪声。

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

    好的

     您能否在音频 输入信号接地的 ADC DOUT 引脚上放置示波器、您在该引脚上看到任何数字活动?

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

    有活动。

    由于我们听到输入端的音频、因此我们会期望这一点。 只是音频失真极高、当没有输入音频时、输出端仍然有很多噪声。

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

    将于11月28日答复

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

    目前电路板上只有1个 ADC 和 DSP? 如果布局不佳是原因、则最好关闭所有其他芯片和直流电源并使用工作台电源操作芯片。

    还有一个与 BCLK 串联的22 Ω 电阻器吗?

    您还可以将0x00写入 PAGE 0寄存器6、以查看没有信号的噪声是否消失。

    https://www.ti.com/lit/ug/tidud75/tidud75.pdf?ts=1669674308858&ref_url=https%253A%252F%252Fwww.ti.com%252Ftool%252FTIDA-01470

    我还在封装基于 PCM 1864的系统的 TI 参考设计。 您可以使用完全相同的设置来查看您是否观察到电路板上存在任何问题。

    这可能表示布局故障