zong_blogs

 

TLV320AIC23简介

TLV320AIC23(以下简称AIC23)是TI推出的一款高性能的立体声音频Codec芯片,内置耳机输出放大器,支持MICLINE IN两种输入方式(二选一),且对输入和输出都具有可编程增益调节。AIC23的模数转换(ADCs)和数模转换(DACs)部件高度集成在芯片内部,采用了先进的Sigmadelta过采样技术,可以在8K96K的频率范围内提供16bit20bit24bit32bit的采样,ADC DAC的输出信噪比分别可以达到90dB100dB。与此同时,AIC23还具有很低的能耗,回放模式下功率仅为23mW,省电模式下更是小于 15uW。由于具有上述优点,使得AIC23是一款非常理想的音频模拟I/O器件,可以很好的应用在随声听(如CDMP3……)、录音机等数字音频领域。

AIC23的管脚和内部结构框图如下: 

从上图可以看出,AIC23主要的外围接口分为以下几个部分:

一. 数字音频接口:主要管脚为 
BCLK
-数字音频接口时钟信号(bit时钟),当AIC23为从模式时(通常情况),该时钟由DSP产生;AIC23为主模式时,该时钟由AIC23产生; 
LRCIN
-数字音频接口DAC方向的帧信号(I2S模式下word时钟) 
LRCOUT
-数字音频接口ADC方向的帧信号 
DIN
-数字音频接口DAC方向的数据输入 
DOUT
-数字音频接口ADC方向的数据输出 
这部分可以和DSPMcBSPMulti-channel buffered serial port,多通道缓存串口)无缝连接,唯一要注意的地方是McBSP的接收时钟和AIC23BCLK都由McBSP的发送时钟提供,连接示意图如下: 

二. 麦克风输入接口:主要管脚为 
MICBIAS
-提供麦克风偏压,通常是3/4 AVDD 
MICIN
-麦克风输入,由AIC结构框图可以看出放大器默认是5倍增益 
连接示意图如下: 

三. LINE IN输入接口:主要管脚为 
LLINEIN
-左声道LINE IN输入 
RLINEIN
-右声道LINE IN输入 
连接示意图如下: 

四. 耳机输出接口:主要管脚为 
LHPOUT
-左声道耳机放大输出 
RHPOUT
-右声道耳机放大输出 
LOUT
-左声道输出 
ROUT
-右声道输出 
从框图可以看出,LOUTROUT没有经过内部放大器,所以设计中常用LHPOUTRHPOUT,连接示意图如下: 

五. 配置接口:主要管脚为 
SDIN
-配置数据输入 
SCLK
-配置时钟 
DSP
通过该部分配置AIC23的内部寄存器,每个word的前7bit为寄存器地址,后9bit为寄存器内容。具体方法和寄存器具体内容见后。

六. 其他:主要管脚为 
MCLK
-芯片时钟输入(12.288M11.2896M18.432M16.9344M) 
VMID
-半压输入,通常由一个10U和一个0.1U电容并联接地 
MODE
-芯片工作模式选择,Master或者Slave 
CS
-片选信号(配置时有效) 
CLKOUT
-时钟输出,可以为MCLK或者MCLK/2(详见寄存器配置)

DSPAIC23的连接

设计中DSP采用了TIC5409,这是一款性价比高,外设资源丰富,耗电量低,处理能力强的16DSP,在实际应用中较为流行。

C5409有三组可通过寄存器灵活配置的McBSP同步串口,与AIC23的连接主要使用这些串口。

一. AIC23数字音频接口的连接 
AIC23
的数字音频接口支持I2S模式(一种通用的音频格式),也支持DSP Mode模式(专为与TIDSP连接模式)。两种模式的时序如下图:

  
I2S
模式


DSP Mode
模式

DSPAIC23的连接可以采用I2S模式也可以采用DSP模式,区别仅在于DSPMcBSP帧信号的宽度。前者的帧信号宽度必须为一个字(16bit)长,而后者的帧宽度可以为一个bit长,比如在字长16bit(即左右声道的采样各为16bit),帧长为32bit的情况下,如果采用I2S,帧信号宽度应为16bit;而采用DSP Mode帧信号宽度1bit即可。

