VIM3 配置 I2S音频输入如何配置

Which Khadas SBC do you use?

VIM3

Which system do you use? Android, Ubuntu, OOWOW or others?

Android P 32bit

当前配置一颗语音芯片 CSK6012

注意到VIM3 管脚映射为
微信截图_20230727144432
为GPIOA1-GPIOA4

现在时钟由语音芯片提供,需设置A311D为i2s从模式,我看了kvim3.dts 文件


当前/,“tdmb_slv_sclk”, “tdmb_slv_fs”/; 是注释状态,需要用到的时候是否需要开注释,该如何配置

修改后用tinycap 哪个设备可以录音验证,谢谢

@smartdev 没调试过类似的芯片。也许可以参考es8316来搞。输入下面命令查找相应提交:

common$ git log --grep="8316" -p

amlogic平台都是只有一个声卡,只是选择不同的devices而已。输入下面命令即可找到你声卡的devices:

cat proc/asound/card0/pcm*c/info

通过对应的id字符找到对应的device。例如:

card: 0
device: 1
subdevice: 0
stream: CAPTURE
id: TDM-B-ES8316-HiFi-alsaPORT-i2s-i2s4hdmirx multicodec-1
name:
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 1

@goenjoy 你好,

我参考了这个文档,但是我发现其中的修改 tdmb_din2 为GPIOA5管脚并没有引出,理论上我需要使用GPIOA4 作为输入 是不是应该改为tdmb_din1,还有就是 dai-tdm-lane-slot-mask-in 这个是什么的对应关系,我改成 GPIOA4 这个是不是也要修改


链接中的修改位置对应

1 Like

可能是写错了,应该是tdmb_din1才对。

下面文档有详细介绍,你可以参考下。希望这篇文档有助于帮到你。
链接:https://pan.baidu.com/s/1DYZXaSTGJ6l_uJP6_xHmDA
提取码:jr8q

1 Like

非常感谢,我看看是否有帮助 :smile: :grinning: :smiley: :grin: :grin:

@goenjoy 你好,我看了相关文档,里面dts的举例是用了A311D2的较多,有A311D的文档dts参考吗 :grinning:

@goenjoy 就是相关文档有没类似 Revision: 0.2 或者 Revision: 0.1

@smartdev 没有。amlogic平台一如即往统一,参考A311D2也就是参考A311D。

好的,了解。 很有帮助。:grinning::grinning::grinning::grinning::grinning::grinning::grinning::grinning::grinning::grinning::grinning:

今天刚好有个项目调试涉及dai-tdm-lane-slot-mask-indai-tdm-lane-slot-mask-out修改。研读了给你上传的文档,发现A311D和A311D2还是不一样的。
A311D中的dai-tdm-lane-slot-mask-indai-tdm-lane-slot-mask-out都是表示<0,1,2,3>顺序排列。比如:

--- a/arch/arm64/boot/dts/amlogic/kvim3l.dts
+++ b/arch/arm64/boot/dts/amlogic/kvim3l.dts
@@ -1087,18 +1074,25 @@
        tdmc: tdm@2 {
                compatible = "amlogic, sm1-snd-tdmc";
                #sound-dai-cells = <0>;
-               dai-tdm-lane-slot-mask-in = <1 0 0 0>;
-               #dai-tdm-lane-slot-mask-out = <1 0 1 1>;
+               dai-tdm-lane-slot-mask-in = <0 1 0 0>;
+               dai-tdm-lane-slot-mask-out = <0 0 0 1>;
                #dai-tdm-lane-oe-slot-mask-in = <0 0 0 0>;
                #dai-tdm-lane-oe-slot-mask-out = <1 0 0 0>;
        tdmout_c:tdmout_c {
-               mux { /* GPIOA_12, GPIOA_13, GPIOA_8*/
+               mux { /* GPIOA_12, GPIOA_13, GPIOA_7*/
                        groups = "tdmc_sclk_a",
                                "tdmc_fs_a",
-                               "tdmc_dout0_a"
+                               "tdmc_dout3_a"
                                /*,     "tdmc_dout2",
                                 * "tdmc_dout3"
                                 */;
                        function = "tdmc_out";
                };
        };
 
        tdmin_c:tdmin_c {
-               mux { /* GPIOA_10 */
-                       groups = "tdmc_din0_a";
+               mux { /* GPIOA_9 */
+                       groups = "tdmc_din1_a";
                        function = "tdmc_in";
                };
        };

其中tdmc_dout3_a对应的是输出第3位,tdmc_din1_a对应的是输入第1位。故对应的配置则为:

+               dai-tdm-lane-slot-mask-in = <0 1 0 0>;
+               dai-tdm-lane-slot-mask-out = <0 0 0 1>;

非常感谢,之前根据所给的资料已经配置能用了 :grinning:

1 Like