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.

[参考译文] TLV320AIC3111EVM-K:使用 TLV320AIC3111EVM-K 开发套件在 Android 上调试耳机问题

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1218817/tlv320aic3111evm-k-usage-of-tlv320aic3111evm-k-dev-kit-to-debug-headset-issue-on-android

器件型号:TLV320AIC3111EVM-K
主题中讨论的其他器件: TLV320AIC3111

您好!

为了调试在使用 TLV320AIC3111编解码器并运行 Android 的定制目标板上恢复耳机麦克风信号的问题、我购买了 TLV320AIC3111EVM-K 开发套件。  目标板处理器是 iMX8MP SoC。  TLV320AIC3111编解码器用于音频输出、扬声器和耳机以及耳机麦克风输入。  SoC 上的 WM8904编解码器用于支持内置数字 PDM 麦克风。  将带有集成麦克风的耳机插入目标板上的耳机插孔时、TLV320AIC3111和驱动器会正确检测到耳机。  我面临的问题是编解码器的配置、以便从它恢复音频信号。

我已附上目标板原理图的相关表格供您参考(target_schematic_p20.pdf)。

音频接口配置为在 I2S 模式下运行、12.3MHz 由处理器作为编解码器的信号源。  编解码器被配置为分别以3.07MHz 和48KHz 的频率驱动 BCLK 和 WCLK 时序信号。

Android 系统软件使用 tlv320aic31xx.c Linux 内核驱动程序来管理目标板上的 TLV320AIC3111编解码器器件。  我为此应用修改了该驱动程序、以添加对耳机插孔和耳机检测的支持、添加了对捕获模式下外部耳机麦克风的支持以及一些其他功能。  我还添加了调试功能、其中包括设置和读取单个编解码器寄存器以及转储整个寄存器集的功能。

附加的文件 reg_recording.txt 是将耳机插入耳机插孔并且启动音频录制应用程序之后、目标系统上编解码器寄存器的寄存器转储。

附加的文件 Android_boot.txt Android_headset_detect.txt 是脚本文件、我使用逻辑分析仪组装这些文件、以捕获 Android 系统在启动(探测和配置编解码器)期间以及在耳机插入和启动音频录制应用期间发出的编解码器 I2C 流量。  这些脚本文件中命令的顺序和内容被创建来复制 Android 系统管理编解码器的方式。

我在首先运行 Android_boot.txt 脚本、然后将耳机插入 EVM 板耳机插孔、再运行 Android_headset_detect.txt 脚本之后、比较了寄存器检查器工具中的寄存器内容。  除了少数例外、寄存器的内容是相同的。

我遇到的一个问题是、运行脚本后、EVM 板上的 BCLK 和 WCLK 信号似乎存在争用。  当 Android_headset_detect.txt 脚本中第74和76行的命令在 EVM 上执行时、会发生争用。

我在示波器上捕获了这种争用;请参阅下面的波形。

下面的波形(scope_305.bmp)显示了在执行 Android_boot.txt 脚本后出现的 BCLK 信号。

下面的波形(scope_306.bmp)显示了在第一个脚本之后执行 Android_headset_detect.txt 脚本后的情况。

Android_boot.txt 脚本运行时、也会立即发生类似的争用。  请参见下面的波形(scope_307.bmp)。

我猜、EVM 上的一个或多个跳线和开关配置错误会导致此问题。

跳线和开关在 EVM 板上按如下方式进行配置:

主板:

   SW1-1—打开

   SW1-2 --打开

   JMP1 --分流器已安装

   JMP6 --分流器安装到 REG (使用外部9V 电源作为 EVM 电源)

   SW3-3.3 V;所有其它开关均设置为关闭

   JMP5 --分流器安装在 FSX 上

   J6 -- SDA 或 SCL 上没有分流器

   JMP3 -- SDA 上无分流器

   JMP4 -- SCL 上无分流器

   JMP7 -从2分流到3 (也尝试1到2,但没有区别)

   SW2-A1 --开

   SW2-EXT MCK --开

   SW2、所有其他开关关闭

子板:

   W3 ----无分流器

   W2 ----无分流器

