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.

[参考译文] TLV320AIC3104:路由音频问题(绕过 I2S 处理)

Guru**** 2553260 points


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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/942045/tlv320aic3104-routing-audio-issues-bypassing-i2s-processing

器件型号:TLV320AIC3104

我尝试仅执行一个非常基本的输入到输出、以便在开始任何 I2S 处理之前测试我的外部硬件接口、但我似乎无法通过编解码器路由音频、我认为我可以这样做。  也许我没有配置我需要的所有寄存器?

我基本上尝试直接将 MIC2L 连接到正确的 LOP/M 差分输出、而不会通过链施加任何增益(0dB)。  为此、我尝试将 MIC2L 连接到左 PGA、然后将 PGA_L 输出路由到右 LOP/M、从而完全绕过所有数字处理(尚未连接 I2S 接口)。

我有一个稳定的0.707Vrm SE 3kHz 正弦波、我的函数发生器通过一个简单的交流耦合电容连接到 MIC2L、以阻止编解码器的直流偏置。  我正在测量电容器之后的信号(以直流为基准)、可以看到编解码器添加了适当的直流偏置、以便像我预期的那样在0Vp 至2Vp 范围内运行。  我还在测量正确的 LOP/M 输出、但我完全看不到编解码器中的任何内容。

我正在使用 Linux 计算机来控制 I2C 配置寄存器、我认为我正在正确设置所有寄存器、但可能缺少一些设置?

以下是我要应用的寄存器和设置:

i2cset -y 1 0x18 0x01 0x80  自清零软件复位
i2cset -y 1 0x18 0x00 0x00  设置为使用第0页
i2cset -y 1 0x18 0x11 0x0F  将 MIC2L 连接到左侧 ADC PGA 混频器和0dB 增益
i2cset -y 1 0x18 0x0F 0x00  将左侧 ADC PGA 设置为非静音且增益为0dB
i2cset -y 1 0x18 0x51 0x80  PGA_L 输出路由到左侧 LOP/M
i2cset -y 1 0x18 0x56 0x09  LEFT_LOP/M 未静音、完全上电

 

下面是应用这些设置后的 i2c 转储:

   0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
00:00 00 00 10 04 00 00 00 00 00 00 00 01 00 00 00 00 ...? ?。
10:80 0f ff 78 78 78 78 78 78 06 00 fe 00 fe 00 ?.xxxxxx?..
20:00 00 00 80 00 00 00 00 00 00 00 00 00 80 00 00 00… ???...
30:00 00 00 04 00 00 00 00 00 00 00 00 04 00 00 00 00 00 ...? ?。
40:00 04 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00。。。。 ?。
50:00 80 00 00 00 0b 00 00 00 00 00 00 00 00 00 00 00 10 00……… ?。
60:00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 ?..........
70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80:00 00 10 04 00 00 00 00 00 00 00 00 01 00 00 00 00 ...? ?。
90:80 0f ff 78 78 78 78 78 78 06 00 fe 00 fe 00 ?.xxxxxx?..
A0:00 00 00 80 00 00 00 00 00 00 00 00 80 00 00 00… ???...
B0:00 00 04 00 00 00 00 00 00 00 00 04 00 00 00 00 00 ...? ?。
C0:00 04 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00。。。。 ?。
D0:00 80 00 00 00 0b 00 00 00 00 00 00 00 00 00 00 00 10 00……… ?。
E0:00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 ?..........
F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

如果有任何帮助,将不胜感激。  

