1、概念理解
通常IIS接口由,MCLK、SCK、LRCK、SDI、SDO组成。
位时钟(BCLK):又名SCK,对应每一位(bit)数据,都有一个脉冲。
BCLK = 2 * 采样频率 * 量化位数。
问:为什么BCLK是采样频率和量化位数乘积的2倍?
答:量化位数是相对于单声道来说的,SCK是同时用于左、右声道数据交替传输的时钟。例如先传输16个bit的左通道数据,再传输16个bit的右通道数据,一直这样按顺序交替传输音频。
采样频率:等于LRCK。一般音频使用16K。还有多种采样频率,看需求。
LRCK:用于切换左右声道的数据。一般,1表示左声道,0表示右声道。
MCLK:主时钟(也名过采样率),一般是采样频率的128、或256、或384或512倍。
量化位数:常见的位数有16bit,24bit,32bit,20bit。
2、计算方式
假设采样频率是16K(LRCK),MCLK是256倍,量化位数是16bit。
MCLK = 16K * 256 = 4096 K = 4M
BCLK = 2 * 16K * 16 = 16 K * 32 = 512K
所以配置时,先弄清楚自己需要的数据位数,其次是采样率,再是过采样率的倍数,通过计算,得出MCLK的大小。再去配置系统分频,才能确保数据的正确接收或者发送。
时钟配置是否正确?示波器量IIS引脚(MCLK,SCK,LRCK)。
假设系统现在时钟大小有限,可以通过减小过采样率的倍数,得到一个比较小的MCLK。
每个系统的分频规则不一样,具体看数据手册。
3、其他概念
单声道merge:假如量化位数是16bit,采集左通道数据时,将16bit的左通道数据按32位word方式存储,那么缓存看到的1个word只有2个byte数据,有2个00byte
双声道merge:例如量化位数是16bit,将左声道16bit、右声道的16bit数据合并存为一个32位word,程序处理时,想要单独获取左声道数据,需要去缓存分离数据
单声道:只有一个声道数据,左声道或者右声道
双声道:双声道数据,通常立体声就是双声道的数据
IIS_RX:接收数据
IIS_TX:发送数据
CODEC_DA:DAC,数字转成模拟输出
CODEC_AD:ADC,模拟转成数字输入
数据交换:左右通道数据交换传输