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.

[参考译文] TLV320AIC3120:更改高级设置的生产过程

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1106348/tlv320aic3120-production-process-to-change-advanced-settings

器件型号:TLV320AIC3120

软件/硬件:

  - Raspbian (Linux)

  i2c-tools

  包括 alsamixer 在内的 ALSA

  - Raspberry Pi 4计算模块

  - TLV320AIC3120RHBT

 

通过 I2C 或内核驱动程序设置 AGC 寄存器和其他高级设置的最佳做法是什么?

 

根据我们团队的理解、TI 内核驱动程序向 ALSA 公开一些寄存器、例如 DAC 和麦克风 PGA、但不允许进行更高级的设置、例如 AGC 和 DRC。

 

驱动程序正在使用 i2c 总线。 我们通过强制使用注册表值来解决该问题。 同时,ALSA 可能会更改注册表并导致潜在的故障。

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

    驱动 程序代码如下所示

    TLV320AIC31XXSW-Linux 驱动程序或库|德州仪器 TI.com

    您可以在驱动程序代码中编写自己的 kcontrol,以设置要设置的寄存器。

    这可以解决 i2c 访问冲突。、因为它将调用相同的 i2c 读取/写入接口

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

    我正在尝试在 aic31xx_reg_defaults[]列表中将 AIC31XX_MICPGAPI (1、48)和 AIC31XX_MICPGAMI (1、49)的默认值设置为0xc0。 这些更改反映在 amixer/alsamixer 中,但注册表值仍然为0x00。 我们已通过预期结果改变了其他人。 是什么阻止将这些注册表设置为正确的值。

    static const struct reg_default aic31xx_reg_defaults[] = {
    	{ AIC31XX_CLKMUX, 0x00 },
    	{ AIC31XX_PLLPR, 0x11 },
    	{ AIC31XX_PLLJ, 0x04 },
    	{ AIC31XX_PLLDMSB, 0x00 },
    	{ AIC31XX_PLLDLSB, 0x00 },
    	{ AIC31XX_NDAC, 0x01 },
    	{ AIC31XX_MDAC, 0x01 },
    	{ AIC31XX_DOSRMSB, 0x00 },
    	{ AIC31XX_DOSRLSB, 0x80 },
    	{ AIC31XX_NADC, 0x01 },
    	{ AIC31XX_MADC, 0x01 },
    	{ AIC31XX_AOSR, 0x80 },
    	{ AIC31XX_IFACE1, 0x00 },
    	{ AIC31XX_DATA_OFFSET, 0x00 },
    	{ AIC31XX_IFACE2, 0x00 },
    	{ AIC31XX_BCLKN, 0x01 },
    	{ AIC31XX_DACSETUP, 0x14 },
    	{ AIC31XX_DACMUTE, 0x0c },
    	{ AIC31XX_LDACVOL, 0x00 },
    	{ AIC31XX_RDACVOL, 0x00 },
    	{ AIC31XX_ADCSETUP, 0x00 }, // default 0x00 reg 81
    	{ AIC31XX_ADCFGA, 0x80 },
    	{ AIC31XX_ADCVOL, 0x00 },
    	{ AIC31XX_HPDRIVER, 0x04 },
    	{ AIC31XX_SPKAMP, 0x06 },
    	{ AIC31XX_DACMIXERROUTE, 0x00 },
    	{ AIC31XX_LANALOGHPL, 0x7f },
    	{ AIC31XX_RANALOGHPR, 0x7f },
    	{ AIC31XX_LANALOGSPL, 0x7f },
    	{ AIC31XX_RANALOGSPR, 0x7f },
    	{ AIC31XX_HPLGAIN, 0x02 },
    	{ AIC31XX_HPRGAIN, 0x02 },
    	{ AIC31XX_SPLGAIN, 0x00 },
    	{ AIC31XX_SPRGAIN, 0x00 },
    	{ AIC31XX_MICBIAS, 0x00 }, // default 0x00 reg 46
    	{ AIC31XX_MICPGA, 0x80 }, // default 0x80 reg 47
    	{ AIC31XX_MICPGAPI, 0xc0 }, // default 0x00 reg 48
    	{ AIC31XX_MICPGAMI, 0xc0 }, // default 0x00 reg 49

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

    请与我分享所有日志?

    您是否将3120设置为从器件或主器件?

    在设置期间、I2S clk (bck 和 fysnc)是否打开?

    还有一点、您也可以使用 i2cset 来设置这些寄存器、并检查寄存器是否会被更改。