最近一段时间研究了一下DSP5509A的MCBSP(多缓冲串口)接口和Nuc972的IIS接口进行音频数据传输的问题,今天终于有了点儿心得,和大家分享一下。
总体思路是基于嵌入式linux音频框架ASOC,将DSP5509A模拟成一个codec挂在linux上,通过DSP5509A上的MCBSP与Nuc972上的IIS接口进行音频数据交互,DSP5509A作为从设备,Nuc972作为主设备。要完成它们之间的通信,需要做以下两项工作:1.DSP5509A与Nuc972的硬件连接;2.DSP端MCBSP接口的配置;3.Nuc972端DSP5509A模拟成codec的底层驱动。今天主要说第一项工作。
DSP5509A的MCBSP是个什么东西呢?简单的说就是TI的DSP上专用的高速串行数据接口,通过适当的配置,可以兼容IIS音频接口,具体的可以去TI的官网进行了解,在这里就不啰嗦了。具体的硬件连接如下图所示:
DSP5509A MCBSP接口 Nuc972 IIS接口
CLKR ------------------------------------------------------- SCLK (位时钟)
CLKX ------------------------------------------------------- SCLK
FSR -------------------------------------------------------- LRCK (声道选择时钟)
FSX -------------------------------------------------------- LRCK
DR --------------------------------------------------------- DX (数据输出)
DX ---------------------------------------------------------- DR (数据输入)
因为在本例子中,DSP5509A作为从设备,Nuc972作为主设备,所以DSP5509A所有的时钟都是从Nuc972获得,其中MCBSP的CLKR(接收数据时钟)、CLKX(发送数据时钟)都由IIS接口的SCLK(位时钟)提供,FSR(接收同步时钟)、FSX(发送同步时钟)都由IIS接口的LRCK(左右声道选择时钟)提供,数据接口DR与DX交叉连接。这样就完成了MCBSP接口与IIS接口的硬件连接。