0%

iis协议了解

iis协议

一、概述

I²S(Inter-IC Sound,集成电路内置音频总线)是飞利浦(Philips)于1986年定义、1996年修订的数字音频总线标准,专为在嵌入式系统内部器件之间传输数字音频数据而设计,是一种芯片之间传输数字音频数据的串行总线协议,常用于 SoC、Codec、DAC、ADC、音频功放、蓝牙模块、DSP 之间传输 PCM 音频数据。

例如:

1
2
3
麦克风/ADC  --->  I2S  --->  SoC

SoC ---> I2S ---> Audio Codec ---> 耳机/喇叭

二、信号线

典型 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
2
3
MCLK = 256 * Fs
MCLK = 384 * Fs
MCLK = 512 * 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
MSB first
LRCLK = 0: 左声道
LRCLK = 1: 右声道
LRCLK 频率 = 采样率
BCLK = 采样率 * 声道数 * slot宽度

采样位宽 sample width:真正的音频数据位数
slot宽度 slot width:总线上给每个声道预留的传输位数。
比如
左声道 slot,32 bit:
[ 16 bit有效音频数据 ][ 16 bit填充位 ]

右声道 slot,32 bit:
[ 16 bit有效音频数据 ][ 16 bit填充位 ]

每个 slot 里面真正有效的音频数据只有 16 bit,剩下的 16 bit 可能补 0,也可能被忽略。

举个例子:

1
2
3
4
5
6
采样率 = 48 kHz
声道数 = 2
slot宽度 = 32 bit

LRCLK = 48 kHz
BCLK = 48k * 2 * 32 = 3.072 MHz

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
2
3
4
5
6
7
FSYNC:  __|‾|________________|‾|________
BCLK : _|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_|‾|_
SDATA: CH0 CH1 CH2 CH3

常见有:
DSP_A:FSYNC 后延迟 1 个 BCLK 开始数据
DSP_B:FSYNC 有效时就开始数据

5.TDM Mode

TDM 可以理解成多声道扩展版 I2S/PCM。一个 frame 里不只有左右声道,而是很多 slot:

1
2
3
4
5
Frame:
Slot0 Slot1 Slot2 Slot3 Slot4 Slot5 Slot6 Slot7

比如 8 声道、每个 slot 32 bit、采样率 48 kHz:
BCLK = 48k * 8 * 32 = 12.288 MHz

以上的内容大多在芯片的datasheet 中有介绍。

四、主从

I²S 总线上通常有一个设备负责产生时钟,叫 master;另一个设备接收时钟,叫 slave

例如:

1
SoC 作为 master: SoC 输出 BCLK、LRCLK、MCLK Codec 接收这些时钟 

也可以反过来:

1
Codec 作为 master: Codec 输出 BCLK、LRCLK SoC 按 Codec 的时钟收发数据 

在 Linux ASoC 驱动里,这部分经常会对应到:

1
2
3
4
SND_SOC_DAIFMT_CBS_CFS	codec从设备 Codec Bit clock Slave Codec Frame clock Slave
SND_SOC_DAIFMT_CBM_CFM codec主设备
SND_SOC_DAIFMT_I2S 标准iis格式
SND_SOC_DAIFMT_LEFT_J 左对齐格式

其中 master/slave 配置非常关键。

六、I²S 只传音频数据,不负责控制

I²S 本身只传 PCM 音频流,不负责配置 Codec 的音量、采样率、输入输出通道、电源管理等。

所以实际系统里通常还会配合一条控制总线:

1
2
3
I2S:传输音频数据 
I2C / SPI:配置 Codec 寄存器
GPIO:控制功放使能、复位、耳机检测等

一个典型嵌入式音频连接可能是:

1
2
3
4
5
6
7
8
9
10
11
SoC I2S  <---->  Audio Codec
SoC I2C <----> Audio Codec registers
GPIO -----> Codec reset / PA enable

┌─────────┐ ┌─────────┐
│ MCLK │───────────────→│ MCLK │
│ SCK │───────────────→│ BCLK │
│ WS │───────────────→│ LRCK │
│ SD │←──────────────→│ DIN/DOUT│
│ I2C │←──────────────→│ SDA/SCL │
└─────────┘ └─────────┘

在很多放大器上的硬件框图上都能看到对应的结构,比如:

image-20260423001459377

其他协议对比

协议 典型信号 传什么 常见声道数 时序特点 常见场景 总结
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
2
3
PCM:音频数据本身
I2S:传输双声道 PCM 的常见接口
TDM:传输多声道 PCM 的扩展方式
-------------本文结束感谢您的阅读-------------