PDM、S/PDIF、VAD、ASRC 与数字音频
1. PDM
rockchip_pdm.c 匹配 rockchip,rk3588-pdm,面向数字麦克风 capture:
- 多 channel;
- PDM clock;
- CIC/FIR/decimation;
- sample rate;
- DMA FIFO;
- high-pass/gain(按 IP)。
rockchip_pdm_v2.c 是另一版 PDM 控制器,但本树直接标明的 RK3588 compatible 位于 rockchip_pdm.c,不能仅因文件名较新就假设板卡使用 v2。
2. S/PDIF TX/RX
rockchip_spdif.c:TX,RK3588 compatible;rockchip_spdifrx.c:RX,DTS 可使用 RK3588 + RK3308 fallback;- IEC958 channel status;
- compressed bitstream passthrough;
- DMA;
- recovered clock(RX)。
用户态透传 AC3/DTS 时数据格式和接收设备能力必须匹配,不能按普通 PCM 调音量。
3. Digital codec
soc/codecs/rk_codec_digital.c 匹配:
1 | rockchip,rk3588-codec-digital |
它表示 SoC 内数字音频 codec/路由控制,不等同于完整外置模拟 codec。模拟耳机/扬声器仍可能需要 I2C codec、amp、regulator 和 machine routing。
4. VAD
rockchip_vad.c 匹配 RK3588,并有 rk3588_addr_map 描述可监听音频源。目标是在低功耗/持续捕获场景检测语音活动。
涉及:
- source selection;
- SRAM/ring buffer;
- threshold;
- preprocessing;
- wakeup;
- 与 PDM/I2S capture 协调。
本树按 ARM/ARM64/Thumb 选择 VAD preprocess 汇编。
5. ASRC
rockchip_asrc.c 提供 asynchronous sample-rate conversion,在不同时钟域/采样率间转换。本分支 match table 只有 rk3506-asrc、rk3576-asrc,没有 rk3588-asrc;因此不能把该驱动列为 RK3588 原生 ASRC。只有板级存在独立兼容硬件或其它转换路径时,才能按实际拓扑讨论 ASRC。
ASRC 能处理时钟域差异,但会增加:
- pipeline latency;
- 算法资源;
- format/rate 限制;
- 质量验证需求。
6. DLP
rockchip_dlp.c + rockchip_dlp_pcm.c 实现数字 loopback PCM,把输入路径回送/抓取用于测试、回声参考或调试。它不是通用用户态软件 loopback。
7. Multi-DAI
rockchip_multi_dais.c 聚合多个 DAI,rockchip_multi_dais_pcm.c 协调 PCM。适合多控制器/多 lane 同步,但要求 rate、buffer、trigger 和 pointer 一致。
8. SAI
rockchip_sai.c 声明高 channel 能力(Kconfig 最多 128 channel),属于独立 SAI IP;本树 RK3588 DTS 没有 SAI 控制器实例,因此不应归入 RK3588 音频 IP。
9. 调试
1 | arecord --dump-hw-params -D hw:0,0 |
PDM 无数据优先查 clock/pinctrl/DMIC 供电;S/PDIF RX 优先查输入锁定和 recovered clock。
正在加载留言…