1. I2S接口概述
I2S全称Inter-IC Sound, Integrated Interchip Sound,或简写IIS,是飞利浦在1986年定义(1996年修订)的数字音频传输标准,用于数字音频数据在系统内部器件之间传输,例如编解码器CODEC、DSP、数字输入/输出接口、ADC、DAC和数字滤波器等。除了都是由飞利浦定义外,I2S和I2C没有任何关系。
I2S硬件接口定义
串行时钟SCLK,也叫位时钟(BCLK),即对应数字音频的每一位数据,SCLK都有1个脉冲,SCLK的频率=2采样频率采样位数。
帧时钟LRCK,用于切换左右声道的数据,1为左声道,0为右声道,LRCK频率等于采样频率。
串行数据SD,就是用二进制补码表示的音频数据。
有时为了使系统能够更好地同步,还需要另外一个信号MCLK,称为主时钟,也叫系统时钟(sys clock),一般是采样频率的256倍或是384倍。切记,MCLK并不是必须的。可有可无,看设计要求。
电气连接
IIS是比较简单的数字接口协议,没有地址或设备选择机制。
在IIS总线上,只能同时存在一个主设备和发送设备。
主设备可以是发送设备,也可以是接收设备,或是协调发送设备和接受设备的其它控制设备。
在IIS系统中,提供时钟的设备为主设
传输速率
传输速率一般为,32k、 44.1k、 48k、 96k,时钟一般为128或192或256或384或512倍速率。
I2S特点
①,支持全双工和半双工通信。
②,支持主/从模式。
I2S初始化配置
①,i2s的时钟使能和GPIO口配置
②,配置为i2s模式
③,i2s标准,包括左对齐,右对齐,i2s标准,即数据的最高位总是出现在WS变化(也就是一帧开始)后的第2个CK脉冲处。
④,i2s数据长度,包括16位,16位扩展(16位数据以32位包发送),24位,32位。
⑤,设置i2s时钟
⑥,设置i2s空闲状态下时钟电平
⑦,i2s使能
⑨,设置I2S的采样率。采样率一般在8K-192K之间。
I2S的读写流程
- ①,WS时钟线用于切换左右声道,在该时钟的同一周期内的高电平和低电平应发送相同的数据,然后左右声道的声音才会一样。
- ②,CK时钟用于启动传输每一位音频数据,单声道音频数据转双声道音频数据
把单声道数据转换成双声道数据传输时,可作如下数据转换:
for(res=0;res<DATA_LEN;res++){
buf2[res*4]=buf1[res*2];
buf2[res*4+1]=buf1[res*2+1];
buf2[res*4+2]=buf1[res*2];
buf2[res*4+3]=buf1[res*2+1];
}