RK3308 2通道模拟MIC无法录音

pdm_i2s_dais: pdm-i2s-dais {
status = “okay”;
compatible = “rockchip,rk3308-multi-dais”, “rockchip,multi-dais”;
dais = <&pdm_8ch>, <&i2s_8ch_2>;
capture,channel-mapping = <6 2>;
playback,channel-mapping = <0 2>;
bitclock-inversion = <1 0>;
};
我用的RK3308-ROC-CC请教下,我插入耳机录音为什么录到的所有通道都是空的,没数据,按理说前6个通道没数据,最后2个通道有数据的啊?能解释下吗?谢谢

  1. pdm_i2s_dais: 这个是适配麦克风阵列板的或者数字mic的
  2. 使用耳机mic,可以参考如下
diff --git a/kernel/arch/arm64/boot/dts/rockchip/rk3308-roc-cc-dmic-pdm_emmc.dts b/kernel/arch/arm64/boot/dts/rockchip/rk3308-roc-cc-dmic-pdm_emmc.dts
index b996358..735ddb2 100644
--- a/kernel/arch/arm64/boot/dts/rockchip/rk3308-roc-cc-dmic-pdm_emmc.dts
+++ b/kernel/arch/arm64/boot/dts/rockchip/rk3308-roc-cc-dmic-pdm_emmc.dts
@@ -13,7 +13,7 @@
        compatible = "firefly,rk3308-roc-cc-dmic-pdm_emmc", "firefly,rk3308";

        pdm_i2s_dais: pdm-i2s-dais {
-               status = "okay";
+               status = "disabled";
                compatible = "rockchip,rk3308-multi-dais", "rockchip,multi-dais";
                dais = <&pdm_8ch>, <&i2s_8ch_2>;
                capture,channel-mapping = <6 2>;
@@ -34,13 +34,23 @@
        };

        vad-sound {
-               status = "okay";
+               status = "disabled";
                compatible = "rockchip,multicodecs-card";
                rockchip,card-name = "rockchip,rk3308-vad";
                rockchip,cpu = <&pdm_i2s_dais>;
                rockchip,codec = <&acodec>, <&vad>;
        };

+       vad_acodec_sound: vad-acodec-sound {
+                status = "okay";
+                compatible = "rockchip,multicodecs-card";
+                rockchip,card-name = "rockchip,rk3308-acodec";
+                rockchip,codec-hp-det;
+                rockchip,mclk-fs = <256>;
+                rockchip,cpu = <&i2s_8ch_2>;
+                rockchip,codec = <&acodec>, <&vad>;
+        };
+
     leds {
         status = "okay";
         compatible = "gpio-leds";
@@ -63,6 +73,14 @@
        status = "disabled";
 };

+&acodec {
+    rockchip,micbias1;
+    rockchip,micbias2;
+    rockchip,en-always-grps = <0 1 2 3>;
+    rockchip,adc-grps-route = <0 1 2 3>;
+    /delete-property/rockchip,loopback-grp;
+};
+
 &bluetooth_sound {
     status = "okay";
 };
