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.

[参考译文] TLV320AIC32X4SW-Linux:TLV320aic32x4:正在播放:PCM_WRITE:写入错误:输入/输出错误

Guru**** 2482105 points
Other Parts Discussed in Thread: TDA4VM

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1123407/tlv320aic32x4sw-linux-tlv320aic32x4-getting-aplay-pcm_write-write-error-input-output-error

器件型号:TLV320AIC32X4SW-Linux
主题中讨论的其他器件:TDA4VM

你(们)好

我们的项目使用 TDA4vm K3-j721e

音频编解码器:tlv320aic32x4

~# aplay -L
null
丢弃所有样本(回放)或生成零样本(捕获)
默认:card=tlv320aic32x4
tlv320aic32x4、davio-mcasp.0-tlv320aic32x4-hifi tlv320aic32x4-hifi-0
默认音频设备
sysdefault:card=tlv320aic32x4
tlv320aic32x4、davio-mcasp.0-tlv320aic32x4-hifi tlv320aic32x4-hifi-0

默认音频设备

~# aplay -D sysdefault:card=tlv320aic32x4 /usr/share/sounds/alsa/Side_Left.wav

播放波形'/usr/share/sounds/alsa/side_left.wav':有符号16位小端序、速率48000Hz、单声道
aplay:PCM_WRITE:2059:WRITE error:input/output error

有关音频的设备树如下所示:

我们将 AUDIO_EXT_REFCLK0用于音频 MCLK、将 mcasp6用于 I2S。

 这个用于 MCLK 的 pinmux AUDIO_EXT_REFCLK0是否可以?

我的设置是否正确或缺失?

听起来{
兼容="简单音频卡";
simple-audio-card、name ="tlv320aic32x4";
simple-audio-card、小工具=
"耳机"、"耳机插孔"、
"扬声器"、"扬声器"、
"线路"、"线路输入"、
"线路"、"线路输出";
简单音频卡,路由=
"IN2_L"、"线路输入"、
"IN2_R"、"线路输入"、
"线路输出"、"LOL"、
"线路输出"、"左";
simple-audio-card、format ="I2S";
simple-audio-card、bitclock-master =<&sound_master>;
simple-audio-card、frame-master =<&sound_master>;
简单音频卡、位时钟反转;

sound_master:simple-audio-card、CPU{
Sound-Dai =<&mcasp6>;
系统时钟频率=<24576000>;
系统时钟方向="OUT";
};

简单音频卡、编解码器{
sound-dai =<&tlv320aic32x4_codec>;
系统时钟频率=<24576000>;
};
};

