I2S Bus=(inter-IC sound bus)
是由Philips Semiconductors定义的。
------------------------------------------------------------------------------------------
The bus has three lines:
总线有三个信号:
-continuous serial clock (SCK),也称为位时钟BCLK
-word select (WS),也称为帧时钟LRCK
-serial data (SD),也称为串行数据,用二进制补码表示的音频数据
其中:LRCK的频率等于采样频率
LRCK = 0; channel 1 (left);
LRCK = 1; channel 2 (right).
对应数字音频的每一位数据,SCLK都有1个脉冲。
SCLK的频率=2×采样频率×采样位数
有时为了使系统间能够更好地同步,
还需要另外传输一个信号MCLK,称为主时钟,
是采样频率的256倍或384倍。
------------------------------------------------------------------------------------------
The transmitter always sends the MSB of the next word one clock period after the WS changes.
It isn’t necessary for the transmitter to know how many bits the receiver can handle,
nor does the receiver need to know how many bits are being transmitted.
If the receiver is sent more bits than its word length, the bits after the LSB are ignored.
On the other hand,
if the receiver is sent fewer bits than its word length, the missing bits are set to zero internally.
I2S格式的信号无论有多少位有效数据,数据的最高位(MSB)总是出现在WS变化(也就是一帧开始)后的第2个SCLK脉冲处。
这就使得接收端与发送端的有效位数可以不同。
如果接收端能处理的有效位数少于发送端,可以放弃数据帧中多余的低位数据;
如果接收端能处理的有效位数多于发送端,可以自行补足剩余的位。
这种同步机制使得数字音频设备的互连更加方便,而且不会造成数据错位。
------------------------------------------------------------------------------------------
不过,对于“MSB总是出现在WS变化后的第2个SCLK脉冲处”这个描述,
一定要注意,
如果Codec死死按照这个标准做的话,就会导致一些不是问题的问题。
例如,某些自主设计的芯片,由于设计人员的疏忽,
导致MSB有出现在WS变化后的第1个SCLK脉冲处,
这样,如果Codec的MSB位置不可调的话,
就会因为数据错位而导致声音异常。
此时抱怨符不符合标准是没有用的,最重要是解决问题。
如果此处设计人员能够稍微多一点兼容,芯片就多一点成功的可能。