[特殊字符] 嵌入式音频接口全景图解:I2S、TDM、PDM、SPDIF、AC’97 与 PCM 的关系

在嵌入式音频系统中,常见术语如 I2S、TDM、PCM、PDM、SPDIF、AC'97 等常被混用,容易造成理解混乱。本文将从硬件接口、传输协议、数据格式三个层次出发,构建一个清晰的音频系统知识框架,适用于 RK3588、RK3576 等平台的音频开发与调试。


🧩 一、音频系统三层结构

音频系统(SoC)

├── 硬件接口(谁来传):

│ ├── I2S 控制器(如 RK3588)

│ └── SAI 控制器(如 RK3576,支持 128 SLOT)

├── 协议(怎么传):

│ ├── I2S:左右声道(2 通道)

│ ├── TDM:多通道(多个 SLOT)

│ ├── PDM:1bit 高速流(数字麦克风)

│ ├── SPDIF:光纤/同轴传输压缩音频

│ └── AC'97:老式音频总线(主板用)

└── 数据格式(传什么):

├── PCM:线性无压缩,最常见

├── ADPCM:语音压缩格式

├── μ-law / A-law:电话系统压缩格式

├── PDM:密度编码,需解码为 PCM

├── AC3 / DTS:压缩多声道音频

└── DSD:高保真格式,SACD 专用


📦 类比记忆法:音频系统 = 快递系统

类别 音频术语 类比解释
硬件接口 I2S / SAI 控制器 快递公司(谁来送)
协议 I2S / TDM / PDM / SPDIF 快递方式(怎么送)
数据格式 PCM / ADPCM / PDM / AC3 包裹内容(送什么)
SLOT(TDM) 时间片/通道 快递车的货架格子(每格一个通道)

🎼 二、常见协议与数据格式详解

  1. I2S(Inter-IC Sound)
  • 串行音频协议,左右声道各占一个 SLOT。
  • 适合 2 通道音频,如耳机、声卡。
  • 数据格式通常为 PCM。
  1. TDM(Time Division Multiplexing)
  • I2S 的扩展,支持多个 SLOT(如 8/16/32/128)。
  • 每个 SLOT 对应一个通道,适合麦克风阵列、会议系统。
  • 数据格式仍为 PCM。
  1. PDM(Pulse Density Modulation)
  • 数字麦克风输出格式,1bit 高速流。
  • 音量由"1"的密度表示,需解码为 PCM。
  • 通常由 Codec 或 FPGA 解码。
  1. SPDIF(Sony/Philips Digital Interface)
  • 用于光纤/同轴传输音频,支持 PCM 或压缩格式(AC3、DTS)。
  • 常用于音响、电视、HDMI ARC。
  • 仅用于输出方向,不适合采集。
  1. AC'97(Audio Codec '97)
  • Intel 提出的老式音频总线协议。
  • 使用 Frame + Slot 结构,支持多通道。
  • 固定结构,不如 I2S/TDM 灵活。

🔊 三、音频数据格式对比表

格式 位宽 是否压缩 用途说明 是否需解码为 PCM
PCM 16/24/32bit 最常见,耳机、声卡、麦克风
ADPCM 4bit(压缩) 语音压缩,对讲机、蓝牙耳机
μ-law / A-law 8bit 电话系统压缩格式
PDM 1bit 高速流 数字麦克风输出格式
AC3 / DTS 16bit 压缩 家庭影院压缩音频
DSD 1bit 超高采样 SACD 高保真音频 ✅ 或专用播放

✅ 几乎所有格式最终都需解码为 PCM,才能送入 DAC 播放或进行音频处理。


✅ 四、嵌入式开发实战建议

场景 推荐组合 DTS 配置建议
普通耳机/麦克风 I2S + PCM format = i2s, bitclock = 64fs
多通道采集 TDM + PCM slots = 8/16/32, slot-width = 32
数字麦克风阵列 PDM + PDM 需 Codec 解码为 PCM
光纤/HDMI 输出 SPDIF + AC3/DTS 需外部解码器
老式主板音频 AC'97 + ADPCM 固定结构,驱动适配复杂

📌 总结

  • I2S 是最常见的音频传输协议,适合 2 通道场景。
  • TDM 是多通道扩展,适合麦克风阵列、会议系统。
  • PDM 是数字麦克风的输出格式,需解码为 PCM。
  • SPDIF 用于压缩音频输出,AC'97 是老式主板接口。
  • 最终几乎所有音频数据都需解码为 PCM 才能播放或处理。
相关推荐
骇客野人几秒前
JAVA获取一个LIST中的最大值
java·linux·list
Orange_sparkle11 分钟前
Windows/Linux离线部署IndexTTS2
linux·运维·服务器
番茄灭世神20 分钟前
升级新版arm-none-eabi-gcc的方法
linux·运维·arm开发
Ronin30536 分钟前
【Linux网络】数据链路层
linux·网络·数据链路层·arp协议·局域网通信
TroubleBoy丶1 小时前
Docker可用镜像
java·linux·jvm·docker
Xyz996_1 小时前
Keepalived双机热备
linux·运维·服务器
小嘟嘟131 小时前
第1章 Shell 脚本入门:从 “Hello World“ 到自动化执行的完整路径
linux·运维·自动化·shell
I · T · LUCKYBOOM1 小时前
23.ssh远程连接、TCP策略
linux·运维·服务器·网络·tcp/ip·ssh
weixin_660096781 小时前
tree命令的离线下载
linux·运维·tree
千百元1 小时前
实时监控磁盘I/O性能
linux·运维·数据库