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.

[参考译文] TLV320AIC3110:同时捕获和播放声音时、扬声器看起来像吹风的声音。

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1403842/tlv320aic3110-sound-looks-like-blown-speaker-while-capturing-and-playing-at-the-same-time

器件型号:TLV320AIC3110

工具与软件:

我们 正在努力实现 Linux 设计 、该设计 将 TLV320AIC3110用作音频编解码器。 该系统在单独采集和录制时运行良好。 但是、在同时捕获和播放声音时、声音看起来像是一个熔断的扬声器。  系统基于带有 ALSA 的 Linux 内核6.6.x。  我们不明白为什么会发生这种情况。 有人可以帮忙吗?  谢谢。

这是原理图:

以下是混音器内容:

numid=4,iface=混频器、NAME="MIC PGA Capture Volume"(IC PGA 捕获音量)
; type=integer、access=rw--R--、values=1、min=0、max=119、step=0
: values=110
|dBscale-min=0.00dB、step=0.50dB、MUTE=0
numid=1,iface=mixer, name='ADC 精细捕获卷'
; type=integer、access=rw--R--、values=1、min=0、max=4、step=0
: values=2.
|dBscale-min=0.00dB、step=0.10dB、MUTE=0
numid=2、iface=混频器、name='ADC 捕获开关'
; type=Boolean,access=rw----- 、值=1
: values=on
numid=3,iface=mixer, name='ADC Capture Volume"(numid=3、iface=mixer、name='ADC 捕获卷)
; type=integer、access=rw--R--、values=1、min=0、max=64、step=0
: values=56.
|dBscale-min=-20.00dB、step=0.50dB、MUTE=0
numid=15,iface=混频器,名称='左输入'
; type=enomed,access=rw----- ,values=1、items=4
;项目#0 '关闭'
;项目#1 '左数据'
;项目#2 '右侧数据'
;项目#3 'MONO'
: values=1
numid=8,iface=混音器、NAME='DAC 播放音量'
; type=integer、access=rw--R--、values=2、min=0、max=175、step=0
: values=119,119
|dBscale-min=-63.50dB、step=0.50dB、MUTE=0
numid=16、iface=混频器、名称="右输入"
; type=enomed,access=rw----- ,values=1、items=4
;项目#0 '关闭'
;项目#1 '右数据'
;项目#2 '左数据'
;项目#3 'MONO'
: values=1
numid=11、iface=混音器、名称= HP 模拟回放音量
; type=integer、access=rw--R--、values=2、min=0、max=127、step=0
: values=0
|dBscale-min=-63.50dB、step=0.50dB、MUTE=0
numid=9,iface=Mixer,name='HP 驱动程序播放交换机'
; type=Boolean,access=rw----- 、值=2
: values=off,off
numid=10、iface=mixer、name='HP 驱动程序播放音量'
; type=integer、access=rw--R--、values=2、min=0、max=9、step=0
: values=0
|dBscale-min=0.00dB、step=1.00dB、MUTE=0
numid=17, iface=Mixer, name='HP 左侧交换机'
; type=Boolean,access=rw----- 、值=1
: values=off
numid=12、iface=混频器、name='HP 输出驱动器上电时间'
; type=enomed,access=rw----- ,values=1、items=12
;项目#0 '0us'
;项目#1 '15.3us'
;项目#2 '153us'
;项目#3'1.53ms'
;项目#4'15.3ms'
;项目#5 '76.2ms'
;项目#6'153ms'
;项目#7'304ms'
;项目#8'610ms'
;项目#9'1.22s'
;项目#10'3.04s'
;项目#11'6.1s'
: values=0
numid=13、iface=混频器、name='HP 输出驱动器斜升步进'
; type=enomed,access=rw----- ,values=1、items=4
;项目#0 '0ms'
;项目#1 '0.98ms'
;项目#2 '1.95ms'
;项目#3 '3.9ms'
: values=3.
numid=18, iface=混频器, name='HP 右侧交换机'
; type=Boolean,access=rw----- 、值=1
: values=off
numid=22,iface=混频器,name='MIC1LM M-Terminal'
; type=enomed,access=rw----- ,values=1、items=4
;项目#0 '关闭'
;项目#1 "FFR 10 Ohm"
;项目#2 "FFR 20欧姆"
;项目#3 'FFR 40 Ohm'
: values=0
numid=21、iface=混频器、名称='MIC1LM P 端子'
; type=enomed,access=rw----- ,values=1、items=4
;项目#0 '关闭'
;项目#1 "FFR 10 Ohm"
;项目#2 "FFR 20欧姆"
;项目#3 'FFR 40 Ohm'
: values=0
numid=19、iface=混频器、名称='MIC1LP P 端子'
; type=enomed,access=rw----- ,values=1、items=4
;项目#0 '关闭'
;项目#1 "FFR 10 Ohm"
;项目#2 "FFR 20欧姆"
;项目#3 'FFR 40 Ohm'
: values=1
numid=20、iface=混频器、名称='MIC1RP P 端子'
; type=enomed,access=rw----- ,values=1、items=4
;项目#0 '关闭'
;项目#1 "FFR 10 Ohm"
;项目#2 "FFR 20欧姆"
;项目#3 'FFR 40 Ohm'
: values=1
numid=23、iface=混频器、name="从左 DAC 输出"
; type=Boolean,access=rw----- 、值=1
: values=on
numid=24、iface=混频器、name="从 MIC1LP 输出左侧'
; type=Boolean,access=rw----- 、值=1
: values=off
numid=25,iface=混频器、name="从 MIC1RP'左输出"
; type=Boolean,access=rw----- 、值=1
: values=off
numid=27,iface=mixer, name="从 MIC1RP'输出右
; type=Boolean,access=rw----- 、值=1
: values=off
numid=26、iface=mixer、name="从右 DAC 输出"
; type=Boolean,access=rw----- 、值=1
: values=on
numid=7、iface=混频器、名称="扬声器模拟回放音量"
; type=integer、access=rw--R--、values=2、min=0、max=127、step=0
: values=127,127.
|dBscale-min=-63.50dB、step=0.50dB、MUTE=0
numid=5,iface=Mixer,NAME="Speedaker Driver Playback Switch"(编程驱动程序播放开关)
; type=Boolean,access=rw----- 、值=2
: values=on,on
numid=6,iface=Mixer,name="Speeder 驱动程序播放音量"
; type=integer、access=rw--R--、values=2、min=0、max=3、step=0
: values=1、1
|dBscale-min=6.00dB、step=6.00dB、MUTE=0
numid=28,iface=混频器, NAME='计时器左侧开关'
; type=Boolean,access=rw----- 、值=1
: values=on
numid=29,iface=混频器, NAME='断路器右侧开关'
; type=Boolean,access=rw----- 、值=1
: values=on
numid=14、iface=混频器、name="音量软步进"
; type=enomed,access=rw----- ,values=1、items=3
;项目#0 'FAST'
;项目#1 'slow'
;项目#2 "已禁用"
: values=0

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

    您好!

    您能解释一下、它听起来像是一个吹风的扬声器、是什么意思吗? 是失真吗? 声音太大或太安静? 您能否为扬声器输出和/或输入提供一些示波器输出? 是否在播放和录制与同时播放和录制之间更改任何设备设置? 谢谢、让我知道这些信息。

    此致!
    J·米尔

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

    你好,米尔杰弗瑞斯,我做了两个记录来演示这个问题。 声音看起来太大。

    我用手机在离扬声器20厘米远的地方录制了两次。 很抱歉有很高的音量! 麦克风和扬声器物理位置均位于同一设备上、方向相反。 我不会更改播放和捕获之间的任何设置。 感谢您的帮助。

     e2e.ti.com/.../No_5F00_issue.wav

    e2e.ti.com/.../With_5F00_issue.wav

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

    我发现了这个问题、但我还没有解决。 该问题是由于采样率不同而发生的。 我的播放频率为48kHz、录制频率为16kHz。 这会将回放数据的采样下采样至16kHz、使声音类似于熔断的扬声器的声音。 根据 Linux 文档、有对称采样率选项。 我在驱动器中禁用了它、但它没有解决问题。

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

    是的、这听起来像是在输出中降低采样率。 ADC 和 DAC 可能具有不同的音频采样率、如果查看数据表(第66页)中的器件 PLL 时钟树、您会看到有一个"DAC_CLK"和"ADC_CLK"。 您也许可以将 NADC 调整为 NDAC 的3倍、从而能够将 ADC 路径上的时钟分频为16kHz、将 DAC 路径上的时钟分频为48kHz。 您可以使用 I2C 设置 PLL 参数。 您可以在此处使用 PLL 计算器工具来查找需要设置的其他值: https://e2e.ti.com/support/audio-group/audio/f/audio-forum/946529/faq-i-need-help-configuring-the-pll-on-my-audio-codec-adc-is-there-an-easy-way-to-do-so

    如果您不想手动设置 PLL、我想问一下为什么输入采样率要低得多? 在项目处理阶段、以48kHz 的频率进行录制和回放以及对输入音频进行下采样可能会更轻松。

    如果您在这方面需要更多帮助、请告诉我。

    此致!
    MIR

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

    感谢您的答复。 是的、我在阅读产品说明书时注意到了不同的时钟、而且我知道使用相同的采样率可以避免问题。 但是、我希望一切正常。 我一直在研究 Linux 驱动程序一段时间,但还没有解决它。 如果您对 Linux 驱动程序有任何了解、请向我指出正确的方向来解决此问题。

    感谢您的支持。

    谢谢!

    levent

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

    嗨、levent:

    我正在尝试复制您的用例、但我需要一段时间才能进行设置。 您将需要在器件树中编辑 TLV320AIC3110节点、例如在 Linux 内核的 documentation/devicetree/bindings/sound/tlv320aix31xx.txt 示例中。 如果有任何相关的更新、我将在这里更新。 很遗憾、我们的团队目前没有任何 Linux 音频专家。 但是、您可以在 tlv320aic31xx.c 驱动程序文件中的 aic31xx_rate_divs 结构中看到一些示例 PLL 分频器值、也可以使用 PLL 计算器获取正确的值、将音频速率设置为48kHz、然后将 NADC 设置为预期值的3倍、从而获得16kHz 的 ADC 时钟和48kHz 的 DAC 时钟。

    此致!
    MIR

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

    实际上,我花了几天时间,但我不能解决这个问题。 我目前手动设置时钟驱动程序、如您所述。 但只针对特定速率工作。 感谢您的支持。  

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

    您好!

    您是否仍需要有关此方面的帮助? 还需要弄清楚什么?

    此致!
    MIR

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

    大家好、现在、我们已强制系统以特定的速率工作:输出48kHz、输入16kHz。 随着时间的推移、我们需要解决这个问题。 目前、如果所有音频输入和输出不匹配这些速率、则无需进行下采样或上采样。 这不是一个大问题、但如果您能就此提供任何帮助或指导、我们将不胜感激。 感谢您的帮助。

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

    您好!

    无法同时在48k 时输出和16k 时输入的问题是否存在? 或者、您是否也在尝试以不同的速率(如44.1kHz)回放、并且仍然以16kHz 的频率进行录制?  

    如果您尝试同时以不同的采样速率播放和录制、则应能够更改 PLL 设置以适应这种情况。 使用 CodecControl 软件、我能够生成一些 PLL 值示例、您需要输入时钟及其频率、如下所示:

    以下是此列表中的第一个时钟配置生成的 I2C 代码、作为示例。 如果您的输入时钟频率不同、则这些值将不起作用。 您可以使用可从以下网站下载的 CodecControl 软件计算此数字并自行记录 I2C: https://www.ti.com/tool/download/SLAC366

    W 30 4 03 91 07 06 90
    西30 12 83
    W 30 13 8e.
    W 30 14 00 80
    W 30 16 20
    W 30 17 04
    W 30 b 87
    W 30 c 82.
    W 30 d 00 80
    W 30 f 20
    W 30 10 04

    如果您需要更多帮助、可以发布您的设备树或您在设备配置中设置的参数吗?

    此致!
    MIR

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

    嗨、Mir、

    我们遇到的问题是、我们无法同时输出与输入不同的采样率、这与 Linux"tlv320aic31xx"驱动程序相关。 我没有尝试通过 I2C 更新编解码器、因为 AFAIK、ALSA 负责管理音频控制和 I2C 工作负载。 感谢您的帮助、它有助于推动工作不断向前发展。 我可能需要联系编写了编解码器驱动程序的 TI 开发人员、以获得进一步的帮助。  

    谢谢!

    levent

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

    您好!

    如果您希望仅通过驱动程序实现此功能、则应将 PLL 分频器设置为此行:

    {12000,000,48000、71681680128、 7、2128、14、3}

    我使用您所需的规格从 CodecControl EVM 软件获取了这些值。 这用于12MHz 的 MCLK。  

    如果将 tlv320aic31xx.c 驱动程序文件中 aic31xx_divs 表的48K 部分替换为该行、则可能会解决您的问题。 您应将设备设置为48kHz 速率、然后 PLL 会设置为为 ADC 提供16kHz 的时钟、为 DAC 提供48kHz 的时钟。  

    如果您在这方面需要更多帮助、请告诉我。

    此致!
    MIR