当前位置: 首页 > news >正文

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

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

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。

图片

图片

触觉智能RK3506开发板,相关底板详细资料请关注深圳触觉智能CDSN或  官方客服134   2385   6106,提供软硬件资料与Demo。

内核配置

  • 打补丁

将触觉智能提供的RK3506网盘中,软件资料/Linux/patch/dsm路径下的文件替换<SDK_PATH>/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 = ;
simple-audio-card,name = "rockchip,dsm-sound";
simple-audio-card,bitclock-master = ;
simple-audio-card,frame-master = ;
sndcpu: simple-audio-card,cpu {
sound-dai = ;
};
sndcodec: simple-audio-card,codec {
sound-dai = ;
};
};
&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 = ;
rockchip,pre-power-on-delay-ms = ;
rockchip,post-power-down-delay-ms = ;
rockchip,format = "i2s";
rockchip,mclk-fs = ;
rockchip,cpu = ;
rockchip,codec = ;
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 = ;
};
&i2c0 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = ;
es8388: es8388@11 {
status = "disabled";
#sound
-dai-cells = ;
compatible = "everest,es8388", "everest,es8323";
reg = ;
clocks = ;
clock-names = "mclk";
assigned-clocks = ;
assigned-clock-rates = ;
pinctrl-names = "default";
pinctrl-0 = ;
};
};

播放音频测试方法

查看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滤波前的信号为放大查看:

图片

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

图片

http://www.hskmm.com/?act=detail&tid=16566

相关文章:

  • 不只是一台玩具车:开源燃料电池机器人HydroBot全揭秘 - 实践
  • 在AI技术唾手可得的时代,挖掘新需求成为核心竞争力——某知名窗口管理工具需求洞察
  • OS-KylinV10-加载动态库运行异常-全局函数重名或未使用命名空间
  • 性能暴涨50%:PD分离KV cache传输的实战干货
  • 【GitHub每日速递 250925】 一套代码跑遍全平台!Flutter 让你的应用开发提速 10 倍
  • 上海芯片上市公司市值大揭秘!谁是“芯”界顶流?
  • 中科微卫星定位芯片代理商,北斗双频定位导航模组ATGM332D-F7N
  • 四个第一!又一国产GPU突围亮相!
  • AI智慧:于悬荡中并行,在悟空里觉醒
  • 读人形机器人22工作的意义
  • .NET 何以成为制造业数字化转型的基石:效率、生态与跨平台的制胜之道
  • 深度互联:金兰契协议下的领域知识与元智慧共生
  • Winform无边框窗体拖动功能实现
  • HarmonyOS SDK 媒体开放能力在微博社交场景的实践剖析
  • 今天我看了
  • reaction 记录——《彻夜之歌》
  • 孤独 寂寞
  • 泰勒展开中的佩亚诺余项与高阶无穷小:不只是“小到可以忽略”
  • 关于“屏蔽词”的历史遗传
  • 不变应万变
  • [智能驾驶/智能汽车] 《SAE J3016-202104:驾驶自动化分级》[转]
  • [汽车] 智能网联汽车-智能驾驶-综述
  • 【stm32-FOC】初步认识 CMSIS-DSP
  • 护照包 阻门器 防偷包
  • Python-Conda技术指南
  • [GRPC]基于C#和GO 的GRPC快速上手
  • 19.并发编程
  • 复健
  • 苍穹外卖-day10(spring Task,WebSocket,来单提醒客户催单) - a
  • 在CodeBolcks下wxSmith的C++编程教程——使用wxPanel资源