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.

[参考译文] TDA4VM:如何在 Linux 中添加新的 snd 卡?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1513738/tda4vm-how-add-new-snd-card-in-linux

器件型号:TDA4VM

工具/软件:

您好 TI 专家

SDK:0806
主板:Customer Board(No Matter)

这是我的设计:


我想通过 McASP0和 mcasp11从传感器获取音频数据。
A2B 菊花链的配置是通过 C6X_1的 I2C 进行配置的。
如何修改设备树以在 Linux 中创建两个声卡(McASP0和 mcasp11)、从而从两个声卡获取音频数据?

此致
Eason


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

    我想使用  

    arecord -D hw:1,0 -c 32 -f S32_LE -r 48000 -d 10 >> test.wav
    arecord -D hw:0,0 -c 32 -f S32_LE -r 48000 -d 10 >> test.wav
    

    来获取音频数据。

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

    尊敬的 Eason:

    您可以查看 TDA4VM EVM 器件树以获取灵感。 您只需为 McASP0和 McASP11创建器件树节点。

    我还在该主题中介绍了更多详细信息: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1501141/tda4vm-mcasp1-can-not-work 

    此外、您可以改用更新的 SDK 版本吗?

    此致、
    Jared

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

    您好、Jared

    我单击了错误按钮、此问题未解决、因此让我们继续讨论。

    您提供的参考链接非常有用、但实际上我的问题未解决。 下面是我的调试方法和问题:

    1)、我也使用 A2B 芯片 AD2428。在正常应用中、我集成或编写了 AD2428  编解码器驱动程序、但实际上、AD2428的配置是在 C6X_1上完成的(通过 I2C、但此 I2C 也配置了其他 A2B 芯片、因此不能在 Linux 上使用)、因此无法在 Linux 中添加 AD2428编解码器驱动程序。 所以我仍然需要编解码器???

    2),我 修改了 dts 和一个虚拟编解码器:

    	mcasp0_pins_default: mcasp0_pins_default {
    		pinctrl-single,pins = <
    			J721E_IOPAD(0xd4, PIN_OUTPUT_PULLDOWN, 12) /* (AB26) PRG0_PRU0_GPO9.MCASP0_ACLKX */
    			J721E_IOPAD(0xd8, PIN_OUTPUT_PULLDOWN, 12) /* (AB25) PRG0_PRU0_GPO10.MCASP0_AFSX */
    			J721E_IOPAD(0xb0, PIN_INPUT_PULLDOWN, 12) /* (AF28) PRG0_PRU0_GPO0.MCASP0_AXR0 */
    			/* J721E_IOPAD(0xb4, PIN_INPUT_PULLDOWN, 12)*/ /* (AE28) PRG0_PRU0_GPO1.MCASP0_AXR1 */
    			J721E_IOPAD(0xc0, PIN_OUTPUT_PULLDOWN, 12) /* (AD25) PRG0_PRU0_GPO4.MCASP0_AXR2 */
    			/* J721E_IOPAD(0xc8, PIN_OUTPUT_PULLDOWN, 12)*/ /* (AE26) PRG0_PRU0_GPO6.MCASP0_AXR4 */
    		>;
    	};
    
    	sound2: sound@2 {
    		status = "okay";
    		compatible = "simple-audio-card";
    		simple-audio-card,name = "front-sensor-a2b3-mcasp0";
    		simple-audio-card,format = "left_j";
    		simple-audio-card,mclk-fs = <1024>;
    		simple-audio-card,bitclock-master = <&dailink2_master>;
    		simple-audio-card,frame-master = <&dailink2_master>;
    
    		dailink2_master: simple-audio-card,cpu {
    			sound-dai = <&mcasp0>;
    			dai-tdm-slot-num = <32>;
    			dai-tdm-slot-width = <32>;
    			mclk-fs = <1024>;
    			clocks = <&k3_clks 174 1>;
    			clock-names = "fck";
    			system-clock-direction-out;
    		};
    		simple-audio-card,codec {
    			sound-dai = <&dummy_codec2>;
    		};
    	};
    
    	dummy_codec2: dummy-codec2 {
    		status = "okay";
    		compatible = "autox,a2b-codec";
    		#sound-dai-cells = <0>;
    		id = <1>;
    	};
    &mcasp0 {
    	status = "okay";
    	#sound-dai-cells = <0>;
    
    	pinctrl-names = "default";
    	pinctrl-0 = <&mcasp0_pins_default>;
    
    	op-mode = <0>;          /* MCASP_IIS_MODE */
    	tdm-slots = <32>;
    	auxclk-fs-ratio = <1024>;
    
    	serial-dir = <	/* 0: INACTIVE, 1: TX, 2: RX */
    		2 0 0 0 
    		0 0 0 0
    		1 0 0 0
    		0 0 0 0
    	>;
    	tx-num-evt = <1>;
    	rx-num-evt = <1>;
    };
    
    



    这是我的 dummy-codec.c 和 davincie-McASP.c

    e2e.ti.com/.../3343.davinci_2D00_mcasp.c


    e2e.ti.com/.../dummy_2D00_codec.c

    我可以在 Linux 中找到 tw snd:

    当我使用: arecord -D hw:1,0 -c 32 -f S32_LE -r 48000 -d 10 >> test.wav 时
    我可以看到 BCLK 波形、但看不到数据(无数据)。




    希望得到您的支持。

    此致
    Eason

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

    尊敬的 Eason:

    是否可以删除引脚上的下拉电阻?

    此外、serial-dir 属性似乎不正确。

    如果您使用 AXR0作为 RX 和 AXR2作为 TX、则以下是正确的属性。

    serial-dir = <
        2 0 1 0
        0 0 0 0
        0 0 0 0
        0 0 0 0
    >;

    此致、
    Jared

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

    您好 Jared

    [引述 userid="574088" url="~/support/processors-group/processors/f/processors-forum/1513738/tda4vm-how-add-new-snd-card-in-linux/5821243 #5821243"]

    如果您使用 AXR0作为 RX 和 AXR2作为 TX、则以下是正确的属性。

    全屏
    1.
    2.
    3.
    4.
    5.
    6.
    serial-dir =<
    2 0 1 0
    0 0 0 0
    0 0 0 0
    0 0 0 0
    >;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    此致、

    [/报价]

    好、

    如何设置 McASP 插槽大小?

    此致
    Eason

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

    尊敬的 Eason:

    tdm-slot 属性。

    此致、
    Jared