目前TI的TLV320AIC23B与TI的DSP的MCBSP接口进行通信比较多的方式是AIC23作为主器件,DSP作为从器件,使用DSP模式进行通信,这样在大部分应用场景还是很方便的,不过在某些场景是不合适的,特别是AIC23在使用12M时钟的时候不能产生精确的8K的采样率,如果进行数据流传输,对方是精确的8K采样率,这样会随着时间的推移,会产生时钟不同步,会莫名其妙的多一些数据或者少一些数据,所以本文讨论的是将AIC23作为从器件,TMS320VC5509A作为主器件,使用I2S方式进行音频传输。首先看一下硬件电路连接关系,如下图所示:
这里先解释一下AIC23这边的引脚定义:
CLKOUT:时钟输出引脚,这个引脚是可以输出AIC23的系统时钟的1分频或者是2分频,我这里用的是1分频,即等于输入时钟,注意,为了让AIC23产生精确的8K采样率,必须使用普通模式,不能使用USB模式,时钟必须使用12.288M、18.432M这两种频率,其他频率不能产生精确的8K采样率;
BCLK:I2S位时钟;
DIN:数据输入;
DOUNT:数据输出;
LRCIN:I2S输入字时钟信号,就是切换输入左右声道的信号;
LRCOUT:I2S输出字时钟信号,就是切换输出左右声道的信号
再说一下DSP5509A这边的引脚定义:
CLKR:MCBSP接收数据的位时钟;
CLKX:MCBSP发送数据的位时钟;
DX:MCBSP发送数据接口;
DR:MCBSP接收数据接口;
FSX:MCBSP发送数据同步信号;
FSR:MCBSP接收数据同步信号;
TLV320AIC23B这个音频codec在I2S系统中可以作为主器件,也可以作为从器件;TMS320VC5509A这个DSP的MCBSP可以配置成为I2S模式,也可以作为主器件,也可以作为从器件,我这里是用DSP5509A作为主器件,为整个I2S系统提供时钟,AIC23作为从器件。下面先解释一下上图的硬件连接的关系:
AIC23的CLKOUT是这个芯片的时钟输出引脚,可以输出AIC23的系统时钟的1分频或者是2分频,为了简化电路,DSP5509A的MCBSP时钟由AIC23的这个引脚提供,AIC23的系统时钟我使用的是12.288M的频率,CLKOUT输出配置的是1分频,即这个引脚上输出的频率也是12.288M。
DSP5509A的MCBSP接口的时钟可以由CLKR、CLKX、MCBSP的内部输入时钟(5509A这个芯片既是系统时钟)提供,在MCBSP作为I2S系统的主器件时,必须使用CLKR或者是内部时钟,不能使用CLKX引脚上输入的时钟。这里MCBSP的时钟是CLKR引脚上输入的12.288M时钟。
MCBSP通过配置,CLKX可以输出I2S系统传输的位时钟信号,这个信号提供给AIC23的BCLK引脚,驱动AIC23进行I2S传输数据。
DSP5509A的DX与DR和AIC23的DIN与DOUT正好相对应连接;
DSP5509A的FSX提供I2S的输出字时钟信号给AIC223的LRCIN;
DSP5509A的FSR提供I2S的输入字时钟信号给AIC23的LRCOUT;
总而言之,DSP5509A作为I2S主器件,AIC23作为I2S从器件,所有的时钟都是DSP5509A提供。
好了,今天就先说这么多,明天继续。