【底层通信协议】I2S协议的记录与分析


一、简介

I2S(Inter-IC Sound,集成电路内置音频总线)是一种同步串行通信协议,通常用于在两个数字音频设备之间传输音频数据

  • 支持全双工/半双工
  • 支持主/从模式
  • 适用场景:立体声系统,支持多声道

二、基本信号线

① BCLK(或 SCK)

  • 用途:位时钟线,用于数据线的位时钟
  • 频率: $$f_{BCLK}=\text{通道数量} \times \text{采样频率} \times \text{通道长度}$$
    • 其中“通道长度”为每个声道在总线上占用的总位数(有效数据位 + Dont care 填充位),而通道数量通常为 2,即左右声道

② WS(或 LRCK)

  • 用途:字(声道)选择线,用于识别当前传输的是左声道还是右声道的音频数据,也叫帧同步信号
  • 频率

    \[f_{LRCK}=\text{采样频率} \]

③ SD(串行数据)

  • 用途:串行数据输入/输出线
  • 方向
    • TX 方向:SOUT
    • RX 方向:SDIN
  • 位宽:可以根据具体应用而变化,通常为 16 位或 32 位。
  • 注意:如果 DIN 和 DOUT 被配置到相同的 GPIO,数据将在内部回环(loopback)

④ MCLK(可选)

  • 用途:主时钟线,主要用于向 I2S 从机提供参考时钟。是否需要以及具体频率取决于从器件的要求

三、常见参数

  • 时钟极性:确定数据位传输的时钟沿(上升沿或下降沿)
  • 帧同步极性:确定帧同步信号的有效电平,指示音频数据的帧起始和结束位置
  • 传输格式:定义音频数据的编码方式,以及数据的顺序(如左声道先传输还是右声道先传输)

四、主从工作模式

  • 主模式:提供时钟信号 BCLK 和帧同步信号 LRCK
  • 从模式:接收来自主机的 BCLK 和 LRCK
  • 基于主从模式,可以延伸出三种常见工作场景,如下图所示:
博客园图片

五、数据传输模式(三种数据对齐格式)

① 飞利浦标准 I2S 模式

  • 时序图如下:
博客园图片
  • SDIN 采样时机:BCLK 上升沿

  • SDOUT 发送时机:BCLK 下降沿

  • 左右声道指定

    • LRCK 为低电平 → 左声道
    • LRCK 为高电平 → 右声道
  • Data Delay

    • LRCK 跳变沿之后,延迟 1 个 BCLK 才开始发送当前声道的有效数据(MSB)

    注意:这 1 个 BCLK 期间并非空闲,而是在传输上一个声道的最后一位(可能是有效 LSB 或 Dont care 填充位)

  • 数据发送 - 大端模式

    • SDOUT 从 MSB 开始发送,MSB 与 LRCK 边沿相隔 1 个 BCLK
  • Dont care

    • 长度 = 通道长度 − 数据长度
    • 位置:有效数据之后

② 左对齐模式

时序图如下:

博客园图片
  • SDIN 采样时机:BCLK 上升沿
  • SDOUT 发送时机:BCLK 下降沿
  • 左右声道指定
    • LRCK 为高电平 → 左声道
    • LRCK 为低电平 → 右声道
  • 无 Data Delay
    • LRCK 跳变沿之后立即发送有效数据(MSB 与 LRCK 边沿对齐)。
  • 数据发送 - 大端模式:从 MSB 开始发送。
  • Dont care
    • 长度 = 通道长度 − 数据长度
    • 位置:有效数据之后

③ 右对齐模式

时序图如下:

博客园图片
  • SDIN 采样时机:BCLK 上升沿
  • SDOUT 发送时机:BCLK 下降沿
  • 左右声道指定(以芯片数据手册为准,无统一标准):
    • 常见之一:LRCK 低电平 = 左声道,高电平 = 右声道(与飞利浦 I2S 相同)
    • 常见之二:LRCK 高电平 = 左声道,低电平 = 右声道(与左对齐相同)
  • 无 Data Delay
    • LRCK 跳变沿之后立即发送数据(MSB 与 LRCK 边沿对齐)
  • 数据发送 - 大端模式
    • 从 MSB 开始发送
  • Dont care
    • 长度 = 通道长度 − 数据长度
    • 位置:有效数据之前

④ 三种格式对比

特性 飞利浦 I2S 左对齐 右对齐
Data delay 1 BCLK
MSB 对齐位置 LRCK 边沿后 1 BCLK 与 LRCK 边沿对齐 与 LRCK 边沿对齐(数据整体右对齐)
Dont care 位置 有效数据 有效数据 有效数据
LRCK 极性(常见) 低=左,高=右 高=左,低=右 不统一(需查手册)
典型应用 绝大多数音频 Codec 部分 DSP/ADC 部分老旧设备

⑤ 关于通道长度、Data delay 和 Dont care

公式\(\text{数据长度} + \text{Dont care长度} = \text{通道长度}\)

  • 通道长度
    • 非固定,可实时配置
    • 在总线上为传输一个声道的数据所分配的固定时间槽(总位数)
    • 必须大于或等于数据长度
  • Dont care 的存在主要是为了在固定长度的传输帧中填充未使用的位,保持时钟连续和接口规整
  • 1 BCLK 的 Data Delay 是飞利浦 I2S 的固定时序特征,目的是让接收端有更宽松的建立/保持时间,简化采样时序。
    • 不计入通道长度
    • 在连续传输中,Data delay 的那 1 个 BCLK 实际上传输的是上一个声道的最后一位(可能是有效 LSB,也可能是 Dont care 填充位)

六、数据位宽(位深)

  • 用途:指定每个采样数据的位数,决定了量化精度(由主机配置决定)
  • 常见值:16 位、24 位、32 位,较大的位宽可以提供更高的分辨率和动态范围
  • 有效位宽 vs 通道长度
    • 有效位宽(数据长度)由主机软件配置
    • 通道长度同样可配置(通常为 16 或 32 位),且必须 ≥ 有效位宽
    • BCLK 频率由通道长度决定:\(f_{BCLK}=2\times f_s \times \text{通道长度}\)不能直接反推出有效位宽
posted @ 2026-06-15 18:17  临祁  阅读(3)  评论(0)    收藏  举报