1.0 I2S介绍
I2S全称Inter-IC Sound,又称集成电路内置音频总线,简写IIS或I2S。是飞利浦在1986年定义专门用于在芯片与芯片之间传输数字音频的串行总线标准。
Note:除了都是由飞利浦定义外,I2S和I2C没有任何关系。
2.0 I2S总线
协议规定I2S总线一共只有三根线。
1)continuous serial clock (SCK):连续串行时钟
2)word select (WS):左右声道选择
3)serial data (SD):串行数据
协议规定产生SCK和WS的设备称为主设备
I2S是比较简单的数字接口协议,没有地址或设备选择机制。在I2S总线上,只能同时存在一个主设备和发送设备。在I2S系统中,谁提供时钟(SCK和WS),谁就是主设备,主设备可以是发送设备,也可以是接收设备,或是协调发送设备和接收设备的其它控制设备,详细见下图。
2.1Serial Clock (SCK) 串行时钟
SCK是I2S通讯的参考时钟,SD信号、WS信号都以SCK信号作为参考源进行采样。主设备SCK由内部模块产生,从设备的SCK由主设备产生并提供,不同厂商对SCK时钟信号叫法可能不同,比如有称为BCLK/Bit Clock或SCL/Serial Clock。
2.2 Serial Data (SD)串行数据
SD串行数据以二进制补码格式传输。首先传输MSB,因为发送器和接收器可能字长不同。发送器不需要知道接收器可以处理多少位,接收器也不需要知道正在传输多少位。
当系统字长大于发送器字长时,字长会被截断,最低位被设置成0。
如果接收器接收到的位数多于其字长,则LSB之后的位将被忽略。
如果接收器接收到的位数少于其字长,则内部将缺失位则被设置成0。
因此,MSB具有固定位置,而LSB的位置取决于字长。
发送器总是在WS改变后的一个时钟周期发送下一个字的MSB。
发送器发送的SD数据可以与SCK时钟信号的下降沿或上升沿同步。但是,SD数据必须在SCK时钟信号的上升沿锁存到接收器中。
不同厂商对SD叫法不一样,有称作SDATA、SDIN、SDOUT、DACDAT、ADCDAT等
Note:标准协议中SD数据是半双工通信,同一时刻只能单向信号传输。但是实际音频系统会同时存在播放音乐和录音的功能,为了让播放和录音同时进行(比如K歌、通话),芯片内部设计了两条独立的数据通路:
1)SDOUT(Serial Data Output):数据输出引脚。用于本芯片向外部发送数据(播放)。
2)SDIN(Serial Data Input):数据输入引脚。用于本芯片从外部接收数据(录音)。
这两个引脚在芯片内部是独立的,但在总线上,它们是并联到同一根物理SD线上的,只是方向正好相反,在协议层面,这两根线在总线上分时复用,并不违背 I2S 标准。
2.3 Word Select (WS)左右声道选择
WS是左右声道的选择:
1)WS=0 代表通道1,左声道
2)WS=1 代表通道 2,右声道
WS声道选择可以在SCK时钟信号的下降沿或上升沿变化,不必对称。在从设备中,该信号在SCK时钟信号的上升沿锁存。WS线在MSB传输前一个时钟周期改变(见上图)。这样可以让从设备有足够的时间以存储当前接收的数据,并准备好接收下一组数据。
不同厂商对WS叫法不一样,有称作帧时钟即LRCLK/Left Right Clock、WCLK等。
3.0 I2S传输模式
根据SD相对于SCK和WS位置的不同,I2S分为三种传输模式,分别为标准I2S模式、左对齐模式、右对齐模式。
3.1 标准I2S模式
标准I2S模式,就是协议中规定的传输模式,左声道的SD(SDIN&SDOUT)数据MSB在WS(WCLK)下降沿之后第二个SCK(BCLK)上升沿有效,右声道数据的MSB在WS(WCLK)上升沿之后第二个SCK(BCLK)上升沿有效,时序如下图。
3.2 左对齐模式
左对齐模式很少使用,它的SD(SDIN&SDOUT)数据的MSB没有相对于SCK(BCLK)延迟一个时钟。左对齐格式的左声道的数据MSB在WS(WCLK)上升沿之后SCK(BCLK)的第一个上升沿有效;右声道的数据MSB在WS(WCLK)下降沿之后SCK(BCLK)第一个上升沿有效。
左对齐格式的优点在于,由于在WS(WCLK)变化后的第一个SCK(BCLK)上升沿就开始采样,它不需要关心左右声道数据的字长,只要WS的时钟周期足够长,左对齐的方式支持16-32bit字长格式。
3.3 右对齐模式
右对齐格式的左声道的数据LSB在WS(WCLK)下降沿的前一个SCK(BCLK)上升沿有效,右声道的数据LSB在WS(WCLK)上升沿的前一个SCK(BCLK)上升沿有效。相比于标准左对齐格式,标准右对齐的不足在于接收设备必须事先知道待传数据的字长。这也解释了为什么许多CODEC都会提供多种右对齐格式选择功能。
左对齐模式和右对齐模式的WS(WCLK)高低电平对应的左右声道与标准I2S模式的规定恰好相反!
左对齐模式和右对齐模式的WS(WCLK)高电平对应左声道,WS(WCLK)低电平对应右声道;而标准I2S模式的低电平对应左声道,WS(WCLK)高电平对应右声道!
4.0 I2S数据时钟(SCK)频率计算
例如:设声音的采样频率为44.1 KHz,即声道选择信号(帧时钟)WS(LRCLK)的频率必须也为44.1 KHz;左/右2个声道的量化深度均为16 bit,则I2S的SCK(BCLK)的频率为:44.1 KHz×16×2=1.4112 MHz
如果需要传输20 bit、24 bit或32 bit的左右声道的数据,可以提高SCK(BCLK)的频率,由上式可以计算出需要的SCK的频率。
5. I2S 主时钟(Master Clock)
在I2S接口的ADC/DAC系统中,除了SCK(BCLK)和WS(LRCLK)外,CODEC经常还需要控制器提供MCLK (Master Clock),这是由CODEC内部没有提供芯片的工作时钟晶振电路。它需要外部的时钟为内部提供PLL,详细见下图。

|