谢谢、

 




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

    您好、Gregory、

    以下应用手册显示了使用 TLV320AIC3109中的旁路功能的信息和寄存器脚本、以及适用于 AIC3104的相同概念。

    https://www.ti.com/lit/an/slaa915/slaa915.pdf

    您能看一下配置是否正常工作吗?

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

    我查看了该文档、看起来我正在正确地执行它。  我不知道为什么它不起作用。  也许硬件会以某种方式影响输出电路?

    现在、我只是尝试使用 PGA 旁路方法使用左通道 MIC2L 来保持 LOP/M 输出。

    以下是正在应用的设置、应与您提供的3109应用手册文档匹配。

    /*自行清除软件重置并设置为第0页*/
    i2cset -y 1 0x18 0x01 0x80 //自清零软件复位
    i2cset -y 1 0x18 0x00 0x00 //设置为使用第0页

    /*将 MIC2L 路由至左 PGA */
    i2cset -y 1 0x18 0x11 0x0F //将 MIC2L 路由到左侧 ADC PGA 混频器并设置0dB 增益

    /*将 PGA_L 路由到 LEFT_LOP/M *
    i2cset -y 1 0x18 0x0F 0x00 //取消左侧 ADC PGA 的静音并将增益设置为0dB
    i2cset -y 1 0x18 0x51 0x80 // PGA_L 输出路由到左侧 LOP/M 并设置0dB 增益
    i2cset -y 1 0x18 0x56 0x09 //取消 LEFT_LOP/M 静音,设置为完全加电,输出电平设置为0dB


    寄存器转储后、我看到0x56 (寄存器86)显示 LEFT_LOP/M 音量控制状态为1 (并非所有到 LEFT_LOP/M 的已编程增益都已应用)。 这可能是一个问题吗? 如果是、这是何时以及如何实现的  
    设置为0表示已对增益进行编程?


       0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
    00:00 00 00 10 04 00 00 00 00 00 00 00 01 00 00 00 00 ...? ?。
    10:80 0f ff 78 78 78 78 78 78 06 00 fe 00 fe 00 ?.xxxxxx?..
    20:00 00 00 00 a0 00 00 00 00 00 00 00 80 00 00 00… ???...
    30:00 00 00 04 00 00 00 00 00 00 00 00 04 00 00 00 00 00 ...? ?。
    40:00 04 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00。。。。 ?。
    50:00 80 00 00 00 0b 00 00 00 00 00 00 00 00 00 00 00 10 00……… ?。
    60:00 02 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00……………………………………………
    70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    80:00 00 10 04 00 00 00 00 00 00 00 00 01 00 00 00 00 ...? ?。
    90:80 0f ff 78 78 78 78 78 78 06 00 fe 00 fe 00 ?.xxxxxx?..
    A0:00 00 00 a0 00 00 00 00 00 00 00 80 00 00 00… ???...
    B0:00 00 04 00 00 00 00 00 00 00 00 04 00 00 00 00 00 ...? ?。
    C0:00 04 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00。。。。 ?。
    D0:00 80 00 00 00 0b 00 00 00 00 00 00 00 00 00 00 00 10 00……… ?。
    E0:00 02 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00……………………………………………
    F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

     

    如果上述内容看起来正确、那么直接连接到编解码器 LEFT_LOP/M 的电路可能存在问题吗?  请参见下面的。  所有输出测量都是从测试点15 (TP15)进行的。

    谢谢!

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

    您好、Gregory、

    您提供的初始配置似乎正确、但随后在 EVM 上运行该配置以进行完整性检查。 我能够在 LEFT_LOP 上获取数据。  您可以在下面的示波器屏幕截图中看到这一点。 通道1是输入、通道2在 LEFT_LOP 引脚上探测。 您可以在此处看到施加的 CM 电压。  

    i2cset -y 1 0x18 0x01 0x80  自清零软件复位
    i2cset -y 1 0x18 0x00 0x00  设置为使用第0页
    i2cset -y 1 0x18 0x11 0x0F  将 MIC2L 连接到左侧 ADC PGA 混频器和0dB 增益
    i2cset -y 1 0x18 0x0F 0x00  将左侧 ADC PGA 设置为非静音且增益为0dB
    i2cset -y 1 0x18 0x51 0x80  PGA_L 输出路由到左侧 LOP/M
    i2cset -y 1 0x18 0x56 0x09  LEFT_LOP/M 未静音、完全上电

    因此、您在开始时已正确配置。 接下来的一些问题:

    • 您能否确保 I2C 通信正常工作?
    • 您能否直接在器件的 LEFT_LOP 引脚处进行探测? 如果输入信号没有明显的直通、是否存在可见的 CM 电压? 看到 CM 电压  

    至于您对编程增益的问题、实际上存在数据表错误(当前正在修复)、其内容应为:

    当"尚未应用到__的所有已编程增益"时、D1 = 0。
    "D1 = 1、此时"已应用到__的所有已编程增益"。

    所以我在这里不会担心。  

    此致、

    Aaron

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

    您好、Aaron、

      我能够通过电路板顶部的 R141和 R142直接访问 LEFT_LOP/M。  但是、当示波器上耦合了直流或交流电时、我没有看到任何电压或 CM 电压。  

    我们在电路板上使用其中的2个编解码器、每个编解码器都有自己的控制器专用 I2C 接口。  我对这两个编解码器进行了相同的配置、只是为了确保我没有设置错误的编解码器。  我们还有一个用于复位编解码器的 GPIO。  现在、我确定我正在与编解码器通信并正确配置它们、因为当我将复位线路下拉时、I2C 转储显示所有 XX。  当我禁用复位线路时、预配置的 I2C 转储显示默认寄存器值。

    我仍然很困惑、为什么我在两个编解码器上都看不到输出。

    这是编解码器的主要布线。  您在这里看到了任何问题吗?

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

    您好、Gregory、

    我从原理图中看到的唯一担心是输入上的下拉电阻器。 我看到它们是 DNI、因此它们是否未组装在您的电路板上? 未使用的输入应通过0.47uF 电容器连接到 GND。  

    您可以共享一些 I2C 事务吗? 如果可能、我想看一看它们。  

    此致、

    Aaron

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Aaron、您好、 没错。 未填充所有 DNI。 我唯一执行的 I2C 事务是 i2cset 命令、然后是用于验证每个寄存器是否已正确设置为该值的 i2cdump 命令。 我至少在这一级进行了一次一对一的核查。 您是否在寻找更详细的内容? 谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Aaron、

      我在 Linux 内对 I2C 进行了一些窥探。  这是否有帮助?

    谢谢!

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

    您好、Gregory、

    读取寄存器写入操作很好、但我想直观地看到器件正在进行配置。 至于接下来的一些动作、是否可以移除 R141和 R142、然后探测器件输出? 我只想隔离编解码器的输出。  

    我不确定 Rright_LOP/M 输出的用途是什么、但您可以通过将0x0B 写入寄存器0x5D 来尝试打开驱动器电源吗? 您也可以尝试其中一种 HPOUT。 可通过将0x0B 写入寄存器0x41来打开 HPROUT 驱动器。 这只是为了确保我们能够直观地看到器件配置正确。 这些输出应显示加电时的默认~1.3V CM。  

    此致、

    Aaron

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

    感谢大家的帮助。  昨天我找到了我们的问题。  设置正确、但被路由到错误的编解码器。  我们在第二个编解码器的测试点上有一个内部文档错误。  简而言之、i2cset -y 1 XXXX 命令实际上是设置编解码器2而不是我要连接的编解码器1。  当我将信号注入编解码器2时、由于我们有文档错误、它实际上位于错误的测试点上。  现在所有器件都正常工作、符合预期。  我对输入电压电平有另一个问题、我将在该问题上发布一个新的帖子、以实现最佳跟踪。

    再次感谢!