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.

[参考译文] TLV320AIC3100:TLV320AIC3100 上有噪声耳机输出

Guru**** 2813705 points

Other Parts Discussed in Thread: TLV320AIC3100

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1626229/tlv320aic3100-noisy-headphone-output-on-tlv320aic3100

器件型号: TLV320AIC3100

您好、

我使用 TLV320AIC3100 设计产品。 我仅使用音频播放。 在启动音频系统时、我发现即使只是播放正弦波、耳机输出也会有很多噪声。 是否有人能快速查看部分原理图和 PCB 布局、告诉我是否存在任何明显的问题?

image.png

81954b63-413e-4cea-86eb-253aae3a9d06.png

一些重要的说明/问题:

  • 3V3 线路由系统中的所有其他数字逻辑共享 。 在回顾这是相当愚蠢的。 是否可以通过将 AVDD 和 HPVDD 调节器与系统的其他部分分开来解决/改善噪声问题?
  • AVDD 和 HPVDD 是否应该相互独立的稳压器?
  • SPKVDD 怎么样? 我是否可以在该输入端使用非稳压电池电压、或者也应该调节该电压?

以下是我用于初始化 TLV320AIC3100 的顺序:

 

// select page 0
W  0x30, 0x00 0x00

// pll_clkin = BCLK, codec_clkin = PLL_CLK
W  0x30, 0x04, 0x03

// Setup PLL
// Input to PLL is 1.536MHz. P = 1, R = 4, J = 14, so
// CODEC_CLKIN = 1.536MHz * 4 * 14 / 1 = 86.016MHz
// make sure to set NDAC=2, MDAC=7, DOSR=128
W  0x30, 6, 14
W  0x30, 7, 0
W  0x30, 8, 0
W  0x30, 5, (1 << 7) | (1 << 4) | 4

// ...WAIT UNTIL PLL LOCKS...

W  0x30, 11, 0x82
W  0x30, 19, 0x87
W  0x30, 13, 0
W  0x30, 14, 128

// setup i2s interface
W  0x30, 27, 0x00 // 16b i2s periph mode

W  0x30, 60, 1

// setup output dac / path
W  0x30, 0, 1

// route LDAC and RDAC to mixer amplifiers
W  0x30, 35, (1 << 6) | (1 << 2)

// unmute HPL and HPR, set gain to 0db
W  0x30, 40, (8 << 3) | (1 << 2) | (1 << 1)
W  0x30, 41, (8 << 3) | (1 << 2) | (1 << 1)

// enable the headphone and speaker drivers, set headphone cm voltage to 1.5V
W  0x30, 31, 0xcc

// enable headphone volume control and set to 0db
W  0x30, 36, (1 << 7) | 6
W  0x30, 37, (1 << 7) | 16

// turn on, set DAC gain, and unmute DAC
W  0x30, 0, 0
W  0x30, 63, 0xd4
W  0x30, 65, 0xf8
W  0x30, 66, 0xf8
W  0x30, 64, 0x00

// setup headset detection.
W  0x30, 0, 1
W  0x30, 46, 0x0a
W  0x30, 0, 0
W  0x30, 67, (1 << 7) | (2 << 2) | (1 << 0)

下面是我的 1023Hz 正弦波的记录与我期望听到的记录:

Sine bad.mp3

Sine good.mp3 

感谢您的帮助! 我认为这可能是与电源电压相关的用户错误。

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

    您好、John:

    我认为您的电源问题是一个小问题。 当我听到声波时,我可以立即看出它是严重削波的。

    在一个完美的世界,所有的供应将有自己的来源。 只要去耦电容器放置在足够靠近器件引脚的位置以滤除噪声、共享 AVDD 和 HPVDD 就可以正常工作。 由于 D 类放大器、SPKVDD 上的开关噪声最差、因此如果可能、它绝对应该是自己的电源。 调节它肯定会提高噪声性能、但 SPKVDD 与耳机输出无关。

    我认为您的原理图和布局看起来很合适。 您可能不会将这些去耦电容器挤压得更近一些。

    正如我在顶部提到的、我认为您只是过度驱动了所有输出。 当我把你的坏正弦转换成一个光谱图时,我可以肯定地看到指示剪切的奇数谐波正在发生。

    您的代码没有添加任何明显的额外增益、实际上、根据我能读到的内容、您正在降低增益。 但是、我无法确认这个小片段实际上是否为 0dB

    如果这不是增益设置问题、一种意外削波的简单方法是 I2S 总线中的位错位。 我会仔细检查您的发送器和接收器设置、确保它们在数据锁存边沿、位偏移和位深度上对齐。 首先、简单的方法是降低输入信号电平并查看这是否会消除噪声。

    此致、
    Jeff McPherson

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

    嘿、Jeff、

    感谢您的回答。 我很感谢分析。

    我的声卡上可能有过多的增益。 明天我在办公室时我会重新录制。

    通过耳机听我可以听到噪音、但我很确定我没有听到任何剪切的声音。 我使用 saleae pro 逻辑分析仪查看耳机输出。 以下是一些不同音量级别的片段。 我觉得波形似乎不是削波的。 让我知道您的想法。

    当我降低输入信号电平时(在下面的代码片段中将`增益`设置为较小的值)、噪声会降低、因此您可能是对的。 但是、我无法在上述波形中看到任何明显的削波。

    ```μ s

    while (1){
      //等待音频缓冲区需要填充   
      xSemaphoreTake (AUDIO_BUFFER_READY_SIMPTOM、portMAX_DELAY);
      int16_t* buffer = I2S_DRIVER_GET_BACKBUFFER ();

      //用正弦波填充音频缓冲器
      const 浮点 f = 1023。;
      const float fs = 48000。;
      const float gain =/*取 0 和 0.1 之间的值*/;
        for (int i = 0;i < AUDIO_SEGMENT_LEN;I++、t++){
        Double d = sin ((((double) t * f)/ fs)* 2 * 3.1415926535898)*增益;

        Buffer[2 * i + 0]=(int16_t) round (d * 32767.0);
        Buffer[2 * i + 1]=(int16_t) round (d * 32767.0);
      }

      // I2S 驱动器在准备就绪时消耗缓冲区...
    }

    ```μ s

    还有其他想法吗? 我也可以尝试捕获 I2S 总线、但这会很棘手、因为我们的电路板没有 I2S 测试点。

    实际上、我设法通过直接焊接到布线来捕获 I2S 总线。 下面是绘制的原始 I2S 数据片段。 I2S 数据是二进制补码 16b、范围为–32768 至 32767、因此它从大约–2000 摆动到 2000 这一事实符合我的预期。


    下面是 BCLK、lrck 和 I2S 数据的逻辑分析仪捕获结果。 I2S 数据偏移 1 个时钟周期、这是 I2S 的标准要求

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

    尊敬的 Jeff:

    经过再敲门之后、我发现我的 PLL 配置错误。

    我 原本打算将 PLL 输入设置为 BCLK(我的系统中为 1.536MHz)、但由于拼写错误、它被设置为 MCLK(我的系统中为 2.048MHz)。 这意味着、当我的 I2S 总线以 48ksps 的速率馈送数据时、我的采样率实际上为 64ksps。 我想这会导致一些奇怪的混叠。

    启用蜂鸣发生器并观察到 DAC 的采样时间大约为 13.3us、而不是我预期的 20us 后、我注意到了这一点

    感谢您的帮助!

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

    您好、John:

    很高兴您找到了这个问题。 您观察到的结果是正确的、如果 PLL 关闭、那么混叠/量化噪声实际上会影响性能。

    此致、
    Jeff McPherson