AUDIO_ext_refclk0_PINS_DEFAULT:audio-ext-refclk0-PINS-DEFAULT{
pinctrl-single、pins =<
J721E_IOPAD (0x1c、PIN_OUTPUT、6)/*(AD22) PRG1_PRU0_GPO6.AUDIO_EXT_REFCLK0 *//* MCLK *
>;
};

mcasp6_PINS_DEFAULT:mcasp6-PINS-DEFAULT{
               pinctrl-single、pins =<
                       J721E_IOPAD (0x04、PIN_OUTPUT 下拉、12)/*(AC23) PRG1_PRU0_GPO0.MCASP6_ACLKX *//* BCLK *
                       J721E_IOPAD (0x08、PIN_OUTPUT 下拉、12)/*(AG22) PRG1_PRU0_GPO1.MCASP6_AFSX *//* wclk *
                       J721E_IOPAD (0x0c、PIN_OUTPUT 下拉、12)/*(AF22) PRG1_PRU0_GPO2.MCASP6_AXR0 */ /* CODE_DIN *
                       J721E_IOPAD (0x10、PIN_INPUT 下拉、12) /*(AJ23) PRG1_PRU0_GPO3.MCASP6_AXR1 */ /* CODE_DOUT *
               >;
      };

K3_CLKS{
pinctrl-names ="default";
pinctrl-0 =<&AUDIO_ext_refclk0_PINS_DEFAULT>;
};


&MAIN_i2c4{
pinctrl-names ="default";
pinctrl-0 =<&MAIN_i2c4_PINS_DEFAULT>;
时钟频率=<400000>;

tlv320aic32x4_codec:tlv320aic32x4@18{
兼容="ti、tlv320aic32x4";
reg =<0x18>;
#sound-da-cells =<0>;
时钟=<&K3_CLKS 157 371>;
时钟名称="MCLK";
分配的时钟=<&K3_CLKS 157 371>;
分配的时钟父级=<&K3_CLKS 157 400>;
分配的时钟速率=<24576000>;
pinctrl-names ="default";
pinctrl-0 =<&codec_reset_pins_default>;
RESET-GPIO =<&MAIN_GPIO0 40 GPIO_ACTIVE_LOW>;
IOV-supply =<&V VSYS_3V3>;
ldoin_supply =<&V VSYS_3V3>;
};

mcasp6{.m&mcasp6}
       #sound-da-cells =<0>;

       pinctrl-names ="default";
       pinctrl-0 =<&mcasp6_pins_default>;
       OP-MODE =<0>;         /* MCASP_IIS_MODE */
       TDM-SLOTS =<16>;
       auxclk-fs-ratio =<256>;
       /* 16个串行器*/
       serial-dir =< /* 0:非活动、1:TX、2:Rx *
               1 2 0 0
               0 0 0 0 0
               0 0 0 0 0
               0 0 0 0 0
       >;
       tx-num-evt =<1>;
       Rx-num-evt =<1>;
       状态="正常";
};

BR

阿斯亚贝巴

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

    您好!

    我们将让我们的 Linux 专家对您的设置发表意见。

    他们在中国、很可能明天就会听到他们的声音。

    此致。

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

    你(们)好

    能否检查 i2cdetect 和 i2cdump 是否正常工作?

    如果声卡注册良好?

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

    你(们)好

    是的、i2cDETEC 可以检测地址0x18处的编解码器。

    我们可以看到声卡:/proc/asound/card0和 aplay -l。

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

    谁是主器件、您是否看到正确的 MCLK、WCLK 和 BCLK?

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

    您好!

    如 DTS 所示、TDA4vm K3-j721e 是主器件、而 J721E_IOPAD (0x1c、PIN_OUTPUT、6)为 MCLK 将 pinmux 定义为 AUDIO_EXT_REFCLK0。 我不确定这些设置是否正确。

    当前 MCLK 输出不正确。

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

    aplay 错误通常是由时钟引起的、因此请参阅您的主机指南生成这些时钟。

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

    你(们)好

    我想知道启动日志有什么问题。 您会这样善良、与我们分享吗?  

    还有一点、在本例中、tlv320aic32x4是否用作主设备、这将产生 BCLK 和 WS 时钟、而 TDA4vm 为其提供 MCLK?

    BR

    丁胜豪

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

    您好!

    我共享 TDA4vm 和 tvl320aic32x4的原理图。

    作为硬件设计、MCLK 由 TDA4vm 生成:AUDIO_EXT_REFCLK0以及 bckl 和 wclk 也从 TDA4vm 输出。

    因此、TDA4vm 应该是主器件。

    BR

    阿斯亚贝巴

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

    你(们)好

    由于 aic32x4是主器件、因此位时钟主器件和帧主器件必须使用 aic32x4生成的 clk  

    我们应将其修改为泡沫

    三、会议的报告

    simple-audio-card、format ="I2S";
    simple-audio-card、bitclock-master =<&sound_master>;
    simple-audio-card、frame-master =<&sound_master>;
    简单音频卡、位时钟反转;

    sound_master:simple-audio-card、CPU{
    Sound-Dai =<&mcasp6>;
    系统时钟频率=<24576000>;
    系统时钟方向="OUT";
    };

    sound_master:simple-audio-card、codec{
    sound-dai =<&tlv320aic32x4_codec>;
    系统时钟频率=<24576000>;
    };

    三、会议的报告

    以下是供您参考的 DTS 示例

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

    你(们)好

    您是说 MCLK 必须从 aic32x4和 BCLK 生成、wclk 使用 aic32x4的 clk?

    BR

    阿斯亚贝巴

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

    您好!

    我将 aic32x4修改为主站、并参考示例 DTS 来配置从 TDA4m 输出的 MCLK

    simple-audio-card、format ="I2S";
    simple-audio-card、bitclock-master =<&sound_master>;
    simple-audio-card、frame-master =<&sound_master>;
    简单音频卡、位时钟反转;

    simple-audio-card、CPU{
    Sound-Dai =<&mcasp6>;
    系统时钟频率=<12000000>;
    };

    sound_master:simple-audio-card、codec{
    sound-dai =<&tlv320aic32x4_codec>;
    系统时钟频率=<12000000>;
    };

    mcasp6_PINS_DEFAULT:mcasp6-PINS-DEFAULT{
    pinctrl-single、pins =<
    J721E_IOPAD (0x04、PIN_INPUT_PULLDOWN、12)/*(AC23) PRG1_PRU0_GPO0.MCASP6_ACLKX *//* BCLK *
    J721E_IOPAD (0x08、PIN_INPUT_PULLUP、12)/*(AG22) PRG1_PRU0_GPO1.MCASP6_AFSX *//* wclk *
    J721E_IOPAD (0x0c、PIN_OUTPUT 下拉、12)/*(AF22) PRG1_PRU0_GPO2.MCASP6_AXR0 *//* CODE_DIN *
    J721E_IOPAD (0x10、PIN_INPUT 下拉、12)/*(AJ23) PRG1_PRU0_GPO3.MCASP6_AXR1 *//* CODE_DOUT *
    >;
    };

    AUDIO_ext_refclk0_PINS_DEFAULT:audio-ext-refclk0-PINS-DEFAULT{
    pinctrl-single、pins =<
    J721E_IOPAD (0x1c、PIN_OUTPUT 下拉、6)/*(AD22) PRG1_PRU0_GPO6.AUDIO_EXT_REFCLK0 *//* MCLK *
    >;
    };

    K3_CLKS{
    pinctrl-names ="default";
    pinctrl-0 =<&AUDIO_ext_refclk0_PINS_DEFAULT>;
    };

    但 MCK 仍然没有输出。 K3_CLKS 能否生成 MCLK?  

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

    请咨询平台供应商。 谢谢。