一文搞懂 I2S 通信总线
之前我们讲过I2C通信总线,本篇博文将讲一讲 I2C 的变种:I2S 总线。
I2C 和 I2S 都是由 Philips 公司(2006 年迁移到 NXP)发布的串行总线,I2S 是在 I2C 之后发布,I2S 专为传输音频数据而设计。
I2S(Inter-IC Sound)总线,又称集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。采用了独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真。
I2S 总线特点如下:
支持全双工和半双工模式;
支持主、从模式。
I2S 协议文档下载:NXP-I2S总线规范协议
1、物理特性
I2S 总线一般由 1 根系统时钟线和 3 根信号线组成:
MCLK:称为主时钟,也叫系统时钟(Sys Clock),一般为了使系统间能够更好地同步时增加 MCLK 信号,MCLK 的频率 = 128 或者 256 或者 512 * 采样频率;
SCLK(BCLK):串行时钟 SCLK,也叫位时钟(BCLK),即对应数字音频的每一位数据,SCLK 都有 1 个脉冲。SCK 的频率 = 声道数 * 采样频率 * 采样位数;
LRCK:帧时钟 LRCK,(也称 WS),用于切换左右声道的数据。LRCK 为“1”表示正在传输的是右声道的数据,为“0”则表示正在传输的是左声道的数据。LRCK 的频率等于采样频率;
SDATA(SD):就是用二进制补码表示的音频数据。最高位拥有固定的位置,而最低位的位置则是依赖于数据的有效位数。
2、常见的 I2S 数据格式
随着技术的发展,在统一的 I2S 硬件接口下,出现了多种不同的 I2S 数据格式,可分为:I2S Philips 标准、左对齐(MSB)标准和右对齐(LSB,也叫日本格式、普通格式)标准。
发送端和接收端必须使用相同的数据格式,确保发送和接收的数据一致。
2.1、I2S Philips 标准
I2S Philips 标准时序图如下图所示:
使用 LRCLK 信号表示当前正在发送数据所属的声道,LRCLK 为“1”表示正在传输的是右声道的数据,为“0”则表示正在传输的是左声道的数据。LRCLK 信号从当前声道数据的第一个位(MSB)之前的一个时钟开始有效。
LRCLK 信号在 BCLK 的下降沿变化,发送方在时钟信号 BCLK 的下降沿改变数据,接收方在时钟信号 BCLK 的上升沿读取数据。正如上文所说,LRCLK 频率等于采样频率 Fs,一个 LRCLK 周期(1/Fs)包括发送左声道和右声道数据。
对于这种标准 I2S 格式的信号,无论有多少位有效数据,数据的最高位总是出现在 LRCLK 变化(也就是一帧开始)后的第 2 个 BCLK 脉冲处。这就使得接收端与发送端的有效位数可以不同。如果接收端能处理的有效位数少于发送端,可以放弃数据帧中多余的低位数据;如果接收端能处理的有效位数多于发送端,可以自行补足剩余的位。
这种同步机制使得数字音频设备的互连更加方便,而且不会造成数据错位。
2.2、左对齐(MSB)标准
左对齐(MSB)标准时序图如下图所示:
该标准较少使用,在 LRCLK 发生翻转的同时开始传输数据,注意 LRCLK 为 1 时,传输的是左声道数据,LRCLK 为 0 时,传输的是右声道数据,这刚好与 I2S Philips 标准相反。
2.3、右对齐(LSB)标准
右对齐(LSB)标准时序图如下图所示:
声音数据 LSB 传输完成的同时,LRCLK 完成第二次翻转(刚好是 LSB 和 LRCLK 是右对齐的,所以称为右对齐标准)。注意 LRCLK 为 1 时,传输的是左声道数据,LRCLK 为 0 时,传输的是右声道数据,这刚好与 I2S Philips 标准相反。
拓展学习:
4、 一文看懂Modbus协议
版权声明: 本文为 InfoQ 作者【不脱发的程序猿】的原创文章。
原文链接:【http://xie.infoq.cn/article/688d0deb89bbb1e23dcdc760f】。文章转载请联系作者。
评论