Skip to main content

通讯协议-IIS(I²S)

I²S(Inter-IC Sound,也常写作 IIS)是用于数字音频设备之间传输 PCM 音频数据的同步串行接口。它常连接 MCU、DSP、Codec、ADC、DAC 和数字功放,只负责连续音频样本的传输,不负责设备寄存器配置。

I²S 与 I²C

I²S 用于传输音频样本,I²C 常用于配置音频芯片寄存器。两者名称相似,但信号、电气时序和用途完全不同。

信号线

信号常见别名作用
SCKBCLK、Bit Clock每个音频数据位对应的位时钟
WSLRCLK、Word Select标识当前传输的声道
SDSDOUT、SDIN、DATA串行音频数据
MCLKMaster Clock、SYSCLK可选的高频主时钟,供 Codec 等器件内部使用
GND-公共参考地

I²S 可以有独立的发送与接收数据线,也可以只连接单向数据线。谁产生 BCLK、WS 和 MCLK,取决于系统中的时钟主设备配置。

标准 I²S 时序

标准 I²S 中,WS 改变后延迟一个 BCLK 周期,再发送新声道样本的最高有效位(MSB)。数据通常按 MSB first 传输。

WS       左声道                 右声道
_________ _________
______| |____________| |____

BCLK _/-\_/-\_/-\_/-\_/-\_/-\_/-\_/-\_/-\_

DATA x MSB ... LSB MSB ... LSB
↑ WS 改变后延迟 1 bit

具体的 WS 高低电平对应左声道还是右声道,应结合控制器和器件手册核对。

常见数据格式

不同音频串行格式的主要差异在于数据相对 WS 边沿的位置:

格式数据起始位置特点
标准 I²SWS 边沿后延迟 1 bit最常见的 I²S 格式
Left Justified紧随 WS 边沿数据 MSB 与 WS 边沿对齐
Right Justified数据 LSB 与 WS 边沿对齐需要双方明确字长
DSP/PCM 模式WS 常表现为帧同步脉冲适合多时隙或语音接口
TDM一个帧内包含多个声道时隙用较少数据线承载多声道

“支持 I²S”不代表双方默认格式一致。必须核对数据格式、声道极性、有效位数和时隙宽度。

时钟关系

设:

  • 采样率为 Fs
  • 每个声道的时隙宽度为 SlotBits
  • 声道数为 Channels

位时钟通常满足:

BCLK = Fs × SlotBits × Channels

例如,48 kHz 双声道、每声道 32-bit 时隙:

BCLK = 48000 × 32 × 2 = 3.072 MHz

即使有效音频数据只有 16 或 24 bit,硬件仍可能使用 32-bit 时隙。因此计算 BCLK 时应使用时隙宽度,而不是仅使用有效位数。

MCLK 常为采样率的整数倍,例如 256 × Fs512 × Fs,但实际支持的倍率必须以音频器件数据手册为准。

关键参数

参数说明
采样率每秒每声道的样本数量,如 44.1 kHz、48 kHz、96 kHz
有效位深每个样本的有效数据位数,如 16、24、32 bit
时隙宽度每声道在总线上占用的位数
声道数单声道、双声道或 TDM 多声道
数据格式标准 I²S、左对齐、右对齐、DSP/PCM、TDM
时钟角色哪个设备生成 BCLK、WS 和 MCLK
数据极性与采样边沿数据在哪个 BCLK 边沿改变和采样
数据补齐方式有效位不足时如何补零或符号扩展

样本表示与字节序

音频样本通常使用有符号二进制补码。总线按位传输顺序和内存中的字节序是两个不同概念:

  • 总线上通常先发送样本的 MSB。
  • DMA 缓冲区中的字节顺序取决于 CPU、外设和驱动配置。
  • 24-bit 样本可能存入 3 字节,也可能放入 32-bit 容器。
  • 单声道数据可能只位于左时隙、右时隙,或复制到两个时隙。

出现严重失真、幅度异常或噪声时,应优先检查位宽、对齐方式和 DMA 缓冲区解释方式。

时钟主从设计

角色职责
时钟主设备产生 BCLK 和 WS,可能同时产生 MCLK
时钟从设备根据输入时钟发送或接收数据

一个链路中只能有一套有效的 BCLK/WS 时钟源。若两个设备都配置为主设备,会发生时钟冲突;若都配置为从设备,则总线没有时钟。

音频质量还受到时钟抖动和采样率误差影响。对高质量播放或录音,应结合 Codec 时钟树、PLL 和晶振要求进行设计。

常见问题与排查

现象常见原因排查方法
完全无声音无 BCLK/WS、功放静音、数据方向错误先检查时钟,再检查 SD 与器件使能
全是噪声格式、位宽、采样边沿或字节序错误用逻辑分析仪核对格式与样本
播放速度或音调错误采样率或时钟树配置错误测量 WS 频率并计算 BCLK
左右声道交换WS 极性或声道映射不一致核对左右声道定义
音量极小或削波有效位对齐、符号扩展或增益配置错误检查样本位位置与 Codec 增益
周期性爆音DMA 缓冲区欠载/溢出、时钟不同步检查 DMA 中断、缓冲深度和时钟源
24-bit 数据失真24/32-bit 容器和对齐方式不一致核对有效位位于高位还是低位

调试步骤

  1. 确认音频芯片已通过 I²C/SPI 完成寄存器配置,并退出复位或静音。
  2. 测量 WS 频率,确认其等于预期采样率。
  3. 测量 BCLK,并用 BCLK / WS 判断每帧总位数。
  4. 核对标准 I²S、左对齐、右对齐或 DSP/TDM 格式。
  5. 确认有效位深、时隙宽度、声道数和 WS 极性。
  6. 使用固定测试样本,例如静音、递增码或正弦波,观察 DATA。
  7. 检查 DMA 缓冲区的样本排列、字节序、欠载和溢出标志。

适用场景

I²S 适合 PCB 内数字音频器件间的连续 PCM 数据传输。它不提供寻址、确认、重试和长距离传输能力;设备控制通常另用 I²C 或 SPI,板外音频链路则需根据距离和系统要求选择 USB Audio、S/PDIF、网络音频等方案。

相关文档