I2S 协议简介

翻开一个 DAC 芯片的数据手册,它们使用的数据协议基本上要么是 I²C,要么是 SPI,再有的便是 I²S 协议,而相对于其它两种协议,I²S 协议则是专注于数字音频的传输,因而在 DACADC音频放大器 等中常常可见其身影,所以本文的主题便是 I²S 协议。

由于 I²S 的变体很多,故本文将从几个典型制式出发,进行分析。

I²S 简介

Wikipedia(中文)中这样介绍:

I²SI2SInter-IC SoundIntegrated Interchip Sound)是 IC 间传输数字音频资料的一种接口标准,采用序列的方式传输2组(左右声道)资料。I²S 常被使用在发送 CD 的 PCM 音频资料到CD播放器的 DAC 中。由于 I²S 将资料信号和时脉信号分开发送,它的抖动(jitter)有损十分地小。

I²S 协议

传输线

通常而言,传输线有3根,分别是

  • BCLK (Bit Clock),也有叫 BICK (Bit Clock) 的

  • LRCLK (Left-Right Clock),也有叫 WS (Word Select) 和 FS (Frame Sync) 的

  • SDATA (Serial Data),也有叫 SD (Serial Data),SDIN (Serial Data Input)(对于输入设备),SDOUT (Serial Data Output)(对于输出设备)的

时序

标准版

标准版 I²S 时序图,来自 SABRE9018Q2C 的 Datasheet (v1.5)

图上展示了3种 音频位深度I²S 协议下的传输方式

LRCLK 为低电平时,表示传输的是数据属于左声道,而当电平为高电平时,表示传输的是数据属于右声道

BCLK 为上升沿时,SDATA(图中为SIN)被记录一次

其中,SDATAMSBLSB 由高比特位向低比特位逐位传输

例如,当 音频位深度 为 32bit 时,先从第31(最高)位传输,直到传输到第0(最低)位

或许你也注意到了,SDATA 有一个比特的延迟,即 SDATABCLK 要慢一个比特,至于为什么,博主并没有找到一个合适的答案,如果你找到了,可以在下方留言。

图中所示的,便是一个采样点(一帧)数据的传输过程,所以,由此可见,如果一个音频采样率为 48kHz,深度为 32bit,声道数为 2,那么,传输速率即为

$$ 48\mathrm{kHz} \times 32\mathrm{Bit} \times 2 = 3072\mathrm{kBit/s} = 3.072\mathrm{MBit/s} $$

同理,采样率为 96kHz,深度为 24bit,声道数为 2,那么,传输速率即为 $ 4.608\mathrm{MBit/s} $

左对齐版

左对齐版 I²S 时序图,来自 SABRE9018Q2C 的 Datasheet (v1.5)

变化并不大,而其中改变的,便是 SDATA 的一个比特的延迟没了,即最高位与 LRCLK 对齐,还有就是 LRCLK 中左右声道对应的低高电平变为了高低电平

其它变体

比如 AK4490 这款 DAC,其中就有3种不同的 I²S 协议可供选择,详细参见其  Datasheet  的 P34~35

(或许以后博主会再总结几种,但显然不是这次~)

总结

鉴于不同型号的芯片对于 I²S 协议都或多或少可能有些许变化,所以说:

一切请以 Datasheet 为准!

一切请以 Datasheet 为准!!

一切请以 Datasheet 为准!!!

:)

AUTHOR  :  Richard Chen
ARTICLE LICENSE  :  CC BY-SA 4.0
CODE LICENSE  :  MIT

Next: Hello From MWeb

Prev: EXIF 信息带来的隐私问题:一图千金