scope_307.bmp   W21 --分流器已安装

   W22 ----分流器已安装

   W4 ----无分流器

   W5 ----分流器已安装

   W6 ----无分流器

   W1 --引脚2和3之间分流

   W7 --引脚1和2之间分流

   W8 --引脚1和2之间分流

   W9 --引脚2和3之间分流

   W16 ----无分流器

   W17 ----无分流器

   W18 ----无分流器

   w19 ----无分流器

   W20 -分流器已安装

如上所述配置跳线和开关后、EVM 电路的配置似乎与目标板上的电路基本相同、但以下情况除外:

(1) 耳机麦克风音频输入位于目标板上的 MIC1RP;它位于 EVM 上的 MICLP。  我认为这没有关系、只是对配置脚本进行了调整以更改配置。

(2) 我注意到、在耳机输出信号上存在由组件 R19和 C23以及组件 R20和 C24组成的附加网络、这些信号位于 EVM 板上、但不在我们的目标板上。  我不确定这些功能的用途是什么;TLV320AIC3111数据表中的基准电路中没有显示它们。  请告知。

此时、由于上述 BCLK 和 WCLK 信号存在争用问题、我被阻断。  解决该问题后、我可以尝试查看 EVM 是否可以接收来自耳机麦克风的音频信号。

BTW、如果有任何与耳机电路相关的其他应用手册或其他文档、请附上。

此外、如果您需要我提供任何其他信息来澄清我遇到的问题、请告诉我。

谢谢。

-肯

