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.

[参考译文] TLV320AIC3101:适用于 HP 输出的 Linux amixer 设置

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1060633/tlv320aic3101-linux-amixer-settings-for-hp-outputs

器件型号:TLV320AIC3101
主题中讨论的其他器件:TLV320AIC3104TPS65217

您好!  

我已经使用 TLV320AIC3101设计了定制板。 该板可用作基于 TI AM335x SoC 的 PocketBeagle 单板计算机的附加电路板。 我制作的电路板是90%基于一个所谓的音频 Cape、此 Cape 利用 TLV320AIC3104芯片进行音频输入。 我的声音扬声器连接到 HPLOUT 和 HPROUT 引脚、由单端驱动。  

电路板 启动良好、我使用了现有的 Linux 驱动程序以及器件树覆盖层、并且编解码器已被识别。 也就是说,引导日志没有显示错误,并aplay -l将其打印为默认声卡。 这表示 I2C 接口正常。 另一个命令在aplay sound_sample.wav播放声音后退出、这让我有理由相信时钟、即 I2S 也正常工作。  

但是、输出端没有任何声音。 我尝试使用 amixer 来找到正确的设置。

现在、看  一下编解码器的方框图、我尝试弄清楚哪些设置可以正确地输出。  使用列出了简单的控件amixer scontrols,我想如下所示:

*"HP"已打开、因此 HP 输出已打开
*"HP DAC"、即 DAC 音量控制已开启至最大值
*"左侧 DAC 多路复用器"设置为 DAC_L2、因为我希望声音直接来自 DAC、因此不会与其他通道混合
*"右侧 DAC 多路复用器"是 DAC_R2、原因与上述相同
*"Left HP Power Down mode"(左 HP 断电模式)设置为高阻抗、"Right HP Power Down mode"(右 HP 断电模式)设置为"Right HP Power Down mode"(右 HP 断电模式)

我想不到其他与此应用相关的设置。 但是、声音无法播放。 任何建议都将非常有帮助。

