在嵌入式AI語音設備領域,RK3326憑借性價比和對多通道音頻的支持,成為不少開發者的首選主控。但音頻調試向來是“坑多細節密”——前陣子有位同學反饋,用tinycap錄PCM能成,錄WAV就翻車,硬件飛線后還采不到回采數據。今天結合實際硬件圖紙、DTS配置和調試日志,跟大家拆解RK3326上PDM麥克風+音頻回采的完整調試流程,幫你避開那些“一看就會,一調就廢”的坑。
一、調試背景:先搞懂硬件與初始問題
在動手前,必須先理清硬件鏈路——音頻調試的核心是“軟件配置匹配硬件實際連接”,否則再改代碼也白搭。




1.核心硬件組成
|
模塊
|
關鍵參數與連接
|
|
主控
|
RK3326,負責PDM音頻數據接收與處理,關鍵引腳:W15(GPIO2_C6,PDM_CLK)、AA15(PDM_SDI1)、Y15(PDM_SDI2)
|
|
音頻Codec
|
集成在PMIC RK817中(RK817-codec),支持PDM輸入、I2S輸出,回采依賴ADC環路(adc-for-loopback)
|
|
麥克風
|
雙PDM麥克風(LEFT/RIGHT),分別連接PDM_SDI1(CN1)、PDM_SDI2(CN2),供電3.3V(VCC_3V0),帶2.2uF濾波電容
|
|
時鐘與通路
|
RK817的PDM_CLK需飛線到RK3326的W15腳(原硬件未直連,這是關鍵坑點),麥克風信號線帶100K上拉電阻(R9968/R9969)
|
2.初始調試問題
1.格式差異問題:tinycap /sdcard/rec3.pcm -D 0 -d 1 -c 8 ...能錄PCM,但改輸出為.wav就失敗;
2.回采失敗問題:硬件飛線(RK817 PDMCLK→W15)后,執行tinymix 0 2 + tinycap,錄不到機器內播音的回采數據;
3.時鐘無波形:示波器測W15腳(PDM_CLK),無時鐘信號,麥克風數據自然傳不進來。
二、核心問題拆解:從“現象”到“本質”
1.為什么tinycap錄WAV會失敗?——格式本質差異
很多同學會誤以為“改個文件后綴就行”,但tinycap的設計邏輯是只輸出原始PCM數據,而WAV格式需要“文件頭+ PCM數據”(文件頭記錄采樣率、聲道數、位深等信息)。
? PCM:無文件頭,tinycap直接寫采樣數據,硬件輸出什么就存什么,所以能成功;
? WAV:缺少文件頭,tinycap無法生成符合WAV規范的文件,系統識別為“無效文件”,看似“錄不了”,實際是格式不兼容。
解決思路:先錄PCM,再用ffmpeg補文件頭轉WAV。
2.回采與時鐘問題:硬件+軟件雙重卡點
飛線后仍無時鐘、無回采,核心是兩個卡點:
(1)硬件卡點:PDM_CLK未正確連接
RK3326的PDM模塊需要外部時鐘驅動(來自RK817的PDMCLK),原硬件未直連,需飛線:
?飛線目標:RK817的PDMCLK引腳→ RK3326的W15腳(GPIO2_C6,對應pdm_clk0m1引腳);
?易錯點:飛線后未檢查波形——若仍無時鐘,不是硬件沒接好,就是軟件沒啟用該引腳。
(2)軟件卡點:DTS引腳配置不全+通路未選對
從DTS看,PDM節點的pinctrl-0配置缺失關鍵引腳:
// 原始PDM節點配置(不全)&pdm {status ="okay";pinctrl-names ="default";pinctrl-0= <&pdm_clk1 &pdm_sdi1 &pdm_sdi2>;// 少了pdm_clk0m1、pdm_sdi0m1};
“PDM_SDI0用于回采,在1-2通道”,但原始配置沒加&pdm_sdi0m1,導致回采通路沒啟用;同時缺少&pdm_clk0m1,時鐘引腳沒被正確配置為PDM功能,自然無波形。
三、分步解決方案:硬件→軟件→驗證
第一步:硬件鏈路核查(優先級最高)
音頻調試先查硬件,避免“軟件瞎調”。按以下清單逐一確認:
1.麥克風供電:測量CN1/CN2的MIC_3V0_CONN引腳,電壓是否3.0V(正常),濾波電容C9867/C9868(2.2uF)是否焊接;
2.PDM信號線:PDM_SDI1(CN1引腳2)→RK3326 AA15,PDM_SDI2(CN2引腳2)→RK3326 Y15,線路是否通(用萬用表測通斷);
3.時鐘飛線:RK817的PDMCLK引腳→ RK3326 W15(GPIO2_C6),飛線是否牢固,無虛焊;
4.上拉電阻:R9968/R9969(100K)是否焊接(PDM信號線需上拉才能穩定傳輸);
5.回采硬件:RK817的HP_SNS引腳(耳機檢測)是否接R6134(0Ω電阻,回采信號需要)。
第二步:DTS配置修改
基于文檔6的原始DTS,重點修改PDM節點和RK817 Codec節點,確保引腳與功能匹配:
1. PDM節點修改(啟用時鐘與回采引腳)
&pdm {status ="okay";pinctrl-names ="default";pinctrl-0= <&pdm_clk0m1&pdm_clk1&pdm_sdi0m1&pdm_sdi1&pdm_sdi2&pdm_sdi3>;};
2. RK817 Codec節點確認(回采必需)
確保rk817_codec節點啟用回采功能,關鍵參數如下:
rk817_codec: codec {compatible ="rockchip,rk817-codec";clocks = <&cru SCLK_I2S1_OUT>;clock-names ="mclk";pinctrl-names ="default";pinctrl-0= <&i2s1_2ch_mclk>,<&hp_init>;pdmdata-out-enable;// 啟用PDM數據輸出use-ext-amplifier;// 外部放大器(若有)adc-for-loopback;// 開啟ADC回采(關鍵!沒有這個回采用不了)hp-ctl-gpios = <&gpio3 RK_PA3 GPIO_ACTIVE_LOW>;hp-volume = <20>;spk-volume = <20>;};
第三步:tinymix+tinycap調試(通路配置與錄制)
tinymix是RK平臺配置音頻通路的核心工具,選對控制項才能打通數據鏈路。
1.用tinymix配置通路(關鍵一步)
最初用tinymix 0 2失敗,換成tinymix 1 1就有反應,原因是:
?tinymix 0:對應I2S音頻通路(用于耳機/喇叭),不是PDM麥克風通路;
?tinymix 1:對應PDM麥克風通路,1表示“啟用該通路”(不同平臺控制項編號可能不同,可通過tinymix命令查看所有控制項)。
正確操作:
# 查看所有音頻控制項,找到PDM相關的控制項(通常名稱含“PDM”或“Mic”)tinymix# 啟用PDM麥克風通路(假設控制項1是PDM使能)tinymix11
2. tinycap錄制PCM(參數必須匹配硬件)
# 命令解析:-D 0(音頻設備0)-d 1(聲卡1,PDM對應的聲卡)-c 8(8通道,覆蓋SDI0-3)# -r 16000(采樣率16K,PDM常用)-b 16(位深16)-p 1024(周期大小)-n 3(錄制3秒)tinycap/sdcard/rec3.pcm -D0-d1-c8-r16000-b16-p1024-n3
?為什么用-c 8?因為RK3326的PDM模塊支持4路SDI(SDI0-3),每路2通道,共8通道;用戶的MIC在3-6通道(SDI1/2),回采在1-2通道(SDI0),只有錄8通道才能同時抓到MIC和回采數據。
第四步:回采問題專項處理
若仍采不到回采數據(機器內播音的聲音),需額外檢查:
1.回采功能是否啟用:確認rk817_codec節點的adc-for-loopback是否配置,編譯DTS時是否生效(可通過以下指令查看);
cat/sys/firmware/devicetree/base/rk817@20/codec/adc-for-loopback
2.時鐘波形檢查:用示波器測RK3326 W15腳(PDM_CLK),若仍無波形,可能是DTS配置沒生效(重新編譯燒錄)或硬件飛線斷了;
3.播放測試音頻:確保“機器內播音”正常(比如用tinyplay播放一個WAV文件),否則無聲音可回采。
四、最終驗證:從錄制到播放全流程
1.轉碼PCM為WAV(便于播放驗證):
tinycap錄的PCM無文件頭,需用ffmpeg轉成WAV:
# -f s16le(16位小端)-ar 16000(采樣率)-ac 8(8通道)-i 輸入PCM -o 輸出WAVffmpeg-f s16le -ar16000-ac8-i /sdcard/rec3.pcm /sdcard/rec3.wav
1.播放驗證:
?用tinyplay播放轉好的WAV文件,若能聽到“自己說話的聲音(MIC)”和“機器內播音的聲音(回采)”,說明調試成功;
?若只有MIC聲音,無回采,檢查adc-for-loopback配置和HP_SNS電阻;
?若什么聲音都沒有,重新查PDM_CLK波形和tinymix通路配置。
五、調試經驗總結:避坑關鍵點
1.硬件優先原則:先查電壓、線路通斷、波形(尤其是時鐘信號),再調軟件——沒有時鐘,軟件再對也沒數據;
2.DTS引腳匹配:RK平臺的pinmux是“硬約束”,PDM的CLK/SDI引腳必須配置為對應功能(如RK_FUNC_2),不能用GPIO功能;
3.tinymix通路別亂選:控制項編號對應不同通路,不確定時用tinymix列全列表,結合硬件功能猜(含PDM/Mic的優先試);
4.格式差異要記牢:tinycap只產PCM,轉WAV用ffmpeg,別直接改后綴;
5.回采依賴Codec配置:RK817的回采需要adc-for-loopback,硬件上HP_SNS電阻不能少。
結尾
RK3326的音頻調試看似復雜,實則是“硬件鏈路+軟件配置+工具使用”的三重匹配。只要按“硬件核查→DTS修改→通路配置→錄制驗證”的步驟來,大部分問題都能解決。如果你的調試過程中遇到特殊坑,歡迎在評論區留言,我們一起討論~
-
麥克風
+關注
關注
16文章
695瀏覽量
57667 -
音頻
+關注
關注
31文章
3188瀏覽量
85551 -
調試
+關注
關注
7文章
646瀏覽量
35652 -
RK3326
+關注
關注
0文章
9瀏覽量
1965
發布評論請先 登錄
rk3326麥克風矩陣使用說明
RK3326 Android方案軟件設計資料下載
如何去實現RK3326 android10.0(Q) OTA升級呢
RK3326 Android8.1系統定制化通用修改方案
rk3566和rk3326的區別
rk3326相當于驍龍什么
rk3326芯片參數介紹
RK3326平臺GC2385攝像頭調試實戰:從報錯到功能正常的完整排查指南
RK3326音頻調試避坑指南:從“錄不了”到“全功能跑通”的實戰歷程
評論