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个通道有数据的啊?能解释下吗?谢谢
- pdm_i2s_dais: 这个是适配麦克风阵列板的或者数字mic的
- 使用耳机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 编辑
- 数字音频总线跟内置codec mic是不一样的通道
- 数字音频接口数据拼接: capture,channel-mapping = <6, 2>;表示pdm占据前6ch,i2s占据后2ch,构成录音8ch
- 如果要用内置的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
- pdm_i2s_dais: 这个是适配麦克风阵列板的或者数字mic的
- 使用耳机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)
本帖最后由 sai-blf 于 2020-4-1 18:51 编辑
firefly_zhongw 发表于 2020-4-1 09:10
- 先确定开发板的型号
- 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录音
- kernel/arch/arm64/boot/dts/rockchip/rk3308-roc-cc-dmic-pdm_emmc.dts修改文件贴出来
- 从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
- kernel/arch/arm64/boot/dts/rockchip/rk3308-roc-cc-dmic-pdm_emmc.dts修改文件贴出来
- 从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
- 先确定开发板的型号
- 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是找不到的,这怎么解释?
以开发板上的版本丝印为准,找对应的原理图。




