RK3588+XS9922B:I2S-TDM多通道音频采集实例

前言:

在工业音视频采集、智能安防、车载DVR等场景中,多路音视频同步采集是核心需求。眺望电子RK3588 核心板,搭配 XS9922B 多路 AHD 音视频采集芯片,可轻松实现 8声道高清音频的稳定采集与传输。今天就从原理、硬件配置、设备树开发到实测验证,完整分享这套高性能音频采集方案实现全流程。

一、I2S 与 I2S-TDM的关键差异

很多人分不清 I2S 和 I2S-TDM,简单说:I2S 是双通道专用,I2S-TDM 是多通道(最高 8 声道)专用:

• I2S 控制器:仅支持标准 I2S、PCM 协议,主打左右双声道,满足普通立体声需求;如果要接入4路AHD摄像头,每路都带独立音频时,就需要8路音频通道。如果沿用标准I2S,需要4组独立的I2S总线,不仅浪费引脚,而且时钟同步困难。

• I2S-TDM 控制器:兼容 I2S、PCM、TDM 三大协议,核心优势是时分复用(TDM)技术,单条数据线就能传输 8 声道音频,完美适配多路采集场景。

传统 I2S 的 LRCLK 仅切换左右声道,而 TDM 模式下:

1.LRCLK 升级为帧同步信号,一个周期内按顺序传输 8 个声道的完整数据;

2.BCLK(位时钟)频率翻倍,计算公式:BCLK频率=采样率×声道数×采样位深;

3.仅用 1 根 SDIN/SDOUT 数据线,串行传输所有声道数据,大幅简化硬件布线。

RK3588核心板 关键引脚信号

• I2S_LRCLK:帧时钟,频率 = 采样率(如 44.1kHz/48kHz);

• I2S_BCLK:位时钟,每个数据位对应 1 个脉冲;

• I2S_SDATA:音频数据,二进制补码格式传输;

• I2S_MCLK:系统时钟,供 Codec 芯片工作,常用采样率×256(如 48kHz×256=12.288MHz)。

二、RK3588核心板+XS9922B方案优势

2.1 RK3588 TDM模式

• 内置专用 I2S-TDM 控制器,原生支持 8 声道采集,无需额外扩展芯片;

• 工业级高集成度核心板,时钟精度高、稳定性强,适配工业级 7×24 小时连续工作;

• 算力充足,可同步处理多路视频 + 音频数据,适配 AHD 音视频一体化采集场景。

2.2 XS9922B多路 AHD 音视频采集

XS9922B 是专为高清音视频采集设计的芯片,支持两种核心配置:

• 配置 1:slot-num为16,slot-width为32(适合 16 声道,RK3588 不支持);

• 配置 2:slot-num为8,slot-width为32**(与 RK3588 匹配)**。

核心优势:AHD 视频 + TDM 音频同步采集,单芯片搞定多路音视频输入,大幅降低硬件成本和开发难度。

三、实现步骤

3.1 设备树配置(RK3588 侧)

重点开启 I2S0 的 8 通道 TDM 模式,配置时钟、引脚复用及 Codec 关联:

cs 复制代码
// I2S0 8通道TDM配置
&i2s0_8ch {
    status = "okay";
    pinctrl-names = "default", "idle", "clk";
    pinctrl-0 = <&i2s0_sdi0 &i2s0_sdo0>;
    pinctrl-1 = <&i2s0_idle>;
    pinctrl-2 = <&i2s0_lrck &i2s0_sclk>;
    rockchip,always-on;          // 保持时钟常亮
    rockchip,tdm-fsync-half-frame; // TDM帧同步模式
    rockchip,capture-channels = <8>; // 配置8个采集声道
};
// I2C3挂载XS9922B Codec
&i2c3{
    status = "okay";
    xs9922: xs9922@30 {
        status = "okay";
        
#sound
-dai-cells = <0>;
        compatible = "xs9922";
        reg = <0x30>;
        clocks = <&mclkout_i2s0>;
        clock-names = "mclk";
        assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
        reset-gpios = <&extio EXTIO_GPIO_P00 GPIO_ACTIVE_HIGH>;
        power-gpios = <&extio EXTIO_GPIO_P01 GPIO_ACTIVE_HIGH>;
        assigned-clock-rates = <11289597>; // 匹配44.1kHz采样率时钟
        pinctrl-names = "default";
        pinctrl-0 = <&i2s0_mclk>;
    };
};
// 声卡配置:关联CPU与Codec,TDM参数匹配
xs9922_sound: xs9922-sound {
    compatible = "simple-audio-card";
    simple-audio-card,name = "rockchip,tdm-8ch";
    simple-audio-card,format = "dsp_a"; // 匹配XS9922B的DSP-A格式
    simple-audio-card,mclk-fs = <256>;
    simple-audio-card,bitclock-master = <&codec_master>;
    simple-audio-card,frame-master = <&codec_master>;
    status = "okay";
    simple-audio-card,cpu {
        sound-dai = <&i2s0_8ch>;
        dai-tdm-slot-num = <8>;    // 8个时隙
        dai-tdm-slot-width = <32>; // 32bit位宽
    };
    codec_master: simple-audio-card,codec {
        sound-dai = <&xs9922>;
    };
};

