本文基于觸覺智能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網盤中,軟件資料/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濾波前的信號為放大查看:

RC濾波后的音頻信號查看:

觸覺智能RK3506開發板/核心板,搭載瑞芯微RK3506B/RK3506J低功耗多核異構處理器(3核A7@1.5Ghz+M0,滿載0.65W),雙CAN FD、雙網口、6路串口,最高支持-40℃~85℃嚴苛環境,百元內國產化方案助力工控、IoT與智能設備高效升級!
-
音頻
+關注
關注
31文章
3140瀏覽量
85011 -
開發板
+關注
關注
26文章
6161瀏覽量
114168 -
核心板
+關注
關注
6文章
1354瀏覽量
31838 -
DSM
+關注
關注
0文章
25瀏覽量
18400 -
RK3506
+關注
關注
0文章
85瀏覽量
772
發布評論請先 登錄
米爾基于RK3562與RK3506開發板有什么區別?
瑞芯微RK3506開發板必備之LVGL應用開發手冊,深圳觸覺智能出品
米爾基于瑞芯微RK3506核心板開發板
瑞芯微RK3506開發板必備攻略之Qt應用開發手冊(下),觸覺智能工控嵌入式方案商

瑞芯微RK3506核心板/開發板DSM音頻開發實戰,關鍵知識點與實操案例必看攻略!
評論