TLC320AIC23在音频处理中的应用
Register9
.word 0x12;控制地址:0001001
.word 0x01;控制数据:激活数字接口
Register10
.word 0x1e;控制地址:0001111
.word 0x00;控制数据:复位TLV320AIC23
2.3 数字音频接口
TLV320AIC23芯片与数字系统的接口有右判断模式、左判断模式、I2S模式和DSP模式四种。这四种数据传送模式都是从MSB(最高位)开始,字长范围从16Bits到32Bits(除了在右判断模式下不支持32Bits外)。数字音频接口由时钟信号BCLK、数据信号DIN和DOUT、同步信号LRCIN和LRCOUT组成。应当说明:BCLK在主动方式下是输出,而在从动方式下是输入。
由于接下来的介绍将主要围绕该芯片与DSP相结合的应用,因此现对第四种模式,即DSP模式进行说明。
由于DSP模式与TI公司 DSP的MCBSP口相兼容,因此,LRCIN与LRCOUT必须与MCBSP的帧同步信号相连接。在LRCIN或LRCOUT的下降沿开始数据传输。左通道数据组成了首先传送的数据字,紧接着传送右通道的数据。传送字长由IWL寄存器决定。图1说明了LRP为1时的传送情况(可通过Register7来进行设置)。
3 TLV320AIC23与DSP的接口设计
3.1 硬件设计javascript:window.open(this.src);" style="cursor:pointer;"/>
TLV320AIC23是TI公司推出的一款高性能、集成有模拟功能的立体声编解码音频芯片。它能在数字和模拟电压下工作,与TMS320C55x DSP的I/O电压相兼容,因而能够实现与C55x DSP的MCBSP(多通道缓冲串口)端口的无缝连接,从而使系统设计更加简单。所以,为了初步验证TLV320AIC23的工作性能,这里选用TMS320VC5509作为与TLV320AIC23相搭配的DSP芯片。其接口原理框图如图2所示。
系统中TLV320AIC23的主时钟11.2896MHz直接由DSP时钟产生,MODE接数字地表示利用I2C控制接口来对TLV320AIC23数据进行传输控制。SCLK和SDIN是TLV320AIC23控制端口的移位时钟和数据输入端,它们分别与TMS320VC5509的I2C模块端口SCL和SDA相连。TMS320VC5509的MCBSP1应工作在SPI模式下,以便使MCBSP1的接收器和发送器同步。收发时钟信号CLKX1和CLKR1由TLV320AIC23的串行数据传输时钟BCLK提供,并由TLV320AIC23的帧同步信号LRCIN、LRCOUT启动串口数据传输,DX1和DR1分别与TLV320AIC23的DIN和DOUT相连,可用于完成DSP与TLV320AIC23之间的数字通信。
3.2 通过I2C对TLV320AIC23进行编程控制
I2C模块接口由串行数据SDA和串行时钟SCL组成,SDA和SCL均为双向接口。连接在同一总线上的I2C设备可以工作在多主线(MultiMaster)工作模式下。包括TMS320C55x DSP在内的每个I2C设备都有唯一的设备地址可供软件寻址。其中,主设备用于发送时钟并启动数据传输,被主设备寻址的则为从设备。这些设备根据各自的功能,既可以作为发送器,也可以作为接收器。
设计时,可根据具体需要,使用如下代码来对TLV320AIC23进行寄存器写操作:
T0=0x1a; T0=从写地址,根据电路设计应为0011010b(见表2)
call Init I2C
T1=#0x02
XAR0=#0h
AR0=Register ; AR0=所要写入的寄存器的
地址和对应于该地址的值
call write I2C
NOP
return
这里应注意以下三点:
(1) 在写过一次I2C地址后,只能对一个寄存器进行写操作,而不能一次性对所有寄存器进行写操作。也就是说,对每个寄存器写之前都要按部就班的写一遍I2C地址。
(2) I2C模式下,数据是分为三个8Bit写入的。而TLV320AIC23有7位地址和9位数据,也就是说,需要把数据项上面的最高位补充到第二个8Bit中的最后一位。
(3) 在对控制寄存器的编程过程中,对应于每一次工作状态的改变,不能仅仅修改某个寄存器的值,而是要对这十个寄存器都重新写入一遍,否则系统将无法正常工作,而且应首先写Register10,同时还应对所有寄存器进行复位处理。
3.3 DSP的多通道缓冲串口(MCBSP)设置
由于TLV320AIC23采样输出的是串行数据,因此需要协调好与之相配的DSP的串行传输协议。所以必须对DSP的串口进行正确设置。
MCBSP串口一般通过六个引脚使数据通路和控制通路与外部设备相连。数据经MCBSP串口与外设的通信一般通过DR和DX引脚传输,控制同步信号则由CLKX、CLKR、FSX、FSR等四个引脚实现。
由于MCBSP串口的数据线DR和DX带有缓存寄存器,而