限于篇幅,在此仅说明通过I2C总线配置AIC23的过程。AIC23芯片是一个可编程的芯片,内部有11个16位寄存器决定芯片的工作状态。图2中的MODE引脚决定控制接口的工作模式:MODE=O为I2C模式,MODE=1为SPI模式。系统采用的是I2C模式,即由DSP通过I2C总线完成对AIC23的初始化。I2C总线作为ARM9和DSP的共享设备,其使用权由图1中的寄存器I2C SSW MPU CONF和DSPI2C SSW CONF决定,在默认的情况下由ARM9使用。为了让DSP能使用I2C总线,需对上述两个寄存器做如下修改:MCBSP SSW MPU CONF=Ox00000000,DSP_I2C_SSW_CONF=0x0002。每个连接到I2C总线上的设备,都有1个惟一的地址,AIC23的地址由图2中的CS#引脚决定,即CS=0地址为0011010;CS=1地址为0011011。I2C总线首先发送AIC23的地址,然后再把相应的AIC23内部映射寄存器的地址和配置参数合并为16位的控制字发送给AIC23。
3.2 中断服务程序
在DSP的RAM空间中定义一个接收缓存数组Rxbuffer[]和发送缓存数组Txbuffer[],一个接收标志RxFlag和一个发送标志TxFlag。为了防止出现在执行中断服务程序的时候,接收的新数据将缓存区未取走的数据覆盖,将缓存数组分为上下两部分,CPU在处理其中一个部分的时候,DMA自动操作另一部分,如图4(a)所示。
该语音采集系统以中断的方式工作,在工作的过程中,会产生两个中断:DMA接收中断;DMA发送中断。以DMA接收中断为例来说明中断服务程序。
当产生DMA接收中断时,首先判断RxFlag的值,若为O,则取接收数组Rxbuffer下半部分的数据作进一步的处理,同时置RxFlag为1;若为1,则取接收数组Rxbuffer上半部分的数据作进一步的处理,同时置RxFlag为O,然后退出中断服务程序,进入主程序,等待中断的再次产生,如图4(b)所示。
4 仿真验证
为了验证设计的可行性,对该系统进行了仿真测试。仿真软件为CCS(Code Composer Studio)2.21。系统由硬件仿真器TDS560USB通过JTAG仿真接口与计算机相连,用户可以通过该接口向OMAP5912芯片加载程序并观察芯片内部存储器的数据,完成系统仿真及程序调试的任务。
在ARM和DSP侧分别加载程序编译后生成的.out文件,然后运行。经配置后的AIC23从MIC IN输入语音信号,并对其进行8 kHz,16 b的采样。不考虑图4(a)中的信号处理过程,将采集到的语音直接送回AIC23芯片,经D/A后,由HEADPHONE输出,此时,听到的正是输入的语音信号。由此说明:该设计是确实可行的。
5 结 语
根据TI公司的OMAP5912和CODEC芯片TLV320AIC23的特性,根据TI公司的设计并实现了一种基于OMAP5912的语音采集系统。在该系统中,DMA通道结合McBSP的使用,可以大大减少CPU的工作量,简化软件设计,有效地利用DSP的硬件资源,提高系统的执行效率。实践证明,该系统能够满足实时信号处理的要求,可以作为语音信号处理的算法研究和实时实现的一种通用平台,也可以作为便携式设备或手持终端的一部分进一步加以开发和应用。