为了与AIC23通信,DSP的串口时钟也应该正确的设置。DSPMcBSP时钟为了减少外围电路通常都选择由内部CPU时钟分频得到,比如在AIC23采样速率为8K的情况下,McBSP串口时钟应为8×32256K,这时,DSP工作时钟/256K=需要设置的分频因子。

需要注意的是,DSP的串口分频因子最大为0xff256),所以如果采用内部时钟分频的办法,DSP工作时钟不能超过64M

二.与AIC23配置接口的连接 
AIC23
的配置接口支持I2C模式,也支持SPI模式。通常比较简单的办法是利用DSP的一个McBSPSPI模式跟AIC23连接。但是有些时候,如果DSPMcBSP串口资源比较紧张(比如需要跟近端RS232和远端RS485连接),也可以通过DSP模拟I2C总线与AIC23连接。下面简单介绍这两种方法:

SPI时序图如下: 

这种模式的特点是只在片选信号有效时锁存进数据。由于也是同步串口,所以通过配置McBSPClock Stop Mode(时钟在帧信号有效时产生,其他时间没有时钟信号)可以无缝与之连接。这时,McBSP的帧信号连接SPICS信号,时钟和数据信号与SPI一一对应。这种连接只需设置McBSP的寄存器,使用比较简单可靠。

I2C时序图如下: 

C5409没有I2C接口(TIC5509有),但是可以利用DSPGPIOGeneral Purpose Input/Output)来实现I2C时序。C54098HPIHost Port Interface)管脚可以选择作为GPIO使用(上电时HPIENA管脚或者HPI16管脚为低),这样我们可以利用其中的两个管脚来作为I2C中的 SCLSDA。在I2CSDA是双向管脚,而DSPGPIO的方向要通过寄存器来配置为输入或者输出,所以在实现I2C总线时,要经常在需要的时候变换GPIO(作为SDA的那个)的方向。对GPIO的操作是通过寄存器来完成:当设为输出时,向寄存器写入要输出的值;设为输入时,从该寄存器读入管脚上的值。

在实现I2C总线时,还需注意下面几点:作为SDA的那个GPIO应该接上拉电阻;AIC23只可写不可读;AIC23的设备地址当CS为低时是0011010bCS为高时是0011011b

DSP的软件设计

DSP需要处理来自和发向AIC23的数据,从而达到采集和播放声音。

从上面的分析我们知道,这些数据都是通过DSPMcBSP交换的。McBSP可以有三种方式跟CPU通信:每收到或发送一个单元,置标志位,CPU轮询此标志位;每收到或发送一个单元,给CPU发送中断;通过DMA收到或发送完一组单元,再给CPU中断。通常,为了减轻CPU负担,都采用第三种方法。

采用DMA的方式,即串口每发送或接受到一个单元,都会自动触发DMA将其搬送到一个内部的Buffer,等Buffer满了再通过中断方式告诉CPU处理。这时DMA最好采用ABUAuto Buffering)模式,在这种模式下,DMA会在两个Buffer(其实是一个大Buffer的前一半和后一半)之间自动切换,每个Buffer满了(接收)或空了(发送)都会给CPU发出中断,在CPU处理这个Buffer的时候,DMA会自动去操作另一个Buffer。采用这种方式可以有效防止 Buffer中的数据在串口速率较高时被新数据冲掉的问题。

DMA的中断服务程序中为了可靠可以把这个Buffer的数据再拷贝到另一个待处理的空间,即两级 Buffer,然后置标志位,CPU在主程序中查询标志位然后作出相应的处理。DMA操作的Buffer可以通过寄存器配置,Buffer的大小和起始位置应设置正确。在指定Buffer的起始位置时应该注意,起始位置应该为大于Buffer大小的下一个2的整数幂的倍数。例如,在8K16bit采样的情况下,以20ms数据为Buffer大小,那么一次处理的数据是8000×32×0.025120bit320word。所以,DMA Buffer应为640word(两个320word Buffer)大小,而Buffer的起始地址应该为1024=2^10>640的整数倍,如0x70000x7400……

DSP与异步串口间的通信

DSPPC机交换声音数据可以通过异步串口实现(近端RS232或者远端RS485再到RS232)。下面简单介绍如何利用DSPMcBSP实现RS232协议从而跟PC机的串口通信。

首先,因为McBSPRS232电平不同,之间需要加一个MAX232这样的电压转换芯片。同时,DSPMcBSP是一个三线同步串口,而RS232只需一根数据线(单向)即可通信,所以在实现异步串口时,首先硬件连接应该如下:

 

