iis协议
一、概述
I²S(Inter-IC Sound,集成电路内置音频总线)是飞利浦(Philips)于1986年定义、1996年修订的数字音频总线标准,专为在嵌入式系统内部器件之间传输数字音频数据而设计,是一种芯片之间传输数字音频数据的串行总线协议,常用于 SoC、Codec、DAC、ADC、音频功放、蓝牙模块、DSP 之间传输 PCM 音频数据。
例如:
1 | 麦克风/ADC ---> I2S ---> SoC |
二、信号线
典型 I²S 至少有 3 根线,有时还会有第 4 根主时钟线:
| 信号线 | 别名 | 方向 | 功能说明 |
|---|---|---|---|
| SCK | BCLK / SCLK | 主→从 | 串行时钟/位时钟(Bit Clock),每个时钟周期传输1bit数据 |
| WS | LRCK / WCK | 主→从 | 字选择(Word Select)/左右声道选择时钟,0=左声道,1=右声道 |
| SD | SDATA / SDI/SDO | 双向 | 串行音频数据,以二进制补码形式传输音频数据 |
| MCLK | 主时钟 | 主→从 | (可选)系统时钟,通常为采样频率的256/384/512倍 |
BCLK 是 bit clock,也叫 serial clock。每传输 1 bit 数据,就需要一个 BCLK 周期。
LRCLK 是左右声道选择信号,也叫 word select。它的频率通常等于采样率。例如 48 kHz 音频,LRCLK 就是 48 kHz。一般 LRCLK = 0 表示左声道,LRCLK = 1 表示右声道,但具体也要看控制器和 Codec 配置。
SDATA 是真正传输 PCM 音频数据的线。数据通常是 MSB first,也就是最高位先传。
MCLK 是主时钟,不是所有设备都必须使用。很多 Codec 需要 MCLK 来产生内部采样时钟。常见 MCLK 是采样率的整数倍,比如:
1 | MCLK = 256 * Fs |
其中fs是采样率。
三、常见的工作模式
主要区别在沿途数据相对于LRCLK的位置
1. 标准I²S模式(Philips标准)最常用
数据延迟:WS信号变化后,第2个SCK上升沿MSB有效(MSB 是 Most Significant Bit,意思是 最高有效位,在一个二进制数里,越靠左的位权重越大,最左边那一位就是 MSB。)
特点:数据相对于WS有1个bit的延迟,也就是说标准 I2S 有一个 1 bit delay。
假设是双声道,LRCLK = 0 表示左声道,LRCLK = 1 表示右声道,传输大概是这样:

标准iis一般是:
1 | MSB first |
举个例子:
1 | 采样率 = 48 kHz |
2. 左对齐模式(Left Justified)
- 数据延迟:LRCLK 翻转后,马上开始传 MSB,没有标准 I2S 的 1 bit 延迟。
- 特点:无延迟,数据与WS边沿对齐
3. 右对齐模式(Right Justified / Sony格式)
- 数据延迟:数据LSB在WS边沿前1个BCLK有效
- 特点:数据右对齐,LSB紧贴WS边沿
4.DSP / PCM Mode
这种模式常见于单声道、多声道语音、蓝牙、Modem、TDM 音频接口。
它通常不用传统的左右声道 LRCLK,而是用一个 Frame Sync 信号表示一帧开始
1 | FSYNC: __|‾|________________|‾|________ |
5.TDM Mode
TDM 可以理解成多声道扩展版 I2S/PCM。一个 frame 里不只有左右声道,而是很多 slot:
1 | Frame: |
以上的内容大多在芯片的datasheet 中有介绍。
四、主从
I²S 总线上通常有一个设备负责产生时钟,叫 master;另一个设备接收时钟,叫 slave。
例如:
1 | SoC 作为 master: SoC 输出 BCLK、LRCLK、MCLK Codec 接收这些时钟 |
也可以反过来:
1 | Codec 作为 master: Codec 输出 BCLK、LRCLK SoC 按 Codec 的时钟收发数据 |
在 Linux ASoC 驱动里,这部分经常会对应到:
1 | SND_SOC_DAIFMT_CBS_CFS codec从设备 Codec Bit clock Slave Codec Frame clock Slave |
其中 master/slave 配置非常关键。
六、I²S 只传音频数据,不负责控制
I²S 本身只传 PCM 音频流,不负责配置 Codec 的音量、采样率、输入输出通道、电源管理等。
所以实际系统里通常还会配合一条控制总线:
1 | I2S:传输音频数据 |
一个典型嵌入式音频连接可能是:
1 | SoC I2S <----> Audio Codec |
在很多放大器上的硬件框图上都能看到对应的结构,比如:

其他协议对比
| 协议 | 典型信号 | 传什么 | 常见声道数 | 时序特点 | 常见场景 | 总结 |
|---|---|---|---|---|---|---|
| I2S | BCLK LRCLK/WS SDATA MCLK(可选) | PCM 音频采样 | 2 声道最常见 | 标准 I2S 是 LRCLK 翻转后延迟 1 个 BCLK 才出 MSB | SoC 和 Codec、DAC、ADC 之间 | 最经典的双声道数字音频总线 |
| PCM | BCLK FSYNC DATA | PCM 音频采样 | 1 到 2 声道常见,也可扩展 | 更强调帧同步,常见 DSP_A / DSP_B 模式 | 语音、Modem、蓝牙语音 | 更像“按帧说话”的语音接口 |
| TDM | BCLK FSYNC DATA | 多路 PCM 采样 | 4/8/16 声道常见 | 一帧里有很多 slot,每个 slot 一个通道 | 多麦阵列、车载、多通道 Codec/DSP | I2S/PCM 的多声道扩展版 |
| PDM | CLK DATA | 1bit 高速密度流 | 常见 1 到 2 路 Mic | 不是多 bit PCM,而是要先滤波降采样成 PCM | 数字 MEMS 麦克风 | 麦克风专用,先是“比特流”不是采样值 |
| S/PDIF | 单线数据加地,物理上常见同轴/光纤 | PCM 或压缩音频流 | 2 声道常见 | 自带编码,和板级 I2S 时序风格不同 | 电视、机顶盒、功放、声卡 | 对外连接设备的消费类数字音频接口 |
PCM 更多指音频数据的编码格式,比如 16-bit PCM、24-bit PCM。
I²S 是一种传输 PCM 数据的硬件接口协议。
TDM 可以理解成 I²S/PCM 接口的多通道扩展形式。例如 8 声道音频可以放在一个帧里传输:
1 | Frame: CH0 CH1 CH2 CH3 CH4 CH5 CH6 CH7 |
所以可以简单理解为:
1 | PCM:音频数据本身 |