1、设声音的采样频率为44.1 kHz,即声道选择信号(帧时钟)WS的频率必须也为44.1 kHz;左/右2个声道的量化深度均为16 bit,则I2S的SCK的频率为:44.1 kHz×16×2=1.4112 MHz
如果需要传输20 bit、24 bit或32 bit的左右声道的数据,可以提高SCK的频率,由上式可以计算出需要的SCK的频率。
2、在I2S/PCM接口的ADC/DAC系统中,除了SCK和WS外,CODEC经常还需要控制器提供MCLK (Master Clock),这是由CODEC内部基于Delta-Sigma (ΔΣ)的架构设计要求使然。MCLK时钟频率一般为256*WS,具体参考特定器件手册。总共四根信号线:SCK、WS、DATA、MCLK。
3、CubeMX配置为Half Duplex Master,勾选Master Clock Output。I2S时钟配置为25MHz
4、采样率和sclk,要确定时钟频率mclk/lrck=256fs,如我们常用12.288m/48k=256fs
5、F407平台上,目前实际的测试情况来看,I2S数据最大不超过32768-1(2^15次方-1)时输出波形无失真。理论最大值应为65536-1(2^16次方-1),但此时波形失真。
6、目前使用的I2S格式一般为Philips格式,测试正常。数组大小会直接影响波形采样率以及频率。正弦波、方波、矩形波、锯齿波数据数组可以手动生成。
正弦波数组:
uint16_t DAC_SIGNAL_SIN[32] = {
16384,19580,22653,25486,27969,30006,31520,32453,
32767,32453,31520,30006,27969,25486,22653,19580,
16384,13187,10114,7281,4798,2761,1247,314,
0,314,1247,2761,4798,7281,10114,13187,
};