3.2 内核驱动配置

RK3588 内核中 I2S 驱动(kernel/sound/soc/rockchip/rockchip_i2s.c),其中 rockchip_i2s_set_fmt 负责配置协议格式,默认已原生支持 DSP-A/B 格式,与 XS9922B 完全兼容,无需修改驱动代码:

•DSP-A:PCM 延迟 1bit 模式(本次采用);

•DSP-B:PCM 无延迟模式。

cs 复制代码
static int rockchip_i2s_set_fmt(struct snd_soc_dai *cpu_dai,
unsigned int fmt)
{
    mask = I2S_TXCR_IBM_MASK | I2S_TXCR_TFS_MASK | I2S_TXCR_PBM_MASK;
switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
case SND_SOC_DAIFMT_RIGHT_J:
		val = I2S_TXCR_IBM_RSJM;
break;
case SND_SOC_DAIFMT_LEFT_J:
		val = I2S_TXCR_IBM_LSJM;
break;
case SND_SOC_DAIFMT_I2S:
		val = I2S_TXCR_IBM_NORMAL;
break;
case SND_SOC_DAIFMT_DSP_A: /* PCM delay 1 bit mode */
		val = I2S_TXCR_TFS_PCM | I2S_TXCR_PBM_MODE(1);
break;
case SND_SOC_DAIFMT_DSP_B: /* PCM no delay mode */
		val = I2S_TXCR_TFS_PCM;
break;
default:
		ret = -EINVAL;
goto err_pm_put;
	}
}

四、功能测试验证

4.1 查看声卡

cs 复制代码
# 查看系统声卡列表
cat /proc/asound/cards
# 查看录音设备
arecord -l
# 查看播放设备
aplay -l

正常输出会显示rockchip,tdm-8ch声卡,且识别到 8 个采集声道。

4.2 检查 I2S 时钟

复制代码
cat /sys/kernel/debug/clk/clk_summary |grep i2s0

确认 I2S0 的 MCLK、BCLK 时钟频率与配置一致(如 44.1kHz 采样率下,BCLK=11.2896MHz)。

波型实测

•LRCLK:频率 44.1kHz,方波信号稳定;

•BCLK/MCLK:频率 11.2896MHz,脉冲波形清晰;

•SDATA:8 声道音频数据串行输出,波形无失真;

五、总结

RK3588+XS9922B 的 I2S-TDM 8 声道音频方案,其核心优势在于:仅用1组I2S总线 + 1个TDM控制器,就收齐了8路音频,既节省了RK3588宝贵的引脚资源,又通过TDM的时分复用保证了多声道同步性。

原生适配、配置简单、稳定性强,完美解决多路音频同步采集痛点。无需复杂的硬件扩展,仅通过设备树配置即可快速落地,是工业级、车载级、安防级多路音视频采集场景的首选方案。希望这篇基于 RK3588 I2S-TDM 与 XS9922B 的笔记,能为你的项目调试提供帮助。

如果你在配置过程中遇到问题,或者有其他技术方案需要,欢迎联系我们或者在评论区交流 👇

相关推荐
气泡音人声分离17 小时前
技术解析|音频可视化:从波形图到声谱图,把“听觉”变成“视觉”
音视频·音频剪辑·音频可视化
阿拉斯攀登17 小时前
售货柜实战:IPC 拉流 → 抽帧 → YOLO 识别完整流水线
yolo·ffmpeg·音视频·webrtc·视频编解码
Auv开心18 小时前
Ubuntu 20.04 默认视频播放器(Totem)无法播放 MP4 文件,通常是因为缺少多媒体编解码器。以下是几种解决方法:
linux·ubuntu·音视频
chnyi6_ya18 小时前
论文阅读笔记:VideoWeaver — 面向智能体长视频生成的技能评估与进化
论文阅读·笔记·音视频
明哥聊AI20 小时前
AI视频生成技术全景:Sora2、Veo3、可灵3.0背后的Diffusion架构深度解析
人工智能·架构·音视频
阿拉斯攀登20 小时前
RTSP 拉流与录制:IPC 摄像头本地录像完整方案
ffmpeg·音视频·webrtc·实时音视频·视频编解码
SRET1 天前
Mineradio 沙盒隔离安装完全指南 | 一键安全运行 Electron 应用!!!
javascript·经验分享·安全·electron·aigc·音视频·ai编程
Niuguangshuo1 天前
音频 MOS 演进:从 PESQ 到 SpeechQualityLLM
音视频
2501_930296991 天前
模型驱动创作全链路梳理:2026上半年图像与视频生成AI模型全景盘点
人工智能·音视频
潜创微科技2 天前
# 国产无线投屏接收端主控芯片 QCW5004:原生集成 HDMI TX,1080P@60fps 硬解
音视频