1. I2S 协议基础:总线定义与时序关系

I2S(Inter-IC Sound,集成电路内置音频总线)是飞利浦公司在 1986 年制定的串行数字音频总线标准,专门用于数字音频设备之间的 PCM 音频数据传输。在嵌入式音频系统中,I2S 是连接 SoC、DSP、CODEC、蓝牙音频 SoC 等核心器件的标准接口。理解 I2S 的总线定义、信号线功能以及位时钟与帧时钟的时序关系,是调试音频驱动、解决时钟同步问题的第一步。

1.1 I2S 总线信号定义

标准 I2S 总线由三条主要信号线组成,所有数据和控制信号均以位时钟为基准同步传输。

信号线 全称 方向(典型) 功能描述
SCK / BCLK Serial Clock / Bit Clock 主机 → 从机 位时钟,每个脉冲对应一个数据位的传输。频率 = 采样率 × 声道数 × 位深。
WS / LRCLK Word Select / Left-Right Clock 主机 → 从机 帧时钟(声道选择),高电平表示左声道数据,低电平表示右声道数据(I2S 标准)。频率 = 采样率。
SD / DATA Serial Data 双向(分时复用) 串行数据线,MSB 对齐,高位在前。发送端在 BCLK 下降沿更新数据,接收端在 BCLK 上升沿采样。
关键概念: 在 I2S 标准中,LRCLK 的跳变沿发生在数据位的 MSB 之前一个 BCLK 周期,这被称为“左对齐偏移 1 位”。这是 I2S 区别于左对齐(Left-Justified)协议的核心特征。

1.2 数据线、位时钟与帧时钟的时序关系

I2S 的时序以 BCLK 为最小时间单位,LRCLK 定义声道边界,SD 线在 BCLK 的驱动下逐位传输。下图展示了标准 I2S 模式下 16 位立体声数据的时序关系。

I2S 标准时序图:BCLK、LRCLK、SD 关系 I2S 标准时序图(16位立体声,MSB对齐) BCLK T ... 32 个 BCLK 周期 ... LRCLK 左声道 (HIGH) 右声道 (LOW) SD MSB LSB MSB LSB 时序要点: ① LRCLK 在左声道 MSB 之前 1 个 BCLK 周期跳变(偏移 1 位),这是 I2S 标准与左对齐协议的关键区别。 ② 发送端在 BCLK 下降沿更新数据,接收端在 BCLK 上升沿采样,保证建立/保持时间。

1.3 位时钟频率计算

BCLK 频率由音频采样率、声道数和位深共同决定,是驱动配置中最容易出错的参数之一。计算公式如下:

BCLK_Hz = SampleRate × NumberOfChannels × BitsPerSample

常见音频格式的 BCLK 频率对照表:

采样率 (Hz) 声道数 位深 (bits) BCLK 频率 (MHz) 典型应用
44100 2 (立体声) 16 1.4112 CD 音质播放
48000 2 16 1.536 标准音频设备
48000 2 24 2.304 高保真录音/播放
96000 2 24 4.608 高采样率音频
192000 2 32 12.288 专业音频设备
调试陷阱: 许多 SoC 的 I2S 外设要求 BCLK 频率必须能被系统 PLL 精确分频得到。如果配置的 BCLK 频率与 PLL 输出无法整除,会导致 LRCLK 产生周期性抖动(jitter),表现为音频爆音或声道串扰。调试时务必使用示波器测量 BCLK 和 LRCLK 的相位关系。

1.4 I2S 数据格式与 MSB 对齐

I2S 标准规定数据以 MSB(最高有效位)对齐方式传输,且发送端在 LRCLK 跳变后的第 2 个 BCLK 上升沿开始发送 MSB。这种设计使得接收端可以容忍发送端和接收端之间的位深差异。

  • MSB 对齐: 无论数据位宽是多少(16/24/32 位),MSB 始终固定在 LRCLK 跳变后的固定位置。
  • 左对齐偏移 1 位: 发送端在 LRCLK 跳变后等待 1 个 BCLK 周期才开始发送 MSB,接收端在 LRCLK 跳变后的第 2 个 BCLK 上升沿锁存 MSB。
  • 数据有效性: 发送端在 BCLK 下降沿更新 SD 线数据,接收端在 BCLK 上升沿采样,保证数据在时钟边沿之间稳定。

1.5 I2S 系统连接架构

在嵌入式系统中,I2S 总线通常连接一个主机(Master)和一个或多个从机(Slave)。主机负责产生 BCLK 和 LRCLK,从机同步接收或发送数据。下图展示了一个典型的 I2S 音频系统连接架构。

I2S 系统连接架构图 I2S 音频系统连接架构(主机模式) SoC / MCU I2S 主机 (Master) 产生 BCLK + LRCLK 音频 CODEC I2S 从机 (Slave) 同步接收/发送数据 BCLK LRCLK SD (双向) 系统时钟同步要点: ① 主机必须提供稳定的 BCLK 和 LRCLK,从机不能主动改变时钟频率。 ② 如果系统中存在多个 I2S 从机(如 CODEC + 蓝牙音频 SoC),所有从机必须共享同一组 BCLK/LRCLK。

1.6 常见 I2S 变体与兼容性

在实际项目中,除了标准 I2S 外,还会遇到左对齐(Left-Justified)、右对齐(Right-Justified)、TDM(时分复用)等变体。下表总结了它们的核心差异:

协议变体 MSB 位置 LRCLK 与数据关系 典型应用
标准 I2S LRCLK 跳变后第 2 个 BCLK LRCLK 高=左声道,低=右声道 飞利浦标准,最广泛
左对齐 (LJ) LRCLK 跳变后第 1 个 BCLK 与 I2S 相同 部分 DSP、老式 CODEC
右对齐 (RJ) 数据右对齐,LSB 在 LRCLK 跳变前 与 I2S 相同 部分日本厂商 CODEC
TDM (DSP 模式) 帧同步脉冲后连续传输 单 LRCLK 脉冲标记帧起始 多通道音频、阵列麦克风
驱动开发提示: 在初始化 I2S 外设时,务必确认 CODEC 数据手册中要求的协议模式(I2S / LJ / RJ / TDM)。配置错误会导致数据移位、声道反转或完全无声。调试时可以通过发送已知的 16 位正弦波数据,用逻辑分析仪抓取 SD 线数据,与预期波形对比来验证协议配置是否正确。

1.7 本章小结

  • I2S 总线由 BCLK(位时钟)、LRCLK(帧时钟/声道选择)和 SD(串行数据)三条信号线组成。
  • BCLK 频率 = 采样率 × 声道数 × 位深,是驱动配置的核心参数。
  • 标准 I2S 采用 MSB 对齐 且 左偏移 1 位 的时序,这是区别于其他协议变体的关键特征。
  • 主机负责产生时钟,从机同步工作;时钟抖动是音频爆音的主要来源之一。
  • 实际项目中需根据 CODEC 数据手册选择正确的协议变体(I2S / LJ / RJ / TDM)。