2. R-Car音频硬件接口与时钟设计

R-Car SoC 的音频子系统并不是“一个 I2S 控制器”那么简单。以 R-Car H3/M3 这类座舱主控为例,音频前端通常同时挂载多路 SSI(Serial Sound Interface)、SCU(Sample Rate Converter Unit)、SRC、ADG(Audio Dot Clock Generator)以及 SPDIF、DMIC 等模块。理解这些模块之间的接口类型、时钟来源和主从关系,是后续做多音区、多音源混音和低延迟播放的前提。

一、四类接口的物理层与数据格式差异

R-Car 上常见的音频接口可归为四类,它们在引脚数量、时钟关系和数据组织方式上完全不同。

I2S 是最基础的同步串行接口,使用 SCK(位时钟)、WS(声道选择/帧同步)、SD(数据)三线。每个 WS 周期传输一个声道的一个采样,左右声道交替。R-Car SSI 支持标准 I2S、左对齐和右对齐格式,配置时需注意 WS 极性、数据延迟和位宽(16/24/32 bit)。

TDM 是 I2S 的多声道扩展,一根 SD 线上按时间槽(slot)依次排列多个声道。例如 8 声道 TDM 在 48 kHz、32 bit 下,SCK 频率为 48000×8×32 = 12.288 MHz。R-Car SSI 支持 TDM 模式,但需正确设置 slot 数、slot 宽度和起始 slot 偏移,否则会出现声道错位。

DMIC 是数字 MEMS 麦克风接口,通常为 PDM(脉冲密度调制)信号,使用 CLK 和数据线。R-Car 内部有 DMIC 控制器,负责将 PDM 抽取滤波为 PCM。DMIC 的时钟频率一般在 1.2~3.2 MHz,采样率由抽取比决定,例如 2.4 MHz 时钟、抽取比 50 得到 48 kHz。

SPDIF 是消费电子数字音频接口,使用单线传输双相标记编码(BMC)信号,可承载 PCM 或压缩音频。R-Car 的 SPDIF 模块可配置为输入或输出,输入时需注意接收时钟恢复和采样率检测。

R-Car 音频接口与 ADG 时钟树关系 ADG 音频时钟发生器 源:Audio CLK / PLL 分频器 ÷N 输出:SCK / WS / MCK SSI0 / I2S SCK + WS + SD SSI1 / TDM 8ch SCK + WS + SD DMIC 控制器 CLK + PDM Data SPDIF 收发器 BMC 单线 Codec / DAC 从模式接收 功放 / DSP TDM 从模式 MEMS 麦克风 PDM 输出 外部 SPDIF 源 BMC 输入 主 主 主 从 ADG 为 SSI/DMIC 提供主时钟;SPDIF 输入需从 BMC 流中恢复时钟,再经 SRC 与系统时钟对齐

二、ADG 时钟树与主从模式选择

ADG 是 R-Car 音频时钟的“总调度”。它从 Audio CLK 或 PLL 获取源时钟,经过分频后产生 SCK、WS 和 MCK,再分配给各 SSI 和 DMIC 模块。ADG 的关键寄存器包括时钟源选择、分频比和输出使能。例如,若源时钟为 24.576 MHz,要得到 48 kHz 采样率、32 bit、2 声道 I2S 所需的 SCK = 48000×32×2 = 3.072 MHz,则分频比应为 24.576/3.072 = 8。

主从模式决定谁产生 SCK 和 WS。在 R-Car 作为主设备时,ADG 输出时钟,SSI 主动驱动 SCK/WS,Codec 作为从设备接收。这种方式时钟质量可控,适合多路 SSI 需要严格同步的场景。当 R-Car 作为从设备时,外部 Codec 或 DSP 提供 SCK/WS,SSI 接收时钟并采样数据。此时 ADG 不输出时钟,但需确保外部时钟频率与采样率匹配,否则会出现滑码或静音。

实际配置中,一个常见做法是:主音频路径(如播放到功放)由 R-Car 做主,保证低抖动;而蓝牙通话或外部 SPDIF 输入路径由外部设备做主,R-Car 做从,避免时钟域冲突。主从切换通常通过 SSI 的 CR 寄存器中的 MST 位和 ADG 的输出使能位配合完成。

三、多路音频源同步策略

座舱中常同时存在导航播报、媒体播放、蓝牙通话和提示音等多路音源。它们可能来自不同接口、不同采样率,甚至不同时钟域。同步策略的核心是“统一到同一个采样率时钟域”。

第一步是采样率转换。R-Car 的 SCU 和 SRC 模块可将 44.1 kHz、32 kHz 等异步采样率转换为系统统一的 48 kHz。SCU 适合多声道同步转换,SRC 适合单路异步转换。配置时需设置输入/输出采样率比、滤波模式和缓冲区深度。

第二步是时钟域对齐。所有经过 SRC 的音频流最终都锁定到 ADG 输出的同一 WS 时钟上。对于 SPDIF 输入,先由 SPDIF 接收器恢复出时钟,再通过 SRC 与系统时钟对齐;对于 DMIC,其 PDM 时钟由 ADG 分频产生,天然与系统同步。

第三步是缓冲区管理。多路音源在混音前需进入各自的 DMA 缓冲区,由 SSI 或 SCU 按帧触发搬运。若某一路缓冲区欠载,会出现断续;若溢出,则丢帧。实际调试中可通过查看 SSI 的 FIFO 状态寄存器和 DMA 传输计数来判断。

示例参数:假设系统统一为 48 kHz、32 bit、TDM 8 声道。ADG 源时钟 24.576 MHz,SCK = 48000×32×8 = 12.288 MHz,分频比 = 2。若某路蓝牙音源为 16 kHz,则 SRC 转换比为 16:48 = 1:3,输出缓冲区按 48 kHz 帧率填充。

四、配置检查与常见问题

接口配置完成后,建议按以下顺序检查:先确认 ADG 输出时钟频率与目标采样率匹配;再确认 SSI 的 MST 位与外部设备主从关系一致;然后检查 TDM slot 数和位宽是否与 Codec 寄存器一致;最后用示波器或逻辑分析仪观察 SCK、WS、SD 的波形,确认无毛刺、无错位。

常见问题包括:WS 极性反导致左右声道互换;TDM slot 偏移错导致声道映射错乱;SPDIF 输入采样率检测失败导致静音;DMIC 时钟频率偏差导致噪声底升高。这些问题大多可通过核对 ADG 分频寄存器、SSI 格式寄存器和 Codec 配置寄存器定位。

接口典型时钟主从建议常见问题
I2SSCK = fs×32×2R-Car 主WS 极性、数据延迟
TDMSCK = fs×32×NR-Car 主slot 偏移、声道错位
DMICCLK 1.2~3.2 MHzR-Car 主抽取比、噪声底
SPDIFBMC 恢复时钟外部主采样率检测、SRC 对齐

把接口、时钟树和同步策略放在一起看,R-Car 音频硬件设计的本质就是:让每一路数据都在正确的时钟沿上、以正确的格式、进入正确的缓冲区。ADG 决定时钟从哪来、分频到多少;SSI/DMIC/SPDIF 决定数据怎么组织;SRC/SCU 决定不同采样率如何汇合。三者配置一致,多路音源才能稳定混音输出。