从上图可以看出, McBSP串口的接收帧信号和接收数据线连在一起,这样做的目的是为了利用异步帧的开始位(低有效)来给McBSP一个帧信号。显然,这时DSP的帧信号应设置为低有效且接收延时应设置为'1'

同步-异步转换的基本原理就是对异步信号过采样得到同步信号,例如一般是对异步信号的每个bit用同步信号的一个字来表示(即16'1'0xffff16'0'0x0000)。可参看下图(上边为异步信号,下边为同步信号):

 

串口的发送和接收都采用DMA方式,Buffer的大小为:181(无校验位,结束位长度为1)=10word。同步-异步具体转换在软件上实现:

对于发送来说,较为简单,就是对每一个Byte的每个bit用一个word16bit)进行代替,加上开始位、结束位。然后判断是否可以发送(通过发送完毕标志),如果可以则把这10word放入Buffer,启动DMA即可。在发送中断服务程序中需要作的是停止发送DMA,并置发送完毕标志有效。

接收相对发送麻烦一些,需要对接收到的每一个字进行判断从而恢复每一个bit,例如可以认为收到0000 1111 1111 0000b'1',其余为'0'。过滤掉开始位('0')和结束位('1'),恢复的8bit就合成一个Byte。这些应该在接收中断服务程序里面做。

还有就是同步串口时钟的选择,一定要稍大于设计速度,比如,在跟57.6KRS232通信时,时钟应该为57.6×16921.6K,实际配置串口分频寄存器时应该稍大于这个速度,否则就可能由于没有正确检测到停止位而出现错误。

更详细的同步-异步转换设计流程跟我们的主题无关,有很多文章有具体的描述,这里就不主要讨论了。

至此,一个较为完整的系统就建立了。此系统可以完成对语音或者音频信号的采集和播放,同时通过DSP内部的压缩算法,如g.729或者MP3传给PC机进行储存和传输。

附录:

AIC23的内部寄存器中的一些主要设置bit

1 LINE IN左声道音量控制寄存器: 
LIM
:静音 
LIV
40】:音量控制

2 LINE IN右声道音量控制寄存器: 
RIM
:静音 
RIV
40】:音量控制

3 耳机左声道音量控制寄存器: 
LHV
60】:音量控制

4 耳机右声道音量控制寄存器: 
RHV
60】:音量控制

5 模拟通道控制寄存器 
BYP
Bypass模式 
INSEL
ADC输入选择,0LINE IN1-麦克风 
MICM
:麦克风静音

6 数字通道控制寄存器 
DACM
DAC静音 
ADCHP
ADC高通滤波器开关选择

7 省电控制寄存器 
OFF
Device Power off 
CLK
Clock Power off 
OSC
Oscillator Power off 
OUT
Outputs Power off 
DAC
DAC Power off 
ADC
ADC Power off 
MIC
MIC Power off 
LINE
LINE IN Power off

8 数字接口格式寄存器: 
MS
:工作模式Master or Slave 
LRSWAP
DAC左右声道交换 
LRP
I2S模式下,LRCIN低左声道或右声道 
     DSP
模式下,MSBLRCIN有效后1st或者2nd BCLK沿出现 
IWL
10】:采样Bit长度 
FOR
10】:DSP格式,即帧信号后跟左右声道两个字 
I2S
格式,帧信号占空比50%,高低各是左右声道

9 采样率寄存器: 
CLKIN
:时钟输入选择,0MCLK1MCLK/2 
CLKOUT
:时钟输出选择,0MCLK1MCLK/2

10 数字接口激活寄存器: 
ACT
:激活开关

11 Reset寄存器 
RES
:写入0重启

参考文献: 
1.《TLV320AIC23B Datasheet》,Texas Instruments2002 
2.《TLV320AIC23EVM User's Guide》,Texas Instruments2001 
3.《TMS320C54x DSP Reference SetCPU and Peripherals》,Texas Instruments2001 
4.《TMS320C54x DSP Reference SetEnhanced Peripherals》,Texas Instruments1999 
5.《Implementing a Software UART on the TMS320C54x with the McBSP and DMA》,Texas Instruments2000

posted on 2011-06-23 10:46  zong_blogs  阅读(3270)  评论(0编辑  收藏  举报

导航