3. I2S协议详解

I2S(Inter-IC Sound)是飞利浦公司为数字音频设备之间的 PCM 数据传输制定的专用串行总线标准。它把音频数据与时钟彻底分离,用独立的位时钟和帧时钟来界定每一位和每一帧,从而避免抖动在数据流中累积。理解 I2S 的关键,不是记住“三根线”,而是理解“谁产生时钟、时钟在哪个边沿采样、数据相对帧边界偏移多少”这三件事。这三件事分别对应主从模式、时钟极性和数据对齐方式,也是硬件设计中最容易出错的地方。

一、I2S 信号线定义

标准 I2S 总线由三根核心信号线构成,部分实现还会增加一根主时钟线:

  • SCK / BCLK(Serial Clock / Bit Clock):位时钟,每个脉冲对应一位数据。频率 = 采样率 × 声道数 × 每声道位数。例如 48 kHz、双声道、32 bit 时,BCLK = 48 000 × 2 × 32 = 3.072 MHz。
  • WS / LRCLK(Word Select / Left-Right Clock):帧时钟或声道选择信号,频率等于采样率。WS 为低电平表示当前传输左声道,高电平表示右声道(标准约定)。
  • SD / SDATA(Serial Data):串行音频数据,通常由发送端在 BCLK 的某个边沿输出,接收端在另一个边沿采样。
  • MCLK(Master Clock):主时钟,通常是采样率的 256 倍或 384 倍,供编解码器内部过采样和数字滤波使用。它不属于 I2S 标准三线,但在实际硬件中几乎必不可少。
记忆要点:BCLK 决定“一位有多快”,WS 决定“一帧有多长”,SD 决定“这一位是什么”。三者必须同源,否则会出现滑码或噪声。

二、主从模式:谁产生时钟

I2S 设备分为主机(Master)和从机(Slave)。主机负责产生 BCLK 和 WS,从机接收这两个时钟并据此收发数据。主从关系决定了时钟的走线方向和抖动来源:

  • MCU/SoC 为主,Codec 为从:最常见。SoC 内部 PLL 产生精确音频时钟,Codec 只需跟随。此时 BCLK、WS 从 SoC 流向 Codec。
  • Codec 为主,SoC 为从:Codec 作为时钟源,SoC 的 I2S 接口配置为从模式。常见于 Codec 需要主导采样率或 SoC 时钟资源紧张的场景。
  • 双主或时钟共享:多设备共用同一组 BCLK/WS,必须明确只有一个主机,否则总线冲突。

主从配置错误是“无声”或“噪声”故障的首要原因。若 SoC 配为主、Codec 也配为主,两条时钟线会互相驱动,轻则波形畸变,重则损坏 IO。调试时应先用示波器确认 BCLK 和 WS 是否由预期的一方产生。

三、时钟极性与数据对齐方式

时钟极性描述数据在 BCLK 的哪个边沿有效。标准 I2S 规定:发送端在 BCLK 下降沿改变数据,接收端在 BCLK 上升沿采样。这样数据在采样边沿前后各保持半个周期,建立时间和保持时间最充裕。

数据对齐方式则描述数据相对 WS 边界的偏移,常见有三种:

对齐方式数据起始位置特点
标准 I2S(Philips)WS 变化后第二个 BCLK 边沿MSB 延迟一位,与 WS 边沿错开
左对齐(Left Justified)WS 变化后第一个 BCLK 边沿MSB 紧贴 WS 边沿,无延迟
右对齐(Right Justified)数据 LSB 对齐到 WS 结束前低位对齐,高位补零,常见于 DSP

三者最直观的区别是 MSB 出现的位置。标准 I2S 的 MSB 比 WS 边沿晚一个 BCLK;左对齐的 MSB 与 WS 边沿几乎同时;右对齐则把数据推到帧尾。若主从双方对齐方式不一致,会出现“数据整体移位一位”的现象,听感上表现为音量减半或严重失真。

四、标准时序与常见变体

下面是一段典型的标准 I2S 时序描述,可用于对照示波器或逻辑分析仪抓取的波形:

WS   : 低(左) ──────────────┐ 高(右) ──────────────┐ 低(左)
BCLK : _|-|_|-|_|-|_|-|_|-|_|-|_|-|_|-|_|-|_|-|_|-|_
SD   :   [MSB][ ][ ][ ][ ][ ][LSB][MSB][ ][ ][ ][LSB]
         ↑ 标准 I2S:MSB 在 WS 变化后的第 2 个 BCLK 上升沿有效

常见变体包括:

  • 左对齐变体:MSB 在 WS 变化后的第 1 个 BCLK 有效,常用于 TI 部分 DSP 与 Codec 互联。
  • 右对齐变体:数据低位对齐帧尾,高位补零,适合固定字长传输。
  • TDM 模式:WS 变为帧同步脉冲,一帧内分多个时隙,可传 4/8/16 通道,是 I2S 的多通道扩展。
  • DSP/PCM 模式:WS 变为短脉冲,数据在脉冲后固定延迟开始,常见于电话语音 Codec。
注意:TDM 与标准 I2S 虽然物理层相似,但帧结构完全不同。把 TDM 设备接到标准 I2S 接口上,通常只能听到某个时隙的通道或完全无声。

五、案例与排障复盘

某产品使用 SoC 主模式、Codec 从模式,采样率 48 kHz、32 bit、双声道。上电后左声道正常,右声道噪声。用逻辑分析仪抓取发现:WS 高电平期间数据只有 16 位有效,后 16 位为随机值。原因是 Codec 被配置为 16 bit 数据宽度,而 SoC 发送 32 bit,双方字长不匹配。将 Codec 改为 32 bit 后恢复正常。

另一个常见案例是“整体音量偏小且失真”。抓波形发现 MSB 比 WS 边沿晚了一个 BCLK,但 Codec 配置为左对齐,导致数据整体右移一位,相当于数值除以 2。把 Codec 改为标准 I2S 对齐后解决。

排障顺序建议:先确认主从模式(谁产生 BCLK/WS),再确认采样率和 BCLK 频率,然后确认时钟极性,最后确认数据对齐和字长。四步中任何一步不匹配,都会表现为无声、噪声或失真。

硬件设计上还需注意:BCLK 和 WS 应尽量等长走线,远离高频开关节点;MCLK 若由 SoC 提供,应确认其频率是采样率的整数倍且抖动足够低;多设备共享总线时,未选中的从机 SD 应置为高阻,避免总线争用。把这些约束落实到原理图和 PCB 阶段,才能让 I2S 链路在量产中稳定工作。

I2S 信号线、主从模式与数据对齐关系 主机 Master SoC / MCU 产生 BCLK / WS 发送 SD 从机 Slave Codec / DAC 接收 BCLK / WS 接收 SD BCLK 位时钟 WS 帧时钟 / LRCLK SD 串行数据 标准 I2S 时序(WS 低=左声道,高=右声道) WS 左声道 右声道 左声道 BCLK SD MSB … … LSB MSB … … LSB WS 边沿 MSB 延迟 1 个 BCLK