@@ -74,7 +92,7 @@
 };

 &pdm_8ch {
-       status = "okay";
+       status = "disabled";
        #sound-dai-cells = <0>;
        rockchip,no-dmaengine;
        pinctrl-names = "default";
@@ -88,7 +106,7 @@

 &vad {
        status = "okay";
-       rockchip,audio-src = <&pdm_8ch>;
+       rockchip,audio-src = <&i2s_8ch_2>;
        rockchip,det-channel = <0>;
        rockchip,mode = <1>;
        rockchip,buffer-time-ms = <200>;
@@ -102,7 +120,7 @@
 };

 &pdm_i2s_dais {
-       status = "okay";
+       status = "disabled";
        #sound-dai-cells = <0>;
 };
 

本帖最后由 firefly_zhongw 于 2020-3-23 11:19 编辑

  1. 数字音频总线跟内置codec mic是不一样的通道
  2. 数字音频接口数据拼接: capture,channel-mapping = <6, 2>;表示pdm占据前6ch,i2s占据后2ch,构成录音8ch
  3. 如果要用内置的codec mic录音就要配置内置codec并检查原理图上的耳机座子是否有接入mic

本帖最后由 zhangfengzan 于 2020-3-23 13:46 编辑


MIC是有的,第一环就是,应该是美标的。我的意思就是i2s_8ch_2和pdm不能同时work的吗?按理说不用配的啊,i2s_8ch_2播音的时候(adc),pdm也是使能的啊,耳机能听到声音不需要配的啊

1.可以同时工作,只要gpio口不复用
2. ROC-RK3308-CC和ROC-RK3308B-CC是不同的开发板,拿到的开发板找对应的原理图

firefly_zhongw 发表于 2020-3-21 14:47

  1. pdm_i2s_dais: 这个是适配麦克风阵列板的或者数字mic的
  2. 使用耳机mic,可以参考如下

你好,我按照上面的修改,耳机mic录不到音,aplay播音耳机也不出声,arecord -l查看到的设备如下:# arecord -l
**** List of CAPTURE Hardware Devices ****
card 7: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 7: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7

录音指令采用:arecord -D hw:7,0 -c 8 -r 16000 -f S16_LE --period-size=1024 --buffer-size=4096 mic7-0.wav和
arecord -D hw:7,1 -c 8 -r 16000 -f S16_LE --period-size=1024 --buffer-size=4096 mic7-0.wav
录到的文件无声。
请问这是哪里不对呢?
rk3308-roc-cc-dmic-pdm_emmc.pdf (3.09 KB)

本帖最后由 firefly_zhongw 于 2020-4-1 09:11 编辑

  1. 先确定开发板的型号
  2. ROC-RK3308-CC开发板耳机座子没有接mic

本帖最后由 sai-blf 于 2020-4-1 18:51 编辑

firefly_zhongw 发表于 2020-4-1 09:10

  1. 先确定开发板的型号
  2. ROC-RK3308-CC开发板耳机座子没有接mic

开发板型号是:ROC-RK3308-CC;看的原理图是roc-rk3308-cc-v1_3.pdf,所以一直认为有mic。roc-rk3308-cc_v00.pdf原理图确实没有mic,同时也没有模拟mic录音。按照上面的改法,aplay耳机没声音,怎么回事呢?

sai-blf 发表于 2020-4-1 18:37
开发板型号是:ROC-RK3308-CC;看的原理图是roc-rk3308-cc-v1_3.pdf,所以一直认为有mic。roc-rk3308-cc_ …

公司有种类型的板子,我在V13的版本上测的,有mic录音


  1. kernel/arch/arm64/boot/dts/rockchip/rk3308-roc-cc-dmic-pdm_emmc.dts修改文件贴出来
  2. 从arecord -l看,声卡设备0都没有> arecord -l查看到的设备如下:# arecord -l

**** List of CAPTURE Hardware Devices ****
card 7: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 7: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7

firefly_zhongw 发表于 2020-4-2 09:50

  1. kernel/arch/arm64/boot/dts/rockchip/rk3308-roc-cc-dmic-pdm_emmc.dts修改文件贴出来
  2. 从arecord - …

文件见附件,劳烦检查一下!
rk3308-roc-cc-dmic-pdm_emmc (2).pdf (3.09 KB)

本帖最后由 firefly_zhongw 于 2020-4-3 10:05 编辑

 &i2s_8ch_2 {
        status = "okay";
 };
&acodec {
        rockchip,micbias1;
        rockchip,micbias2;
        rockchip,en-always-grps = <0 1 2 3>;
        rockchip,adc-grps-route = <3 0 1 2>;
        /delete-property/rockchip,loopback-grp;
};

具体参考附件dts
rk3308-roc-cc-amic_emmc.dts.rar (1.13 KB)

firefly_zhongw 发表于 2020-4-3 09:45
具体参考附件dts

参照附件的修改了,声卡设备0有了,能播放wav文件了,耳机录音还是没声音,请问耳机用美标还是国标?您这边有验证可以的update.img,发一下我验证一下吗?我看看是我这边的硬件问题还是软件问题?

手头上没有ROC-RK3308-CC V13的开发板

firefly_zhongw 发表于 2020-4-8 19:02
手头上没有ROC-RK3308-CC V13的开发板

有么有其它办法呢?还得麻烦大神想想办法!

sai-blf 发表于 2020-4-8 21:45
有么有其它办法呢?还得麻烦大神想想办法!

可以录音了,之前录音的方法不对

sai-blf 发表于 2020-4-8 22:07
可以录音了,之前录音的方法不对

acodec模拟录音,通道到-c必须是8吗?录部分通道测试好像不可以啊!
arecord -D hw:0,0 -c 2 -r 16000 -f S16_LE --period-size 1024 --buffer-size 65536 -t wav -d 30 aaa.wav

录音通道有效性,要看硬件上接了几个mic

本帖最后由 zhangfengzan 于 2020-4-21 11:19 编辑

firefly_zhongw 发表于 2020-4-1 09:10

  1. 先确定开发板的型号
  2. ROC-RK3308-CC开发板耳机座子没有接mic

现在原理图有roc-rk3308-cc-v1_3.pdf,这个是有耳机mic的,另一个roc-rk3308-cc_v00.pdf,是没有mic的,我的evb版本是ROC-RK3308-CC 2019-03-02 V13,现在到底用哪个为准?另外板子上硬件是有如下模拟麦克硬件接口,但是roc-rk3308-cc_v00.pdf是找不到的,这怎么解释?

以开发板上的版本丝印为准,找对应的原理图。