RK3326音频调试避坑指南:从“录不了”到“全功能跑通”的实战历程 电子说
在嵌入式 AI 语音设备领域,RK3326 凭借性价比和对多通道音频的支持,成为不少开发者的首选主控。但音频调试向来是 “坑多细节密”—— 前阵子有位同学反馈,用 tinycap 录 PCM 能成,录 WAV 就翻车,硬件飞线后还采不到回采数据。今天结合实际硬件图纸、DTS 配置和调试日志,跟大家拆解 RK3326 上 PDM 麦克风 + 音频回采的完整调试流程,帮你避开那些 “一看就会,一调就废” 的坑。
在动手前,必须先理清硬件链路—— 音频调试的核心是 “软件配置匹配硬件实际连接”,否则再改代码也白搭。




|
模块
|
关键参数与连接
|
|
主控
|
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)
|
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),无时钟信号,麦克风数据自然传不进来。
很多同学会误以为“改个文件后缀就行”,但 tinycap 的设计逻辑是只输出原始 PCM 数据,而 WAV 格式需要 “文件头 + PCM 数据”(文件头记录采样率、声道数、位深等信息)。
• PCM:无文件头,tinycap 直接写采样数据,硬件输出什么就存什么,所以能成功;
• WAV:缺少文件头,tinycap 无法生成符合 WAV 规范的文件,系统识别为 “无效文件”,看似 “录不了”,实际是格式不兼容。
解决思路:先录 PCM,再用 ffmpeg 补文件头转 WAV。
飞线后仍无时钟、无回采,核心是两个卡点:
RK3326 的 PDM 模块需要外部时钟驱动(来自 RK817 的 PDMCLK),原硬件未直连,需飞线:
•飞线目标:RK817 的 PDMCLK 引脚 → RK3326 的 W15 脚(GPIO2_C6,对应pdm_clk0m1引脚);
•易错点:飞线后未检查波形—— 若仍无时钟,不是硬件没接好,就是软件没启用该引脚。
从 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Ω 电阻,回采信号需要)。
基于文档 6 的原始 DTS,重点修改PDM 节点和RK817 Codec 节点,确保引脚与功能匹配:
&pdm {status = "okay";pinctrl-names = "default";pinctrl-0 = <&pdm_clk0m1&pdm_clk1&pdm_sdi0m1&pdm_sdi1&pdm_sdi2&pdm_sdi3>;};
确保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 是 RK 平台配置音频通路的核心工具,选对控制项才能打通数据链路。
最初用tinymix 0 2失败,换成tinymix 1 1就有反应,原因是:
•tinymix 0:对应 I2S 音频通路(用于耳机 / 喇叭),不是 PDM 麦克风通路;
•tinymix 1:对应 PDM 麦克风通路,1表示“启用该通路”(不同平台控制项编号可能不同,可通过tinymix命令查看所有控制项)。
正确操作:
# 查看所有音频控制项,找到PDM相关的控制项(通常名称含“PDM”或“Mic”)tinymix# 启用PDM麦克风通路(假设控制项1是PDM使能)tinymix 1 1
# 命令解析:-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 -D 0 -d 1 -c 8 -r 16000 -b 16 -p 1024 -n 3
•为什么用-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 -ar 16000 -ac 8 -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 修改→通路配置→录制验证” 的步骤来,大部分问题都能解决。如果你的调试过程中遇到特殊坑,欢迎在评论区留言,我们一起讨论~
全部0条评论
快来发表一下你的评论吧 !