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.

[参考译文] TLV320AIC3100:TLV320AIC3100 24MHz 驱动程序支持

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1269307/tlv320aic3100-tlv320aic3100-24mhz-driver-support

器件型号:TLV320AIC3100

我已经将 AIC3100与 NXP imx8mm 配合使用、我已将 AIC3100与 Linux 内核集成在一起的编解码器驱动程序。 现在编解码器寄存成功、但是当我尝试使用 tinyalsa 播放 WAV 文件时、它给出了"播放文件时出错"的错误。  

器件树配置:

sound-tlv320aic31xx {
+兼容="简单音频卡";
+ simple-audio-card、name ="tlv320aic31xx-codec";
+ simple-audio 卡、格式="I2S";
+ simple-audio-card、frame-master =<&cpudai2>;
+ simple-audio 卡、bitclock-master =<&cpudai2>;
+/*简单音频卡,MCLK-FS=<256>;*/
+ simple-audio 卡、小工具=
+"耳机"、"耳机插孔";
+简单音频卡、路由=
+"耳机插孔"、"HPL"、
+"耳机插孔"、"HPR";
+
+ cpudai2:simple-audi-Card,cpu {
+ sound-dai =<&SAI2>;
+};
+
+简单音频卡,编解码器{
+ sound-dai =<&tlv320aic31xx>;
+ Clocks =<&CODEC_osc>;
+};
+};
+
+时钟{
+ CODEC_osc:AUD_MCLK{
+ compatible ="固定时钟";
+#clock-cells =<0>;
+时钟频率=<24000000>;
+ clock-output-names ="CODEC-MCLK";
+};
+};

SAI2时钟:

@@-118,8+194,9 @@&SAI2{
pinctrl-0 =<&pinctrL_SAI2>;
分配的时钟=<&clk IMX8MM_CLK_SAI2>;
分配的 clock-parents =<&clk IMX8MM_AUDIO_PLL1_OUT>

 分配的时钟速率=<24576000>;
-状态="已禁用";
+状态="可以";
};

编解码器能够在 I2C 节点中检测到:

tlv320aic31xx:编解码器@18 {
+ compatible ="ti, TLV320AIC3100";
+ reg =<0x18>;
+#sound-Da-cells =<0>;
+/*稳压器*/
+ AVDD-SUPPLY =<Registered_3p3v>;
+ HPVDD-SUPPLY =<Registered_3p3v>;
+ SPRVDD-SUPPLY =<Registered_5V>;
+ SPLVDD-SUPPLY =<Registered_5V>;
+ DVDD-SUPPLY =<Registered_1p8v>;
+ IOVDD-SUPPLY =<Registered_1p8v>;
+
+ ai31xx-micbias-vg =<1>;
+};

问题:

root@picoimx8mm:/home/ubuntu # dmesg | grep tlv
[ 40.059531] tlv320aic31xx-codec 1-0018:aic31xx_set_di_SYSCLK:不支持的频率24576000
[ 40.088026] tlv320aic31xx-codec 1-0018:aSOC:tlv320aic31xx-hifi 上的 SND_SoC_DAI_SET_SYSCLK 出错:-22
[ 40.121946] tlv320aic31xx-codec 1-0018:simple-card:set_SysClk 错误
[ 40.138078] 300200000.SAI-tlv320aic31xx-hifi:ASOC:在30020000.SAI-tlv320aic31xx-hifi 上发生 SND_SoC_LINK_INIT 错误:-22
[40.168804] ASOC-simple-card: probe of sound-tlv320aic31xx failed, with error - 22
根@picoimx8mm:/home/ubuntu

在外部将24MHZ 振荡器馈送到编解码器 MCLK、但是编解码器驱动程序不支持。

sound/45V soc codecs/tlv320aic31xx.c (无24Mhz 支持)

