I2S音频接口的理解

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,模拟转成数字输入

数据交换:左右通道数据交换传输

你可能感兴趣的:(工作笔记)