工程部落格

音訊與嵌入式工程筆記

Bestom 工程團隊精選並整理 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 stream(.playback),音效卡會建立 /dev/snd/pcmC0D0p。這與上一篇 PDM 收音文章(capture / pcmC0D0c)相反。
  • 驅動:dummy-codec 的 .playback 能力宣告只是個佔位符——零行程式碼。真實晶片驅動(例如 pcm5102a.c)必須嚴格依 datasheet 宣告其能力。
  • DTS 三件套:Codec DAI(dummy-codec 佔位符)→ CPU DAI(啟用 &i2s0 + pinmux)→ Machine(multicodecs-card 組裝音效卡)。把 PDM 換成 I2S、capture 換成 playback,原理相同。
  • 驗證cat /proc/asound/cardsls /dev/snd/aplay -D hw:0,0 ...;資料路徑為 wav → ring buffer → 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)。