/*通过将 ADC 分频器配置为0、可以禁用 ADC 分频器*/
静态常量结构 aic31xx_rate_divs aic31xx_divs[]={
/* MCLK/p 速率 PLL:j d dosr ndac aors nadc mAdc */
/* 8k 速率*/
{12000,000,8000、81921920128、 48、2128、48、2}、
{12000,000,8000、81921920128、 32、3128、32、3}、
{12500,000,8000、78648643128、 48、2128、48、2}、
/* 11.025k 速率*/
{12000,000,11025、75265264128、 32、2128、32、2}、
{12000,000,11025、84674672128、 24、3128、24、3}、
{12500,000,11025、72252253128、 32、2128、32、2}、
/* 16k 速率*/
{12000,000,16000、81921920128、 24、2128、24、2}、
{12000,000,16000、81921920128、 16、3128、16、3}、
{12500,000,16000、78648643128、 24、2128、24、2}、
/* 22.05k 速率*/
{12000,000,22050、75265264128、 16、2128、16、2}、
{12000,000,22050、84674672128、 12、3128、12、3}、
{12500,000,22050、72252253128、 16、2128、16、2}、
/* 32k 速率*/
{12000,000,32000、81921920128、 12、2128、12、2}、
{12000,000,32000、81921920128、 8、3128、8、3}、
{12500,000,32000、78648643128、 12、2128、12、2}、
/* 44.1k 速率*/
{12000,000,44100、75265264128、 8、2128、8、2}、
{12000,000,44100、84674672128、 6、3128、6、3}、
{12500,000,44100、72252253128、 8、2128、8、2}、
/* 48K 速率*/
{12000,000,48000、81921920128、 8、2128、8、2}、
{12000,000,48000、76800、96、 5、4、96、5、4}、
{12500,000,48000、78648643128、 8、2128、8、2}、
/* 88.2k 速率*/
{12000,000,88200、75264、64、 8、2、64、

TI 驱动程序 TLV320AIC3100编解码器驱动程序不提供24MHZ 支持请为我们提供支持以解决该问题?

此致、

桑塔纳库马尔斯

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

    请允许我向我们的编解码器专家咨询您的请求。

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

    谢谢、请支持我们解决问题?

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

    您可以从如下所示的 GUI A 中找到时钟配置:

    • 单击数字音频处理块

    • 单击内部时钟

    • 如图所示、输入您的 MCLK 和 Sampling 频率、结果显示 PLL 时钟参数

    • 根据您选择的上述设置配置您的寄存器

    此致。

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

    您好!

    通过软件生成24MHz、并将这些补丁添加到驱动程序中  

    静态常量结构 aic31xx_rate_divs aic31xx_divs[]={
    +/* MCLK/p 速率 PLL:j d dosr ndac aors nadc mAdc */
    +/* 8k 速率*/
    +{24000,000,44100、7,560,128、 3、5128、3、5}、
    +{24000,000,44100、75265264128、 4、4128、16、4}、
    };

    控制台日志:

    [ 40.034074] aic31xx_codec_probe
    [ 40.036874]## aic31xx_set_dai_SysClk:clk_id = 0、freq = 24000000、dir = 0

    root@picoimx8mm:/home/ubuntu # aplay 48000_16_st.wav
    [ 304.640543] FSL-SAI 30020000.SAI:无法推导所需的 Tx 速率:1411200
    [ 304.648159] FSL-SAI 30020000.SAI:ASOC:30020000.SAI 上的 SND_SoC_DAI_HW_PARAMS 错误:-22
    [ 304.657061] 300200000.SAI-tlv320aic31xx-hifi:ASOC:SoC_PCM_HW_params()失败(-22)
    ALSA lib pcm_direct.c:1284:(snd1_pcm_direct_initialization_slave)无法安装硬件参数
    ALSA lib pcm_dmix.c:1044:(SND_pcm_dmix_open)无法初始化从器件
    Aplay:main:831:音频打开错误:无效自变量
    根@picoimx8mm:/home/ubuntu

    请帮助我们解决此问题、如果有任何补丁提供给我们、我们将不胜感激。

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

    您好,Kumar

    您是否会这么好地将平台 MCLK 设置为12MHz、驱动程序似乎支持12MHz?

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

    您好!

    好的、驱动程序支持将为12MHz、但编解码器 MCLK 由外部时钟24MHz 提供、您能告诉我们可以继续执行哪一步吗?

    此致、
    桑塔纳库马尔斯

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

    您好,Kumar

    您是否会如此友好地检查 48000_16_st.wav 的采样率是否与24MHz 设置不匹配?

    这个 wav 文件看起来是48kHz、并且24MHz 设置只支持44.1kHz。  

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

    是的、我们在电路板上播放48kHz 文件、但位时钟和帧时钟没有获得正确的时钟。

    探测编解码器时钟

    1.MCLK=24MHz
    2.位时钟:78khz
    3.帧时钟:25KHz

    您能否支持编解码器启动?

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

    由于文件是48kHz、您应该添加48000Hzm 而不是44100?

    +{24000000、 44100 、7,560,128、3、 5128、3、5}、
    +{24000000、 44100 、75265264128、4、 4128、16、4}、

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

    您好!

    您能不能请检查我们的旧补丁、在驱动程序文件中添加了这些更改、但仍然没有生成时钟。

    此致、
    桑塔纳库马尔斯

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

    请向我提供基于48000Hz 的数据

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

    您好!

    为您附上了图片。

    测量:

    1.MCLK=24MHz
    2.位时钟:78khz
    3.帧时钟:25KHz

    把司机交给你了

    e2e.ti.com/.../1423.tlv320aic31xx.c

    i2cdump -f -y 1 0x18

    0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
    00:01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00?..........
    10:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 14 ......... ?
    20: 06 3e 00 7f 7f ff 7f 02 02 00 20 86 00 80?.. ???
    30:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    40:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    50:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    B0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    D0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    根@pico-imx8mm:~#

    正在播放 WAV 文件:

    root@pico-imx8mm:~# aplay 44100_16_st.wav
    [87.580362]## aic31xx_hw_params:宽度16速率44100
    [ 87.5864] zumi SYSCLK 24000000 p_div 2
    [ 87.589450] zumi MCLK_p 12000000
    [87.600295] PLL 7.5264/2剂量128 n 4 m 4 aosr 128 n 16 m 4 BCLK_n 16
    [ 87.606762] zumi :率= 44100 SAI->BCLK_RATIO = 0
    [87.611834] zumi : slots = 2 slot_width = 16
    [87.616381] 1. 频率1411200Hz 的 SKZumi 比率0基于时钟0Hz
    [87.622714] 1. SKZumi verid 主要3minor 1
    [87.626930] 2. 频率为1411200Hz 时的 ZUMI 比率17基于时钟24000000Hz

    [ 304.640543] FSL-SAI 30020000.SAI:无法推导所需的 Tx 速率:1411200
    [ 304.648159] FSL-SAI 30020000.SAI:ASOC:30020000.SAI 上的 SND_SoC_DAI_HW_PARAMS 错误:-22
    [ 304.657061] 300200000.SAI-tlv320aic31xx-hifi:ASOC:SoC_PCM_HW_params()失败(-22)
    ALSA lib pcm_direct.c:1284:(snd1_pcm_direct_initialization_slave)无法安装硬件参数
    ALSA lib pcm_dmix.c:1044:(SND_pcm_dmix_open)无法初始化从器件
    Aplay:main:831:音频打开错误:无效自变量
    根@picoimx8mm:/home/ubuntu

    附加了器件树文件

    e2e.ti.com/.../imx8mm_2D00_pico.txt

    请支持这一问题。

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

    您好,Kumar

    根据 devicetree、 aic3100是从站、clks (位时钟和帧时钟)由 SAI2生成、后者是平台模块、您也可以咨询平台供应商、了解为什么 clk 错误?

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

    您好!

    播放44100Khz 文件并添加这些更改。

    现在、时钟的测量

    1. MCLK = 24MHz (您能告诉编解码器将支持高达24MHz 的外部时钟)

    2. bclk=1.5Mhz

    3.帧时钟= 46.9khz

    这将是44100khz 正确的、但为什么46.9kkhz 会生成?

    添加了生成的 PLL、您能否说明什么是 PLL_OUTPUT_CLOCK、它将如何在器件树中进行探测或配置?

    e2e.ti.com/.../pico_2D00_codec_2D00_pll.xlsx

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

    您好,Kumar

    如您所知、BCLK 和帧时钟都是由 SAI2而不是 aic3100生成的、您也可以咨询平台供应商。

    对于处于从模式的 aic3100、一旦 BCLK 和帧 clk 可以输出正确的时钟、aic3100将正常工作。

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

    感谢您的意见。 现在、时钟已成功生成、帧时钟将按预期变为44kHz。 SAI 时钟配置中出现问题。

    扬声器中没有音频、您能告诉我们需要在上述补丁中配置的任何内容吗?

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

    请上传示波器测量的 ws clk 和 bit clk 波形、并提供最新日志。 谢谢。

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

    很抱歉分享这个波形、但是我们测量了位时钟(1.5Mhz)和 WS 时钟(44.1kHz)。

    日志下方

    dmesg:

    [ 4.956073] fsl-jr-uio 30901000/jr:uio 器件全名 Fsl-jr0已初始化
    [4.96442] aic31xx->dev,## aic31xx_codec_probe
    [ 4.96953]## aic31xx_set_dai_SYSCLK:clk_id = 0、freq = 24000000、dir = 0
    [ 4.976814] aic31xx_SET_DAI_SYSCLK:频率24000000
    [4.983069]## aic31xx_set_dai_fmt:FMT = 0x4001
    [4.992175]## aic31xx_set_bias_level:0 -> 1
    [ 4.999358] tlv320aic31xx-codec 1-0018:无法重置设备:-6
    [ 5.009899] tlv320aic31xx-codec 1-0018:无法同步寄存器0x9f-0x9f。 -6
    [5.023365]恢复高速缓存失败:-6
    [ 5.782944] tlv320aic31xx-codec 1-0018:aSOC:tlv320aic31xx-codec.1-0018:-16:-16上发生 SND_SoC_COMPUTER_UPDATE_BITS 错误
    [ 5.783088] tlv320aic31xx-codec 1-0018:aSOC:tlv320aic31xx-codec.1-0018:-16:-16上出现 SND_SoC_COMPUTER_UPDATE_BITS 错误
    [ 5.952897] tlv320aic31xx-codec 1-0018:aSOC:tlv320aic31xx-codec.1-0018:-16:-16上出现 SND_SoC_COMPUTER_UPDATE_BITS 错误
    [ 5.953078] tlv320aic31xx-codec 1-0018:aSOC:tlv320aic31xx-codec.1-0018:-16:-16上出现 SND_SoC_COMPUTER_UPDATE_BITS 错误



    root@pico-imx8mm:~# aplay 44100_16_st.wav
    [79.242407]## aic31xx_hw_params:宽度16速率44100
    [ 79.247490] SYSCLK 24000000 p_div 2
    [ 79.251477] MCLK_p 24000000帧大小32
    [ 79.255954] PLL 7.5264/2剂量128 n 4 m 4 aosr 128 n 4 m 4 BCLK_n 16
    [ 79.262337] 速率= 44100 SAI->BCLK_RATIO = 0
    [79.267400] 插槽= 2 SLOT_WIDTH = 16
    [79.271946] 1. 基于时钟0Hz 频率的1411200Hz 比率0
    [79.278222] 1. Verid 主要3次要1
    [79.282417] 2.  频率为1411200Hz 时、基于时钟22579200Hz 时的比率为16
    [79.289225] 3. RET 0 savesub 1411200
    [79.293251]存储比率
    [79.296055]继续4
    播放波形"44100_16_st.wav":有符号16位小端序、速率44100Hz、立体声
    根@pico-imx8mm:~#

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

    请回答我的以下问题

    此问题需要波形、我们将检查 clk 中是否存在抖动。

    从日志中、您能告诉我 SAI->BCLK_RATIO = 0意味着什么吗?

    从日志中可以看出、在探头期间 i2c 有什么问题、请解决该问题?

    [ 4.999358] tlv320aic31xx-codec 1-0018:无法重置设备:-6
    [ 5.009899] tlv320aic31xx-codec 1-0018:无法同步寄存器0x9f-0x9f。 -6
    [5.023365]恢复高速缓存失败:-6
    [ 5.782944] tlv320aic31xx-codec 1-0018:aSOC:tlv320aic31xx-codec.1-0018:-16:-16上发生 SND_SoC_COMPUTER_UPDATE_BITS 错误
    [ 5.783088] tlv320aic31xx-codec 1-0018:aSOC:tlv320aic31xx-codec.1-0018:-16:-16上出现 SND_SoC_COMPUTER_UPDATE_BITS 错误
    [ 5.952897] tlv320aic31xx-codec 1-0018:aSOC:tlv320aic31xx-codec.1-0018:-16:-16上出现 SND_SoC_COMPUTER_UPDATE_BITS 错误
    [ 5.953078] tlv320aic31xx-codec 1-0018:aSOC:tlv320aic31xx-codec.1-0018:-16:-16上出现 SND_SoC_COMPUTER_UPDATE_BITS 错误

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

    您好!

    在由 GPIO 引脚指定的模块复位后、现在不会出现上述日志。

    root@pico-imx8mm:~# aplay pcm1644m.wav
    [947.498999]## aic31xx_hw_params:宽度16速率44100
    [ 947.504082] zumi SYSCLK 24000000 p_div 2
    [ 947.508056] zumi MCLK_p 12000000帧大小32
    [ 947.931576] aic31xx_setup_pll :所选采样率(44100)和支持的格式
    [ 947.943066] PLL 7.5264/2剂量128 n 8 m 2 aosr 128 n 8 m 2 BCLK_n 8
    [947.949358] Rate = 44100 SAI->BCLK_Ratio = 0 /**** 打印结构成员 SAI->BCLK_RATIO /
    [ 947.954452]插槽= 2 SLOT_WIDTH = 16
    [947.959011]频率为1411200Hz 的 zumi Ratio 0 (基于时钟0Hz)
    [947.965125] zumi verid 主要3minor 1
    [ 947.969156] clk 速率= 22579200 ret = 0比率= 16 div = 1
    频率为1411200Hz 时、基于时钟22579200Hz 时的[947.974785]比率16
    [ 947.981588] ret 0 savesub 1411200
    [947.985607]存储比率
    [ 947.988409]继续4
    播放波浪'pcm1644m.wav':有符号16位小端序,速率44100Hz,单声道
    根@pico-imx8mm:~#

    问题:已连接扬声器和麦克风、但仍然没有音频。

    测得的波形

    BCLK - 1.5MHz

    WCLK 44.1kHz

    MCLK 24MHz

    下面的屏幕截图显示了编解码器的扬声器连接

    播放音频之前:

    未指定大小(使用字节数据访问)
        0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
    00:00 00 01 66 00 11 04 00 00 00 00 01 00 80 80 00 ...
    10:08 00 01 01 80 80 04 00 00 01 00 00 00 00?????? ……………………………
    20:00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00……?..........
    30:00 00 00 02 32 12 03 02 02 11 10 00 01 04 00 14 ...?2????? ……………………………
    40: 0C D8 00 6F 38 00 00 00 00 00 00 ee 10 D8 7e E3 ???.o8... ???~?
    50:00 00 00 80 00 00 00 00 7f 00 00 00 00 00 00 00 00…… ?………
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    B0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    D0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    根@pico-imx8mm:~#

    播放音频后

    root@pico-imx8mm:~# i2cdump -f -y 1 0x18
    未指定大小(使用字节数据访问)
       0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
    00:00 00 01 66 03 21 07 14 90 00 08 02 00 80 .. f???????????????????
    10:08 00 08 02 80 80 04 00 00 01 00 00 00 08 00?????? ……………………………
    20:00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00……?..........
    30:00 00 00 02 32 12 03 02 02 11 10 00 01 04 00 14 ...?2????? ……………………………
    40: 0C D8 00 6F 38 00 00 00 00 00 00 ee 10 D8 7e E3 ???.o8... ???~?
    50:00 00 00 80 00 00 00 00 7f 00 00 00 00 00 00 00 00…… ?………
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    B0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    D0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    根@pico-imx8mm:~#

    请回答我们以下问题、

    您能否复查原理图、以及编解码器 MCLK 是由外部振荡器馈送的?


    2.参阅了 TI 文档"用于音频器件的音频串行接口配置"我们的连接与图3文档中的连接类似。

    您能否回顾第1点和第2点并向我提供反馈:TLV320AIC3100编解码器支持外部 MCLK?  

    如果编解码器不支持外部 MCLK、那么、如果可能的话、MCLK 可以由 BCLK 生成?

    此致、
    桑塔纳库马尔斯

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

    我已经将审核任务分配给我们的硬件人员。

    • 我想知道的是、为什么 bitclk 为1.5而不是1.4112MHz? 对于44100采样率、bitclk 必须为1.4112MHz
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    抱歉。 位时钟的频率仅为1.4112MHz。  

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

    1.上面的寄存器显示所有 DAC 通道均未通电且 PLL 未启用。

    请参阅以下注意事项、请重新访问您的寄存器设置。

    e2e.ti.com/.../register-before-_2D00_-after-playing.txt

    2.不建议像应用程序中提到的那样使用 OSC。 注意: 您可以使用 BCLK、但要确保各自的时钟符合下表中来自时钟树的标准。

    此致。

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

    您能否说明我们如何使用 BCLK 而非 MCLK、请说明以下步骤。  

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

    您好!

    根据您的意见、我们在下面解决了一些问题。

    在播放音频之前、运行以下命令

    在 alsamixer 中选择了以下配置

    root@pico-imx8mm:~# amixer -c 0
    简单混频器控制"Speedaker"、0
    功能:pswitch pswitch-joined
    播放频道:单声道
    单声道:播放[关闭]
    简单混频器控制"计时器模拟"、0
    功能:pvolume pvolume 联接
    播放频道:单声道
    限制:播放0 - 127
    单声道:播放0 [0%][-63.50dB]
    简单混频器控制"Speedaker Driver"、0
    功能:pvolume pvolume pvolume 连接 pswitch pswitch-joined
    播放频道:单声道
    限制:播放0 - 3
    单声道:播放0 [0%][6.00dB][Off]
    简单混频器控制"MIC PGA"、0
    功能:cvolume capacity-joined
    捕捉通道:单声道
    限制:捕捉0 - 119
    单声道:捕捉0 [0%][0.00dB]
    简单混频器控制'adc'、0
    功能: cvolume cvolume-joined cswitch cswitch-joined
    捕捉通道:单声道
    限制:捕捉0 - 64
    单声道:采集24个[38%][-8.00dB][OFF]
    简单混频器控制'adc 精细',0
    功能:cvolume capacity-joined
    捕捉通道:单声道
    限制:捕捉0 - 4
    单声道:采集4 [100%][0.40dB]
    简单混合器控制'DAC'、0
    能力:容量
    播放通道:左前-右前
    限制:播放0 - 175
    单声道:
    左前:播放87 [50%][-20.00dB]
    右前:播放87[50%][-20.00dB]
    简单混频器控制"DAC LEFT Input"、0
    功能:枚举
    项目:"关闭""左数据""右数据""多功能"
    项目0:'左侧数据'
    简单混频器控制"DAC Right Input"(右输入)、0
    功能:枚举
    项目:"关闭""右侧数据""左侧数据""多功能"
    项目0:"正确数据"
    简单混频器控制'HP 模拟',0
    能力:容量
    播放通道:左前-右前
    限制:播放0 - 127
    单声道:
    左前:播放0[0%][-63.50dB]
    右前:播放0[0%][-63.50dB]
    简单混合器控制'HP Driver',0
    功能:pvolume pswitch
    播放通道:左前-右前
    限制:播放0 - 9
    单声道:
    左前:播放0[0%][0.00dB][Off]
    右前:播放0[0%][0.00dB][Off]
    简单的混合器控制'HP left',0
    功能:pswitch pswitch-joined
    播放频道:单声道
    单声道:播放[关闭]
    简单混频器控制"HP 输出驱动器加电时间"、0
    功能:枚举
    项目:"0us""15.3us""153us""1.53ms""15.3ms""76.2ms"153ms""304ms"610ms"1.22s""3.04s""6.1s"
    项目0:"304ms"
    简单混频器控制'HP 输出驱动器斜升步进',0
    功能:枚举
    项:"0ms""0.98ms""1.95ms""3.9ms"
    项目0:'3.9ms'
    简单混合器控制'HP 右侧',0
    功能:pswitch pswitch-joined
    播放频道:单声道
    单声道:播放[关闭]
    简单混频器控制'MIC1LM M-端子',0
    功能:枚举
    项目:"OFF""FFR 10欧姆"FFR 20欧姆"FFR 40欧姆"
    项目0:'关闭'
    简单混频器控制'MIC1LM P 端子',0
    功能:枚举
    项目:"OFF""FFR 10欧姆"FFR 20欧姆"FFR 40欧姆"
    项目0:'关闭'
    简单混频器控制'MIC1LP P 端子',0
    功能:枚举
    项目:"OFF""FFR 10欧姆"FFR 20欧姆"FFR 40欧姆"
    项目0:'关闭'
    简单混频器控制'MIC1RP P 端子',0
    功能:枚举
    项目:"OFF""FFR 10欧姆"FFR 20欧姆"FFR 40欧姆"
    项目0:'关闭'
    简单混频器控制'Output Left from Left DAC'、0
    功能:pswitch pswitch-joined
    播放频道:单声道
    单声道:播放[关闭]
    简单混频器控制'Output Left from MIC1LP'、0
    功能:pswitch pswitch-joined
    播放频道:单声道
    单声道:播放[关闭]
    简单混频器控制'Output Left from MIC1RP'、0
    功能:pswitch pswitch-joined
    播放频道:单声道
    单声道:播放[关闭]
    简单的混频器控制"从 MIC1RP', 0输出
    功能:pswitch pswitch-joined
    播放频道:单声道
    单声道:播放[关闭]
    简单的混频器控制'从右输出 dac'、0
    功能:pswitch pswitch-joined
    播放频道:单声道
    单声道:播放[关闭]
    简单混音器控制'音量软步进',0
    功能:枚举
    商品:"快速"""低""已禁用"
    项目0:"快速"

    注意:上述配置不适用于播放音频

    以下配置可用于播放音频:

    1.运行配置

    amixer -c 0 sset "Speaker" on (amixer -c 0设置"Speaker"打开)
    amixer -c 0 sset "Speaker Driver (扬声器驱动程序)"打开
    amixer -c 0 sset "Output Left from Left DAC"(从左 DAC 输出)开启
    amixer -c 0 sset“从右 DAC 输出”关闭
    amixer -c 0 sset "Output Left from MIC1LP" on =>在运行命令后,PLL 转至启用的方式是????
    [ 21.631091]## aic31xx_set_bias_level:1 -> 2
    [ 21.635478]编解码器时钟->开启(速率8000)
    [ 21.654689] zumi aic31xx_dapm_power_event
    [ 21.659724] zumi aic31xx_wait_bits
    [ 21.663428]## aic31xx_set_bias_level:2 -> 3
    简单混频器控制'Output Left from MIC1LP'、0

    amixer -c 0 sset "Output Left from MIC1RP" on (从 MIC1RP 向左输出)

    2.运行 alsamixer 后,更改扬声器和 DAC 中的一些设置。

    root@pico-imx8mm:~# amixer -c 0
    简单混频器控制"Speedaker"、0
    功能:pswitch pswitch-joined
    播放频道:单声道
    单声道:播放[打开]
    简单混频器控制"计时器模拟"、0
    功能:pvolume pvolume 联接
    播放频道:单声道
    限制:播放0 - 127
    单声道:播放112 [88%][-7.50dB]


    简单混合器控制'DAC'、0
    能力:容量
    播放通道:左前-右前
    限制:播放0 - 175
    单声道:
    左前:播放142 [81%][7.50dB]
    右前:播放142 [81%][7.50dB]

    您能否告诉我们、这些更改应该添加在内核驱动程序中?

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

    尊敬的 Kumar:

    您不会在驱动程序中添加更改,而是通过 amixer 命令选择这些更改。

    对于音频~,您可以调用 amixer API 来选择它们或将它们添加到 n ü s/.asoundrc 中。

    Asoundrc - AlsaProject (alsa-project.org)

    这是 ti 音频器件上的 aoundrc 示例。

    [常见问题解答] PCM2906C:如何在声音设备没有捕获/记录控制时启用 Linux 音量控制? -音频论坛-音频- TI E2E 支持论坛

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

    您好!

       感谢您为我们提供的大力支持。 如需添加"amixer"命令、我们可以使用脚本文件来配置编解码器部分。

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

    祝你好运。

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

    您好!

    在以下链接中发布了问题也请回复

    e2e.ti.com/.../4859270

    我们可以录制音频并按预期工作、但录制的文件中会发出噪音。  

    播放音频。 和附件文件有一些噪音,我们怀疑问题为 alsamixer 设置。 您能否帮助您完成录制音频的正确设置、并且在播放音频时不会出现问题。

    e2e.ti.com/.../aud_5F00_rec.wav

    在这个 wav 文件中、你可以看到每隔3或5秒、有一些噪音出现、它不应该出现。 您能帮助我们通过 amixer 设置解决这个问题吗?

    注:Linux 驱动程序 TLV320AIC3100未处理麦克风/扬声器设置、我们仅通过设置 amixer 命令进行操作。

    在寄存器设置下方、将驱动程序加载到

    未指定大小(使用字节数据访问)
    0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
    00:01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00?..........
    10:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 14 ......... ?
    20: 06 3e 00 44 00 80 07 7f 06 06 00 20 86 00 B2?>.D.?????? .. ???
    30:40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @..........
    40:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    50:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    B0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    D0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    根@picoimx8mm:/home/ubuntu

    amixer 命令下面用于录制来自耳机的音频。

    amixer -c 0 cset name='ADC Capture Switch' on (amixer -c 0 cset name='ADC 捕获开关'打开)
    amixer -c 0 sset 'adc' 40
    amixer -c 0设置"MIC PGA" 50
    amixer -c 0 sset "Output Left from MIC1LP"(从 MIC1LP 输出左侧)关闭
    amixer -c 0 sset "Output Left from MIC1RP"(从 MIC1RP 向左输出)关闭
    amixer -c 0 sset "Output right from MIC1RP" off (amixer -c 0 sset "从 MIC1RP 右输出"关闭)
    amixer -c 0 sset MIC1LM P 端子"FFR 10 Ohm"
    amixer -c 0 sset "DAC" 0关闭
    amixer -c 0 sset“计时模拟”0关闭
    amixer -c 0 sset "HP Simulation" 0关闭
    amixer -c 0 sset "HP left"关闭
    amixer -c 0 sset "HP right" off
    amixer -c 0 sset "HP Driver"关闭
    amixer -c 0 sset "Output Left from Left DAC"(从左 DAC 输出左侧)关闭
    amixer -c 0 sset“从右 DAC 输出”关闭

    在给定上述 amixer 设置命令后、可以通过以下 attacjhed 寄存器

    root@picoimx8mm:/home/ubuntu #./i2cdump -f -y 1 0x18
    未指定大小(使用字节数据访问)
    0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
    00:01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00?..........
    10:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 14 ......... ?
    20: 06 3e 00 7f 7f 7f 02 02 00 00 20 86 00 B2?>..??????? .. ???
    30:00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    40:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    50:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    B0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    D0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    根@picoimx8mm:/home/ubuntu

    arecord -f S16_LE -c2 -r44100 -d20 aud_rec.wav
    录制波形"aud_rec.wav":有符号16位小端字节序、速率44100Hz、立体声

    录制音频后、以下寄存器设置

    root@picoimx8mm:/home/ubuntu #./i2cdump -f -y 1 0x18
    未指定大小(使用字节数据访问)
    0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
    00:00 00 01 66 03 21 07 14 90 00 08 02 00 80 .. f???????????????????
    10:08 00 08 02 80 80 04 00 00 01 00 00 00 08 00?????? ……………………………
    20:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    30:00 00 00 02 32 12 03 02 02 11 10 00 01 04 00 14 ...?2????? ……………………………
    40: 0C 81 00 6F 38 00 00 00 00 00 ee 10 D8 7e E3 ????.o8 ... ???~?
    50:00 00 00 1c 00 00 00 00 7f 00 00 00 00 00 00 00 00 ...?...
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    B0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    D0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
    根@picoimx8mm:/home/ubuntu

    此致、
    桑塔纳库马尔斯

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

    我将让我们的 Linux 专家来评论 amixer 设置。

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

    向文件写入音频缓冲区时似乎发生了缓冲区溢出。 写入文件的音频缓冲区有多大? 您可以设置一个大得多的缓冲区、并检查此问题是否仍然存在。

    请使用示波器测量 I2S bck 和 ws clk、ws clk 是否大于44100Hz?

    还有一点、您是否有 AP 从我们的编解码器中记录 I2S 数据以检查此情况?

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

    您好!

    使用 arecord 命令捕获音频时、如果没有提及缓冲区大小、则应将其设置为最大缓冲区大小。

    以下是 arecord 命令:

    ARecord -f S16_LE -C2 -r44100 -D5 test7.wav


    "--buffer-size=#Buffer duration 是#帧如果没有提供缓冲时间和缓冲区大小,则设置允许的最大缓冲区时间但不超过500ms。"

    我们没有 AP 来记录编解码器中的 I2S 数据。

    此致、
    桑塔纳库马尔斯

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

    请使用一个线程、这与这个相同。

    (+) TLV320AIC3100:TLV320AIC3100编解码器中没有麦克风音频-音频论坛-音频- TI E2E 支持论坛

    我将关闭这个。

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

    您可以关闭该主题。