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.

[参考译文] Linux/TLV320AIC3104:TLV320AIC3104 (立体声音频编解码器) Linux 驱动程序麦克风增益设置

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/731022/linux-tlv320aic3104-tlv320aic3104-stereo-audio-codec-linux-driver-mic-gain-settings

器件型号:TLV320AIC3104

工具/软件:Linux

我正在尝试解决嵌入式 Linux 系统上的 tlv320aic3104的麦克风输入削波问题。 为了实现这一点、我尝试在输入混合之前降低增益、然后再进入可编程增益放大器。

数据表指示我可以使用 MIC2L/R 来保留 ADC 控制寄存器(表23)。 第0页/寄存器17)要实现此目的、但我没有为我提供用户空间访问权限的 Linux 驱动程序。 相反、它似乎将该寄存 器映射到左 PGA 混频器的"Mic2L 开关"和"Mic2R 开关"。 通过查看驱动程序代码(Linux/sound/soc/codecs/tlv320aic3x.c)、可以看到正在声明此小工具选项、如下所示:

//左 PGA 混频器(用于 tlv320aic3104)*/
静态常量结构 snd_kcontrol_new aic3104_left_PGA_Mixer_control[]={
SoC_DAPM_SINGLE_AIC3X ("Line1L 开关"、LINE1L_2_LADC_CTRL、3、1、1)、
SoC_DAPM_SINGLE_AIC3X ("Line1R 开关"、LINE1R_2_LADC_CTRL、3、1、1)、
SoC_DAPM_SINGLE_AIC3X ("Mic2L 开关"、MIC3LR_2_LADC_CTRL、4、1、1)、
SoC_DAPM_SINGLE_AIC3X ("Mic2R 开关"、MIC3LR_2_LADC_CTRL、0、1、1)、
};

在打开 Mic2L 开关的情况下、i2cget 返回0x0F (0dB 增益)值、而在关闭时返回0xff (未连接)

我发现宏的定义为:

#define SOC_DAPM_SINGLE_AIC3X (xname、reg、shift、mask、invert)\
SoC_SINGLE_EXT (xname、reg、SHIFT、MASK、INVERK、 \
snd_soc_dapm_get_volsw、snd_soc_dapm_put _volsw_aic3x)

因此、作为黑暗中的一个镜头、我已经将其更改为这个、并重建了:

SoC_DAPM_SINGLE_AIC3X ("Mic2L 开关"、MIC3LR_2_LADC_CTRL、4、0xF、0)、

SoC_DAPM_SINGLE_AIC3X ("Mic2R 开关"、MIC3LR_2_LADC_CTRL、0、0xF、0)、

我希望这可以让我能够完全访问该寄存器、但这似乎使设置消失了、因此看起来没有效果。

最后请注意、我使用的是2014版驱动程序。 我已经将其与 github.com/torvalds/linux 上的最新版本进行了比较、但看不到可以解决此问题的任何差异。

我们非常感谢您的任何帮助或建议。

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

    TI 不为这些编解码器提供驱动程序支持。 驱动程序非常陈旧、设计和支持它们的团队不再与 TI 合作。 我可以为您提供器件配置、电路建议或原理图审阅方面的帮助。

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

    您好、Steve、

    感谢您回来。 我通过将输入范围降至编解码器来解决了这个问题。 我发现的一个问题是、提供的基准电压为1.8V、但在进入编解码器上的 MIC2R 和 MIC2L 引脚之前、470nF 电容器的另一侧、基准电压为1.2V。 这意味着信号一直达到0V 电压轨并被削波。 您是否对电压为何会更低有任何见解?

    AVDD 和2个 DRVDD 引脚连接到3V3电源、我测量到该电源在大约3.1V 时略低。

    IOVDD 也连接到3V3电源、但数据表似乎表明它通常为1.8V、最大为3.6V。 我猜这不会导致我看到的问题。

    DVDD 连接到1V8电源、即我测得的正确值。

    DVSS、AVSSI、AVSS2和 DRVSS 引脚均接地。

    McASP/I2S 看起来工作正常、I2C 也是如此

    有什么想法、为什么我在 MIC2L 和 MIC2R 引脚上获得1.2V 基准电压?

    Keith、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    更新了:我注意到 MCLK 输入没有按我的预期运行。 我们应该使用24MHz 时钟驱动它、但它似乎保持在1.2V。 似乎是要首先解决的问题。 我需要弄清楚1.2V 是来自 McASP HCLK 引脚还是编解码器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    忽略之前有关时钟速率的帖子。 我测量的测试点错误。 MCLK 是12MHz 的驱动器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Keith、

    输入引脚上应存在偏置电压。 通常、它大约为1.35-1.4V。 即使 AVDD 较低、我也不希望该值发生太大的变化。

    满量程输入电压为.707VRMS、因此峰值为1V。 因此、除非您已经超过满量程、否则您不应该真正进行削波。


    此致、
    -Steve Wilson
x 出现错误。请重试或与管理员联系。