瑞芯微RK3506核心板/开发板DSM音频开发实战,关键知识点与实操案例必看攻略!

环贸财神 2025-10-18 3932人围观

本文基于触觉智能RK3506核心板/开发板,介绍DSM音频功能使用攻略。

wKgZO2jLpDGAFBiiAATW_0nI02I076.png

如需购买开发板可某宝搜索 深圳触觉智能

DSM简介

DSM

DSM(Delta-Sigma Modulation,德尔塔-西格玛调制)音频原理,DSM 的核心是一种过采样噪声整形技术,它的目标不是一次性精确地记录每个采样点的幅度,而是通过极高的采样率来记录相邻采样点之间的变化(Delta, Δ),并将量化误差(噪声)推挤(Sigma, Σ, 意为求和与积累) 到人耳不敏感的高频区域,再通过数字滤波器将其滤除。

DSM应用

ADC为例,负责将麦克风、乐器等模拟音频信号转换为数字信号,DSM 技术在此场景中解决了 “高精度与低成本” 的矛盾 —— 传统多位数 ADC(如 16 位、24 位)依赖复杂的模拟电路来保证精度,而 DSM ADC 通过 1 位量化器 + 过采样 / 噪声整形,用数字算法替代部分模拟电路成本,同时实现更高动态范围。像汽车音频:车载麦克风(用于语音助手、降噪通话)。汽车环境存在发动机、风噪等干扰,DSM 的噪声整形技术可将量化噪声推至人耳不敏感的高频段(>20kHz),提升语音信号的信噪比。

硬件连接参考

硬件修改

触觉智能RK3506开发板由于默认使用ES8388音频编解码芯片,需整改硬件,修改如下:空贴R183、R174,焊接R180、R178。

wKgZO2jbpPeAeDsCAAHLb-W-NbQ209.png

内核配置

打补丁

将触觉智能提供的RK3506网盘中,软件资料/Linux/patch/dsm路径下的文件替换/kernel/sound/soc/codecs/下的文件。

DTS配置

相关配置如下,需要注意以下2点:

1.RK3506 sndcpu必须为sai3。

dsm_sound: dsm-sound { status = "okay"; compatible = "simple-audio-card"; simple-audio-card,format = "i2s"; simple-audio-card,mclk-fs = <256>; simple-audio-card,name = "rockchip,dsm-sound"; simple-audio-card,bitclock-master = <&sndcodec>; simple-audio-card,frame-master = <&sndcodec>; sndcpu: simple-audio-card,cpu { sound-dai = <&sai3>; }; sndcodec: simple-audio-card,codec { sound-dai = <&acdcdig_dsm>; }; }; &acdcdig_dsm { status = "okay"; }; &sai3 { status = "okay"; }; &audio_codec { status = "okay"; };

2.触觉智能RK3506开发板(EVB3506)的es8388声卡与DSM复用,所以配置DSM功能前需先关闭es8388相关配置。

es8388_sound: es8388-sound { status = "disabled"; compatible = "rockchip,multicodecs-card"; rockchip,card-name = "rockchip-es8388"; spk-con-gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>; rockchip,pre-power-on-delay-ms = <30>; rockchip,post-power-down-delay-ms = <40>; rockchip,format = "i2s"; rockchip,mclk-fs = <256>; rockchip,cpu = <&sai1>; rockchip,codec = <&es8388>; rockchip,audio-routing = "Headphone", "LOUT1", "Headphone", "ROUT1", "Speaker", "LOUT2", "Speaker", "ROUT2", "Headphone", "Headphone Power", "Headphone", "Headphone Power", "Speaker", "Speaker Power", "Speaker", "Speaker Power", "RINPUT1", "Main Mic", "RINPUT2", "Main Mic", "LINPUT1", "Headset Mic", "LINPUT2", "Headset Mic"; pinctrl-names = "default"; pinctrl-0 = <&spk_ctrl>; }; &i2c0 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&rm_io0_i2c0_scl &rm_io1_i2c0_sda>; es8388: es8388@11 { status = "disabled"; #sound -dai-cells = <0>; compatible = "everest,es8388", "everest,es8323"; reg = <0x11>; clocks = <&mclkout_sai1>; clock-names = "mclk"; assigned-clocks = <&mclkout_sai1>; assigned-clock-rates = <12288000>; pinctrl-names = "default"; pinctrl-0 = <&rm_io8_sai1_mclk>; }; };

播放音频测试方法

查看DSM声卡,命令如下:

root@rk3506-buildroot:/# aplay -l **** List of PLAYBACK Hardware Devices **** card 1: rockchipdsmsoun [rockchip,dsm-sound], device 0: ff4a0000.sai-rk_dsm rk_dsm-0 [ff4a0000.sai-rk_dsm rk_dsm-0] Subdevices: 1/1 Subdevice #0 : subdevice #0 root@rk3506-buildroot:/#

配置功放芯片,将功放芯片开关脚拉高,命令如下:

root@rk3506-buildroot:/root# echo 14 > /sys/class/gpio/export root@rk3506-buildroot:/root# echo out > /sys/class/gpio/gpio14/direction root@rk3506-buildroot:/root# echo 255 > /sys/class/gpio/gpio14/value

使用aplay播放音频,命令如下:

root@rk3506-buildroot:/# aplay -Dhw:1,0 1KHZ.wav Playing WAVE '1KHZ.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

当播放1k频率音频文件,示波器抓取经过RC滤波前后的音频信号如下:

RC滤波前的信号为放大查看:

wKgZPGjbpUKAFKMeAAOjF25bxBg095.png

RC滤波后的音频信号查看:

wKgZO2jbpVaAOBHAAAK8H6G47nM684.png

触觉智能RK3506开发板/核心板,搭载瑞芯微RK3506B/RK3506J低功耗多核异构处理器(3核A7@1.5Ghz+M0,满载0.65W),双CAN FD、双网口、6路串口,最高支持-40℃~85℃严苛环境,百元内国产化方案助力工控、IoT与智能设备高效升级!

Powered By Z-BlogPHP