e2e.ti.com/.../regs_5F00_recording.txte2e.ti.com/.../Android_5F00_boot.txte2e.ti.com/.../Android_5F00_headset_5F00_detect.txt

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

    您好!

    是否可以删除我随附的原理图页面?  我的管理人员不高兴我发布它。

    谢谢。

    -肯

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

    尊敬的 Ken:

    控制器板始终是主器件、并采用标准 I2S 格式进行编程。

    这意味着 BCLK 未反相、因此您应将第74行(地址0x1d、位 D3 = 0)设置为 BCLK 未反相。

    R19+C23或 R20/C24是 LPF 网络。

    这是一个应用程序。 关于耳机检测的注意事项。

    https://www.ti.com/lit/an/slaa454/slaa454.pdf?ts=1682031087010&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTLV320AIC3109-Q1%253FkeyMatch%253DTLV320AIC3109-Q1%2526tisearch%253Dsearch-everything%2526usecase%253DGPN

    此致。

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

    我已经删除了它。  

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

    pdjuandi,

    感谢您的快速响应。

    几个问题:

    因此、我假设我还应该将 BCLK 和 WCLK 设置为输入(寄存器27、位2和位3)?

    是否建议在耳机输出端使用低通滤波器?  这是为了减少/消除 DAC 的量化噪声?  在48KHz 采样中不如8KHz 采样时重要?

    感谢您提供有关耳机检测的应用手册、但我认为我的耳机/耳麦检测功能运行良好。  但是、我想了解更多有关从耳机麦克风恢复音频信号的最佳信息。  例如,有许多不同的可用耳机(例如与 iPhone、Android 手机等分发的耳机,以及可以在大多数计算机商店找到的那些)。  编解码器为麦克风输入提供几个不同的参数设置、例如输入阻抗匹配、增益设置等  我面临的问题是、此产品需要支持市场上所有、大多数或至少许多可用的耳机。  这样做的最佳方法是什么?我需要开发某种调整耳机界面、还是有一组可用于覆盖多种耳机麦克风的参数?

    此外、是否还推荐了可帮助实现此目的的 miniDSP 滤波器或算法?

    欢迎您在此提出任何建议。

    BTW、根据您针对上述 BCLK 和 WCLK 信号配置问题提供的答案、我会告诉您这是否解决了我的问题。

    谢谢。

    -肯

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

    好的、谢谢。

    -肯

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

    尊敬的 Ken:

    -。 是的、如果您将 EVM 控制器用作主器件、则器件需要处于从模式或输入状态。  

    -。 在您的情况下、无需放置 LPF、因为它没有连接到外部放大器。

    -。 该编解码器设备不区分 CTIA 或 OMTP 耳机类型、您必须从外部处理该类型。  

    -。 这2种耳机类型基本上是 TRRS、在最后一个 RS 上交换了 MIC 和 GND、因此没有相应的滤波器/算法。 我相信您可以像 https://www.ti.com/lit/ds/symlink/ts3a227e.pdf?ts=1682118486987&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTS3A227E 一样找到处理这种情况的 IC

    此致。

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

    pdjuandi,

    我能够在 EVM 上执行我的脚本、大多数寄存器产生的值与在我的目标上产生的值相同。  与之不匹配的寄存器主要是由于保留位或标志位不同、 或由于目标硬件和 EVM 硬件之间的差异而必须更改的位字段(例如、我的目标是主器件、驱动 WCLK 和 BCLK、而 EVM 是主器件;另外、目标是使用 MIC1RP 作为麦克风输入、而 EVM 使用 MIC1LP)。

    使用两个脚本进行配置后、EVM 可以恢复来自麦克风的音频信号并将其置于 I2S 总线上。  但是、使用几乎相同的配置、目标无法做到这一点、至少 I2S 信号看起来非常不同。  我现在处于调试模式、这里遇到了一些问题。

    I2S 总线有一个不同之处、即目标使用16位宽的 I2S 帧(每通道16位)、而 EVM 使用每通道32位。  当然、另一个显著的差异是时钟控制 EVM 和目标之间的差异。  (只是为了澄清一下、不可能在编解码器驱动 MCLK 和 WCLK 的情况下运行 EVM、正确吗?)

    根据我连接 USB 之前遇到的问题、我将 EVM 配置为44.1KHz 采样率、因为我按照您参考的分步故障排除指南操作。  今天、我能够将 EVM 重新配置为48KHz 采样率、这就是目标运行的速率。

    进行此更改后、我发现我的脚本无法再正确配置 EVM。  通过仔细研究这一点、我发现其中的一个原因是、当在编解码器上执行软件复位命令(将寄存器0:1位0设置为"1")时、根据数据表、寄存器不会被置于默认复位状态。

    例如、请参阅下面的屏幕截图。  我运行了一个仅执行软件复位的简单脚本。

    如您所见、根据 TLV320AIC3111数据表、多个寄存器未设置为默认复位值:

    寄存器      数据表复位值复位     后的实际值

         5                        0x11 0x44                                

       6.             0x04                               0x1E

       7.             0x00                               0x02

       8.             0x00                               0x4c

       11.             0x01                               0x00

    我对这里发生的事情感到困惑。  可以帮助我理解吗?

    BTW、另一个问题是:是否可以单步执行脚本、或者唯一的方法是从脚本中复制一行、将其粘贴到执行按钮左侧的字段中、然后单击按钮?

    谢谢。

    -肯

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

    通过在 USB-MODEVM 中将 SW2位置4设置为 OFF、您可以将 EVM 配置为从 USB-MODEVM 控制器禁用 I2S。请参阅用户指南中的第29页、了解 USB-MODEVM 原理图。 编解码器 MCLK 需要由外部提供、因此、您可以通过将 SW2位置5保持为 ON 来使用 USB-MODEVM 的 MCLK、也可以通过将其设置为 OFF 来使用外部源。

    现在、您可以将编解码器器件配置为主/从模式、无需 USB-MODEVM 的 I2S。

    您需要在寄存器检查器中点击"刷新"按钮才能更新。

    除了一次运行一个步进、或者将其放在执行按钮旁边的字段中并单独运行外、没有任何步进。

    此致。

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

    pdjuandi,

    好的、我将尝试一下。  但是、当 EVM 板配置为48KHz 而非44.1KHz 时、软件复位命令为什么不起作用。  为清楚起见、我所做的就是重新配置 EVM 上的固件以使用 USB-AudioEVM304_48KHZ.bin 文件而不是 USB-AudioEVM304_441KHZ.bin 文件、现在软件复位未正确复位寄存器、因此我的脚本也无法正常运行。

    -肯

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

    我还应该提到的一点是、在我进行配置更改以使用 USB-AudioEVM304_48KHZ.bin 固件后、WCLK 按预期以48KHz 而不是44.1KHz 的频率运行。

    -肯

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

    pdjuandi,

    我在这里需要一些紧急帮助。  我根据您的建议进行了更改:将 SW2位置4设为关闭。  这的确禁用了基板上的 WCLK 和 BCLK 驱动器、从而使得我能够配置 TLV320AIC3111来驱动这两个信号、正如我的目标上那样。  

    出于某种原因、这对于软件复位也有帮助。  我没有验证每个寄存器、但我之前列出的寄存器和其他寄存器似乎已正确复位。

    但是、我的脚本仍然失败。  原因似乎是某些命令被忽略。  请参阅下面的简单测试案例:

    所有此脚本会将编解码器复位、然后尝试将寄存器0:27设置为0x0c。  但出于某种原因、写入命令将被忽略。  后续读取命令会读回0x00。

    我可以通过点击这些位来手动将这些位设置为0x0c:

    ...这似乎设置了位,但寄存器检查器无法正确读回寄存器(使用手动执行)。

    发生什么事了?  在软件复位问题和无法设置和读取某些寄存器之间、很明显此 EVM 板和/或软件不可靠或有错误;我如何信任它来帮助我解决问题?

    您的 EVM 板的行为是否相同?

    我觉得购买这块板可以帮我解决一个比较简单的问题、到目前为止、我在这块板上已经投入了将近两周、严重落后于计划。

    -肯

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

    W 30 00 01不可重置、而是将页面设置为1。

    要进行复位、您需要写入:

    W 30 00 00页0

    W 30 01 01以进行复位。

    您可以像所做的那样在命令窗口中手动读取寄存器、但要确保设置的是正确的 PAGE#。

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

    pdjuandi,

    您是对的、谢谢。  我的错。

    我的脚本现在再次正常工作。  非常感谢。

    -肯

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

    好知道、我现在结束这个演示。

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

    pdjuandi,

    请暂时不要关闭此案例、或者我们能否将其移至另一案例编号。  我现在还在挣扎。

    完成所有重新配置后、我相信现在 EVM 板的配置与我的目标板相同。  I2S 接收波形看起来相同。

    但是、我仍然不会在两个平台上恢复音频信号。

    我已经附加了我正在 EVM 上运行的更新脚本以便对其进行配置;首先是 Android_boot.txt 然后是 Android_headset_detect.txt 工程师。

    e2e.ti.com/.../1321.Android_5F00_boot.txt

    e2e.ti.com/.../4857.Android_5F00_headset_5F00_detect.txt

    运行这些脚本后、I2S 接收总线在示波器上的外观如下:

    ...在我的逻辑分析仪上:

    对我来说、信号采用了正确的格式(16位、二进制补码、MSB 优先、标准 I2S 移位、即帧信号右1位)、示波器和逻辑分析仪相互证实。

    当我在 I2S 总线上捕捉这两个波形时、插入了一个耳机、从与其相距几英寸的扬声器播放346 Hz 正弦波。

    以下是将信号施加到麦克风上时 CodecControl 应用程序上的 AGC 分析窗口的外观:

    它看起来不像很多正弦波。  我不知道为什么。  我曾尝试调整 MIC_BIAS 和麦克风端接(寄存器1:48、1:49)等设置、这些设置似乎没有明显变化。

    以下是关闭正弦波信号时同一窗口的外观:

    正如您从我的中看到的 Android_boot.txt 脚本中、该测试期间的 AGC 设置为:

    # 0:83 - ADCVOL:ADC 粗糙增益:0 dB
    W 30 53 00
    # 0:86 - AGCCTL1:AGC 启用、目标电平-10 dB
    W 30 56 a0
    # 0:87 -- AGCCTL2:2 dB 滞后,噪声阈值-50 dB
    第30节第54章
    # 0:88 -- AGCMAXGAIN: 40 dB 最大增益
    W 30 58 50.
    # 0:89-- AGCATTACK: 20 ms 攻击时间
    第78章不好
    # 0:90 -- AGCDECAY:500毫秒衰减时间
    W 30 5a B8
    # 0:91 - AGCNSDEB: 0毫秒噪声去抖时间
    W 30 5b 00
    # 0:92 -- AGCDIDEB: 2 ms 信号去抖时间

    我已尝试过许多其他 AGC 设置、也尝试过关闭 AGC 并调整 MIC_PGA (1:47)。

    因此,我现在试图理解的奥秘是:

    • 为什么我在 AGC 分析窗口、和中看不到像正弦波的东西
    • 为什么我似乎不能将输入音量调整到影响 I2S 信号的几个 LSB 位以上?

    非常感谢您提供的任何帮助。

    谢谢。

    -肯

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

    所以、您现在要尝试恢复或记录插入目标板的耳机的麦克风输入、并尝试使用 EVM 板载耳机插孔在 EVM 上单独测试麦克风输入-正确吗?

    您能否提供您之前 提到 可以 使用 EVM 恢复的设置图片、有什么变化?

    使用这两个脚本完成配置后、EVM 可以恢复来自麦克风的音频信号并将其置于 I2S 总线上。

    从 捕获的示波器来看、 编解码器的蓝线 DOUT 怎么样了 Saleae DATA_INPUT ? 它看起来是一个修复值0x0B。

    您是否曾尝试过不同频率的1KHz 音调并加以隔离?

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

    Pduandi,

    是的、我正在尝试从 EVM 板上的耳机麦克风输入恢复音频。  我必须澄清之前说过的内容:"使用两个脚本进行配置后、EVM 可以恢复来自麦克风的音频信号并将其置于 I2S 总线上。"  我的意思是、将耳机插入 EVM 耳机插孔并通过监视 I2S 总线、我可以看到当我与耳机麦克风交谈时、所有或几乎所有16个数据位都随着我的语音而发生变化。  但是、我没有播放该恢复的信号。

    当时、EVM 配置为44.1KHz、并且还掌握着 WCLK 和 BCLK 信号、这与我的目标不同。  此外、I2S 总线配置为每通道32位、而不是16位、这与我的目标也不同。  同时、使用除 I2S 接口配置以外的相同寄存器配置、无法在目标上实现相同的行为(即所有位都发生变化)。

    为了理解这一点、我重新配置了 EVM、方法是安装48KHz 固件并将 SW2-4设置为关闭、以便让 EVM 主控 WCLK 和 BCLK 信号。  这样、我能够按照与目标相同的方式配置 EVM 的 I2S 接口。  但是、现在我找不到可以将音频信号恢复到 I2S 总线上全范围的寄存器配置。

    同时、以前我只使用我的语音、只关心获得似乎与我的语音相关联的信号、当时我不关注信号的完整性、因此我没有尝试恢复正弦波。  我现在将重新配置 EVM 并尝试它。

    这是我在 EVM 上的设置照片:

    是的、示波器的蓝色迹线是 I2S 总线的接收数据信号;它也显示在 Saleae 逻辑分析仪上。  如果观察到更多帧、可以观察到接收信号的周期、但只有数字信号的最低有效4或5位发生变化;如果正弦波关闭、则总线保持安静状态且具有接近恒定的+10至+11值。

    我注意到、如果我对着麦克风呼喊或用手指敲击它、I2S 总线上会出现几乎能达到整个范围的尖峰。  但我认为 AGC 的作用是在仅存在低音量信号时动态地更改输入增益、然后随着输入信号振幅的增加而调整增益。

    是的、我也尝试过不同频率的信号。

    1000Hz 是什么样子:

    我还附加了从逻辑分析仪捕获的.csv 文件、这些文件具有不同的输入增益设置:

    1000_Hz_AGC_59.5dB_Max_Gain.csv --设置和以前一样,除了 AGC 最大增益增加到59.5dB。

    1000_Hz_MIC_PGA_59.5_AGC_MAX_GAIN_59.5.csv --与上述相同,但 MIC PGA 也设置为59.5dB (通常为0 dB)。

    AGC_Off_MIC_PGA_59.5dB.csv --与上述相同,但 AGC 关闭(MIC PGA 设置为59.5dB)。

    e2e.ti.com/.../1000_5F00_Hz_5F00_AGC_5F00_59.5dB_5F00_Max_5F00_Gain.csv

    e2e.ti.com/.../1000_5F00_Hz_5F00_MIC_5F00_PGA_5F00_59.5_5F00_AGC_5F00_MAX_5F00_GAIN_5F00_59.5.csv

    e2e.ti.com/.../AGC_5F00_Off_5F00_MIC_5F00_PGA_5F00_59.5dB.csv

    请注意、所有报告的值均为正(?)。

    此时的主要问题是当耳机上存在正弦波时、恢复的信号不是正弦波。

    第二个问题是使用 AGC 正确配置输入增益设置、从而以最佳方式恢复从低音量到高音量的一系列信号。

    谢谢。

    -肯

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

    是否可以根据下面显示的配置将耳机 MIC 输入设置为 MIC1RP 而不是 MIC1LP?

    此外、您是否监控 GPIO 上的 INT、并且插入耳机时它确实会生成中断?

    从示波器捕获可以看出、编解码器生成了正确的 BCLK 和 WCLK 作为主模式。

    我相信现在没有输入、因此 AGC 工作不正常。

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

    pdjuandi,

    我是否可以将耳机 MIC 输入设置为 MIC1RP 而不是 MIC1LP ... 你是说在目标板上有什么意思?  如果是,则已将其设置为 MIC1RP。  这是目标原理图的该部分:

    据我所知、EVM 会获得一个信号、因为我可以在单击 AGC 块时看到它(请参阅上一篇文章中的最后一幅图像)。

    顺便说一下、我刚才准备好问您:运行 CodecControl.exe 应用程序的主机如何从 EVM 将原始信号收集到 AGC 中?  我在监控麦克风输入信号的 EVM 原理图上没有看到任何外部电路。

    除非电路板上有一些我不知道的电路、否则我不明白您最后的评论...

    -肯

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

    很抱歉、如果使用 EVM、您可以看到 I2S 数据发生变化或存在信号、但无法使用 MIC1LP 作为耳机麦克风输入来记录声音级别? 我不清楚你的声明"..  将音频信号恢复到 I2S 总线上的全范围。' 我对您没有恢复的印象意味着使用 MIC1LP 的 I2S 总线没有捕捉/记录 MIC 数据、这不是真的吗?

    让我们简化操作、只需尝试使用 EVM 并使用上述设置仅使用1KHz 音调录制 MIC1LP 即可。 您是否在录制1KHz 音调?

    AGC 原始数据是模拟输入信号的 ADC 数字输出、没有额外的外部电路。

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

    pdjunadi,

    好的、我猜是错的、我能够将 EVM 上的 MICLP 输入的音频录制到文件并播放它;这里是:

    e2e.ti.com/.../1000_5F00_Hz.wma

    不过、我的嵌入式系统无法在处理器上看到相同的数据(或无法正确解释);我会对此进行调查并向您反馈。

    同时、对于 ADC 原始数据是如何传输到主机的、我还是感到困惑。  我甚至在配置 TLV320AIC3111编解码器之前就会在 AGC 窗口中看到噪声信号、而且在此期间没有看到任何 I2C 活动或 I2S 活动。  如何采集信号数据并将其发送到 CodecControl.exe 应用程序?  我可以在目标上复制该内容吗?

    谢谢。

    -肯

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

    好的、那么您的设置在 EVM 上有效、但在您的系统上无效-正确吗?

    EVM 中有 TAS1020、这是 USB 流控制器 IC、它基本上采用 I2S 并转换为 USB。 这就是主机接收或传输音频数据的方式。  

    您的目标使用不同的控制器、所以它不能与编解码器控制 GUI 一同工作。

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

    pdjuandi,

    好的、我得到了。  但 EVM 上的 I2S 总线上没有任何活动、同时我在 AGC 窗口中看到噪声信号。  这是我不明白的。

    -肯

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

    如果器件 I2S 总线未路由到 TAS1020、则这些 AGC 图仅是 USB 控制器提供给主机的随机噪声。

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

    pdjuandi,

    我针对这个关于 AGC 窗口的问题运行了三次实验:

    (1) 我发送了导致软件复位编解码器的命令(w 30 00 00、w 30 01 01)、并查看了 AGC 窗口。  我仍然可以看到噪声信号。  然后我施加了1000Hz 正弦波、就像之前一样、我可以在 AGC 窗口中看到1000Hz 信号。

    (2) 我已将耳机与 EVM 断开、然后重新执行软件复位。  我可以看到噪声信号。  然后我施加了1000Hz 正弦波、令我意外的是、我随后在 AGC 窗口中看到了1000Hz 信号(!)。

    (3) 此时、完全不知所措、我从 EVM 断开了 USB 电缆(有一个外部电源为 EVM 供电)。  我可以看到噪声信号以及1000 Hz 正弦波!!

    我唯一能解释这一点的方法是、馈入 CodecControl.exe 应用程序 AGC 窗口的信号是计算机的内置扬声器。  如果是这种情况、AGC 设置就毫无意义、我已经浪费了很多时间。

    同时、在目标上、我现在能够通过 I2S 总线从耳机麦克风恢复音频信号。  因此,我在这方面取得了进展。

    不过、仍然存在一些问题:

    (1) AGC 被启用、但是它显然超出了 ADC 的驱动范围。  我将得到持续的 ADC 溢出中断。  我已经尝试降低 AGC 最大增益、并确保其他接收增益设置不超过0dB、但到目前为止、这些调整似乎没有降低信号电平。

    (2) 在拔下插头之前、接收信号不会放在 I2S 总线上、然后在开始录音后将耳机重新插入耳机插孔。  我怀疑此问题可能是 Linux tlv320aic31xx 驱动程序内置的 DAPM 操作功能造成的。  有趣的是、重新插入后的所有寄存器内容与拔下耳机之前的内容相同、但一个寄存器除外:0:36 (ADC 标志寄存器)。  之前的值为0xc0、之后的值为0x60。  因此、ADC 增益似乎使 ADC 饱和、这与问题(1)一致。

    下面是 TLV320AIC31111编解码器在录音期间的寄存器转储(在耳机重新插入后):

    e2e.ti.com/.../reg_5F00_dump_5F00_after_5F00_reinsertion.txt

    不知道为什么 ADC 会过载、或者需要更改一些其他设置来减轻这种情况吗?

    我想我可以根据 ADC 溢出中断做出一些动态调整、但我不确定要进行哪些调整。

    谢谢。

    -肯

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

    看起来您在同一平台上运行多个系统、这导致了这种奇怪的行为。 AGC 数据是实时的且没有意义在拔下 USB 时、您仍然可以运行 GUI。 拔下 USB 连接器时 GUI 将挂起。

    这只是表明您应用了过多的增益而导致了溢出。

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

    pdjuandi,

    实际上我在两台不同的计算机上进行了同样的三次实验。  其中一个是 Macbook Pro,它在 VMware 虚拟器下作为客户操作系统运行 Windows。  另一台是运行 Windows 10的独立 Windows 计算机。  我捕获了在第二台计算机上运行的实验的视频:

    e2e.ti.com/.../experiment.mov

    您可以在该视频中看到 EVM USB 电缆已与计算机断开连接(即使屏幕上的状态显示为已连接)、并且在我交谈时、AGC 窗口中的波形清晰地跟随我的声音、它的振幅会超过噪声水平。  该计算机上没有其他连接或正在运行的设备。

    关于"增益过大"问题、我使用以下设置来运行 AGC:

    #注:以下 AGC 配置是手动添加的(不是来自 i2c 日志)
    # 0:83 - ADCVOL:ADC 粗糙增益:0 dB
    W 30 53 00
    # 0:86 - AGCCTL1:AGC 启用、目标电平-10 dB
    W 30 56 a0
    # 0:87 -- AGCCTL2:2 dB 滞后,噪声阈值-50 dB
    第30节第54章
    # 0:88 -- AGCMAXGAIN: 0 dB 最大增益
    W 30 58 00
    # 0:89-- AGCATTACK: 20 ms 攻击时间
    第78章不好
    # 0:90 -- AGCDECAY:500毫秒衰减时间
    W 30 5a B8
    # 0:91 - AGCNSDEB: 0毫秒噪声去抖时间
    W 30 5b 00
    # 0:92 -- AGCDIDEB: 2 ms 信号去抖时间

    增益似乎已经处于最小水平(?)。

    我将尝试降低目标电平;我想该电平可以下降到另14dB。

    -肯

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

    再次 e2e.ti.com/.../trim.783C2562_2D00_1039_2D00_4C96_2D00_9AB8_2D00_363E7D394FAF.MOVAttaching 视频、这次是从我的手机…

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

    我不确定它为什么会显示在您的系统上。

    我尝试了在没有输入、音频为1kHz 以及 USB 断开连接 (GUI 断开连接/空白)时的设置、如下所示。

    它不仅仅是 AGC 增益、而是路径。