zyh_126

c5509和TLV320AIC23的应用

0
阅读(4163)

TMS320VC5509A使用TI的TLV320AIC23立方数字多媒体编解码处理器进得音频信号的输入/输出。AIC23通过麦克风采样模拟音频信号或直接输入模拟音频信号,然后将其转换为DSP可以处理的数字信号。当DSP处理完后,再将数字信号转换为模拟信号输出,用户即可利用耳机或扬声器收听到高质量的音频信号。5509A与AIC23的硬件连接示意图如图7-23所示。

AIC23通过两个独立的通道进得通信,一路控制AIC23的端口配置寄存器kl一路发送和接收数字音频信号。利用5509A的I²C总线被用来作为单向控制通道,控制通道只在AIC23时才使用,当传输音频信号时,它一般是空闲的。I²C总线是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据。McBSP被用来作为双向数据通道,所有的音频数据都通过数据通道传输。

AIC23内部具有一个可编程时钟,由PLL1708PLL驱动提供。系统的默认时钟为18.432MHz。内部的采样频率通常由18.432MHz时钟分频产生,例如48kHz或8kHz。采样频率通过AIC23的SAMPLERATE寄存器设置。

图7-23中MODE接数字地,表示利用I²C控制接口对AIC23进行控制。CS接数字地,表示AIC23作为从器件在I²C总线上的外高地址是0011010。SCLK和SDIN是AIC23控制端口的移位时钟和数据输入端,分别与5509A的I²C模块端口SCL和SDA相连。McBSP的收发时钟CLKR0和CLKX0由AIC23的串行数据传输时钟BCLK提供,并由AIC23的LRCIN和LRCOUT启动串口发动和接收数据异步传输,DX0和DR0分别与AIC23的DIN和DOUT相连,从而完成DSP与AIC23的音频数据通信。

 

 

             图7-23  图7-24是5509A与AIC23传输数据时的时序图。在帧同步信号(LRCIN/LROUT)作用下,串行口先传输左声道数据,然后再传输右声道数据,同时5509A通过McBSP向AIC发送数据,经过D/A转换就可以回放音频信号。5509A采用DMA的方式与McBSP进行数据的传输。

 

 

 

            图7-24    AIC23在I²S模式下的串口时序图

在图7-23的连接中,McBSP的接收和发送工作在同步方式下,接收和发送可以独立配置,利用5509A的I²C模块,可以对AIC23内部的配置寄存器进行编程配置,使AIC23工作在要求的状态下。首先对5509A的I²C模块初始化,图7-25是5509AI²C主从发送控制流程图,将数据逐次写入I2CDKR,并通过I²C总线发送给AIC24,可以完成对AIC23的初始化设置。

由于设置AIC24接收、处理数据的速度为48kHz,程序中发送数据的函数在设备忙的情况下不会返回,而是等待其准备好并接收数据完毕才返回,所以程序中无需使用任何控制数据发送速度的技术。下面给也AIC24初始化的部分源代码。

      VoidAIC23_Init()

      {

          I2C_Init();

              //复位AIC23并打开电源

          AIC23_Write (AIC23_RESET_REG, 0) ;

AIC23_Write (AIC23_POWER_DOWN_CTL, 0) ;

AIC23_Write (AIC23_ANALOG_AUDIO_CTL,ANAPCTL_DAC

ANAPCTL_INSEL) ;   //使用麦克风音源

        图7-25   5509AI²C主从发送控制流程图

          AIC3_Write (AIC23_DIGITAL_AUDIO_CTL, 0) ;

          //打开line in音量控制s

          AIC3_Write (AIC23_LT_LINE_CTL,0x000) ;

          AIC3_Write (AIC23_RT_LINE_CTL,0x000) ;

 

          //AIC23工作于主模式,44.1kHz立方体声,16bit采样

          //输入时钟为12MHz

          AIC3_Write (AIC23_DIGITAL_IF_FORMAT, DIGIF_FMT_MS|

       DIGIF_FMT_IWL_16| DIGIF_FMT_FOR_DSP) ;

          AIC3_Write (AIC23_SAMPLE_RATE_CTL, SRC_SR_8| SRC_BOSR|SRC_MO) ;

 

          //打开耳机音量控制和数字接口

          AIC3_Write (AIC23_LT_HP_CTL, 0x07f) ;  //0x79为麦克风

          AIC3_Write (AIC23_RT_HP_CTL,0x07f) ;

          AIC3_Write (AIC23_DIG_IF_ACTIVATE, DIGIFACT_ACT ;

          //设置McBSP0为从模式

          McBSP0_InitSlave();