新闻  |   论坛  |   博客  |   在线研讨会
一文搞懂I2S通信总线
美男子玩编程 | 2022-12-19 11:19:20    阅读:6571   发布文章

之前我们讲过I2C通信总线,本篇博文将讲一讲I2C的变种:I2S总线。


I2C和I2S都是由Philips公司(2006年迁移到NXP)发布的串行总线,I2S是在I2C之后发布,I2S专为传输音频数据而设计。


I2S(Inter-IC Sound)总线,又称集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。采用了独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真。


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标准相反。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客