此致

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

    你(们)好

    我想知道您使用了哪种芯片、并且没有遇到任何声音问题、TLV320AIC3101或 TLV320AIC3104

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

    大家好、我使用了 X101。  

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

    与 我共享 DTS 设置、amixer 列表、代码。 谢谢。

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

    您可以:

    e2e.ti.com/.../tlv320aic_5F00_dts_5F00_amixer.zip

    在中、有一个 DTS 文件在我的覆层中使用、以及 amixer 的简单完整内容列表。 我没有接触到任何其他代码、因此驱动程序应该是标准内核代码。  

    此致

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

    噢、顺便说一下、我在示波器下查看了所有时钟 和数据信号。 这是从上至下的测量捕捉:MCLK、WCLK、BCLK 和 DOUT。 我注意到以下几点:

     1、采样频率(WCLK)为44.1kHz、即使aplay如此、也应为48kHz

     2.在 WCLK 的高电平期间没有数据输出。 在数据表中、它指出对于 I2S、该时间段内的数据应用于左右立体声输出。  

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

    如何使用 aplay 命令、详细说明以及共享 wav 文件? 我还将检查您使用的 wav 文件的音频格式。

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

    这是我使用的示例文件、如下所示:

    aplay windows.wav

    e2e.ti.com/.../windows.wav

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

    您与我共享的波形文件的音频格式为  

    请使用以下 wav 文件:

    /cfs-file/__key/communityserver-discussions-components-files 6/Shakira-_2D00_try-Everythings.7z

    音频格式为:

    在波形文件上方播放并与我共享 DMSG 日志、我将检查是否调用了 aic31xx_hw_params、此 API 用于设置采样率等

    还有一点、在播放之前运行"amixer controls"、在播放期间运行"amixer controls"。 也可以与我分享。

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

    感谢您的建议。 在这里、您需要的所有输出。   

    e2e.ti.com/.../playback.zip

    dmesg 的有趣部分是这个(它的其余部分在 zip 文件中):

    debian@beaglebone:~$ dmesg | tail
    [   57.040596] remoteproc remoteproc1: 4a334000.pru is available
    [   57.040763] pru-rproc 4a334000.pru: PRU rproc node pru@4a334000 probed successfully
    [   57.048465] remoteproc remoteproc2: 4a338000.pru is available
    [   57.048645] pru-rproc 4a338000.pru: PRU rproc node pru@4a338000 probed successfully
    [  502.166246] davinci-mcasp 48038000.mcasp: Sample-rate is off by 400 PPM
    [  534.328331] davinci-mcasp 48038000.mcasp: Sample-rate is off by 400 PPM
    [  563.897892] davinci-mcasp 48038000.mcasp: Sample-rate is off by 400 PPM
    [  790.217617] davinci-mcasp 48038000.mcasp: Sample-rate is off by 400 PPM
    [ 1021.624168] davinci-mcasp 48038000.mcasp: Sample-rate is off by 400 PPM
    [ 1186.493848] davinci-mcasp 48038000.mcasp: Sample-rate is off by 400 PPM

    因此、它显示了在采样率偏移中存在400ppm 的误差。 可以吗?

    在播放期间和播放之前,amixer 控制选项似乎是相同的。  

    在另一个消息中、这次我听到  了一些来自我的扬声器的声音。 声音非常微弱、被噪音淹没、但我绝对可以区分它。  

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

    对于"McASP:采样率关闭400 PP"

    请查看下面的 e2e 线程是否有帮助:

    Linux/PROCESSOR-SDK-AM335X:McASP 主模式配置-处理器论坛-处理器- TI E2E 支持论坛

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

    好的、但为什么声音弱且嘈杂? 您检查的 DTS 文件是否一切都正确? amixer 设置是否一切正常?

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

    请先运行"cat /sys/kernel/debug/asoc/codecs 和"cat /proc/asound/pcm。
    至于" amixer controls"、我犯了一个错误。 我们也可以在播放之前和播放期间运行"amixer contents (amixer 内容)"、而不是"amixer controls"(amixer controls)。
    请在播放前和播放期间转储第0页寄存器。
    如下所示的命令:
    i2cset -y -f 2 0x18 0x0 0x0
    i2cdump -y -f 2 0x18

    与我共享上述日志

    您上次与我共享的运行时日志告诉我、函数 aic31xx_configure_ocmv 中的 AVDD 和 DVDD 不正确
    [1.142918] tlv320aic3x-codec 2-0018:无效电源电压 AVDD:-22、DVDD:-22

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

    大家好、我得告诉大家、我的耳机上的东西都能正常工作。 在耳机上、声音清晰、amixer 设置易于理解。 然而、在放大器上、声音仍然是糟糕的(高阻抗输入前置放大器)。 为什么会这样呢?

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

    我希望您获取状态寄存器来检查根本原因。 然后根据示波器中的 I2S 信号波形图。 由于位流是立体声的、因此我要检查为什么只有一个通道中存在数据、而另一个通道中没有数据。 请检查 aic3x_hw_params、采样率和宽度是多少。 谢谢。  

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

    好的、感谢您的解释。

    我的系统中没有"/sys/kernel/debug/asoc/codecs、但有"/sys/kernel/debug/asoc/components "、返回:  

    48038000.mcasp
    48038000.mcasp
    tlv320aic3x-codec.2-0018
    snd-soc-dummy
    snd-soc-dummy

     "cat /proc/asound/pcm "返回:

    00-00: davinci-mcasp.0-tlv320aic3x-hifi tlv320aic3x-hifi-0 : davinci-mcasp.0-tlv320aic3x-hifi tlv320aic3x-hifi-0 : playback 1 : capture 1

     混频器内容如下所示:

    e2e.ti.com/.../amixer_5F00_contents.tar.gz

    [引用 userid="460493" URL"~/support/audio-group/audio/f/audio-forum 1060633/tlv320aic3101-linux-amixer-settings-for HP-outputs/3927105#3927105"]请在回放之前和回放期间转储第0页寄存器。[/quote

    遗憾的是、我无法获取 I2C 输出、因为驱动程序正在使用中、我收到错误消息:  

    "错误:无法将地址设置为0x18:设备或资源忙"

    [引用 userid="460493" URL"~/support/audio-group/audio/f/audio-forum 1060633/tlv320aic3101-linux-amixer-settings-for-hp-output/3927105#3927105"]您上次与我共享的运行时日志告诉我,AVDD 和 DVDD 在函数 aic31xx_configure_ocmv中不正确

    对此进行了解释。 在我使用的 PocketBeagle 中、电源管理器芯片 TPS65217默认将这些功能关闭、尽管我在另一个稳压器的电路板上使用它们。 因此硬件可以正常工作、但器件树未完全配置

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="460493" URL"~/support/audio-group/audio/f/audio-forum 1060633/tlv320aic3101-linux-amixer-settings-for-hp-outputs/3927249#3927249]\n 请检查 aic3x_hw_params、采样率和宽度是什么。 [/报价]

    如何检查?

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

    将日志添加到  aic3x_hw_params 中。

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

    感谢您的日志。 请帮助 I2C 寄存器转储、您知道、i2cdump 是系统标准工具、它访问/de/i2c-2驱动器节点 、而不是编解码器驱动程序。 根据您共享的日志、我认为这似乎是一个问题。 强烈建议转储寄存器。 谢谢。

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

     我收到错误"Error: Could not set address to 0x18: device or resource busy"。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="460493" URL"~/support/audio-group/audio/f/audio-forum 1060633/tlv320aic3101-linux-amixer-settings-for -hp-outputs/3929530#3929530"]根据您共享的日志,我认为这似乎是个问题。

    日志的哪一部分使您认为是 clk 问题?

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

    DaVincia-McASP 48038000 McASP:采样率降低400 PPM

    请分享寄存器转储、有一些状态寄存器可帮助进一步分析。

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

    感谢您的解释。 我想、如果我添加了-f 标志、我可以转储 I2C 内容。 以下是转储文件:

    e2e.ti.com/.../i2cdump.tar.gz

    我 还使用 示波 器检查了音频输出、并意识到其中一个通道上没有信号、甚至不是直接在 IC 引脚上。 这与我们在 I2S 示波器测量上看到的情况相对应-编解码器实际上只输出一个通道。

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

    你(们)好、Pero

    我们可能还有一个 conf-call、您可以 与我共享屏幕、我可以在代码中添加一些日志。 不要忘记准备示波器。

    我认为,这很可能是一个问题。 我的邮件是 shenghao-ding@ti.com

    谢谢

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

    好的、感谢您热情地帮助我。 我可以尝试进行安排、但不确定我是否会成功。  

    您认为需要添加什么内容? 驱动程序、DTS 或第三类产品?

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

    播放前、请转储寄存器和 amixer

    播放期间、请再次转储寄存器和 amixer。 我将对它们进行比较

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

    大家好、我在上一篇文章中做到了这一点:

    [引用 userid="507330" URL"~/support/audio-group/audio/f/audio-forum 1060633/tlv320aic3101-linux-amixer-settings-for HP-outputs/3932925#3932925"]

    感谢您的解释。 我想、如果我添加了-f 标志、我可以转储 I2C 内容。 以下是转储文件:

    [/报价]

    有什么用处吗?

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

    你(们)好、Pero

    由于该项目中使用了 aic3101、但我在 PB-I2C2-TLV320AIC3104.DTS 中找到了以下定义

    tlv320aic3104:tlv320aic3104@18{
    #sound-di-cells =<0>;
    兼容="ti、tlv320aic3104";
    reg =<0x18>;
    GPIO-RESET =<&GPIO3 20 0>;
    };

    您也可以使用 tlv320aic3x.c 作为 tlv32aic3101驱动程序代码,请 修改为以下设置

    兼容="ti、tlv320aic3x";

    我们的一个文档 提到了器件树的正确设置

    tlv320aic3x.txt«sound«bindings«devicetree«Documentation - kernel/gIT/stal/linux.git - Linux 内核稳定树

    -兼容-"字符串"-以下之一:
    "TI、tlv320aic3x"-通用 TLV320AIC3x 器件 
    "TI、tlv320aic33"- TLV320AIC33
    "TI、tlv320aic3007"- TLV320AIC3007
    "TI、tlv320aic3106"- TLV320AIC3106
    "TI、tlv320aic3104"- TLV320AIC3104