工程博客

音频与嵌入式工程笔记

百斯通工程团队整理并归档 Rockchip AIoT 音频与 SoC 量产技术文章。部分内容源自社区发布;每篇均保留来源署名与原文链接,版权归原作者所有。

音频 Rockchip 驱动 Linux / ALSA

硬件 DAC/功放上电即出声,无需驱动——那么软件侧究竟要做什么才能真的播放出声音?

署名:原作者:罗总(Rockchip),于 2026-08-25 发布于微信公众号 “罗总开发笔记”。原文链接:mp.weixin.qq.com/s/CqBo2NonYYGqC99ojL--4Q。系列:《如何编写你自己的 CODEC 驱动》第 2 篇(DAC 播放)。版权归原作者所有,经授权转载。

规范注解版 → 技术笔记 · 第 2 篇:DAC 播放(完整翻译 + 百斯通工程注解)。

许多 DAC 芯片(如 TI 的 PCM5102A)根本不需要控制接口:接上 I2S 数据线并上电,即可输出声音——它内置 PLL,甚至不需要 MCLK。本文讲解如何在 Rockchip Linux 上用 dummy-codec 驱动此类“零控制”DAC,搭建完整的播放链路:

  • 方向:声明一个 playback DAI 流(.playback),声卡会创建 /dev/snd/pcmC0D0p。这与上一篇 PDM 采集文章(capture / pcmC0D0c)正好相反。
  • 驱动:dummy-codec 的 .playback 能力声明只是一个占位符——零行驱动代码。真实芯片驱动(如 pcm5102a.c)必须严格按照 datasheet 声明其能力。
  • DTS 三件套:Codec DAI(dummy-codec 占位)→ CPU DAI(使能 &i2s0 + 引脚复用)→ Machine(multicodecs-card 组装声卡)。把 PDM 换成 I2S、把采集换成播放,原理相同。
  • 验证cat /proc/asound/cardsls /dev/snd/aplay -D hw:0,0 ...;数据通路为 wav → 环形缓冲区 → DMA → I2S → DAC → 扬声器。
/* dummy-codec playback 能力声明 (kernel-6.1) */
struct snd_soc_dai_driver dummy_dai = {
  .name = "dummy_codec",
  .playback = {
    .stream_name = "Dummy Playback",
    .channels_min = 1, .channels_max = 384,
    .rates = SNDRV_PCM_RATE_CONTINUOUS,
    .formats = SNDRV_PCM_FMTBIT_S16_LE | ... ,
  },
};

百斯通关联 · 我们的音频平台基于同一框架

本文的 dummy-codec + I2S 三件套 DTS,正是百斯通 RK2108D(M08D 模组)RK2118(旗舰车载音频,含 40 GOPS Audio-NPU)RK962(无线音频) 量产音频方案背后的框架。在此之上我们叠加:麦克风阵列波束成形、低功耗语音唤醒(RT-Thread)、HiFi DSP 前端处理,以及面向录音笔 / 智能音箱 / 车载音频的整板交付。

阅读完整技术笔记版本 → 原文(罗总 · 微信,中文) 版权 © 罗总(Rockchip)。经授权转载。

系列预告(同一作者)

第 3 篇:MCLK / RESET / 板级 GPIO 协同 · 第 4 篇:ES7202 寄存器暴力移植 · 第 5 篇(终):DAPM 与 Mixer 架构。基于 Rockchip BSP kernel-6.1(v6.1.162)。