TLC320AD545(AD545)是TI公司生产的一种单通道数据/传真编解码器(Codec)。它是一种常用的混合信号宽带连接芯片,广泛应用于音频和传真数据采集处理系统中。它可以TMS320C54x DSP的McBSP(多通道缓冲串口)无缝串行连接进行数据采集、存储和处理。本文提出一种AD545 Codec与VC5402 DSP的McBSP接口设计方法,包括硬件连接及相关软件代码。
1 芯片介绍
1.1 主要特性
AD545是一种单通道的数据/传真编解码器。它由一个单通道的Codec和带有一个串口的模拟混合电路组成,其中的串口用于和外接主处理器接口相连。此芯片同时包含了可编程增益控制器和一个AT41话简驱动器。其电源可以是模拟5V、数字5V和监控5V;也可是模拟3.3V、数字3.3V和监控3.3V;还可是模拟5V、数字3.3V和监控5V。芯片封装是48脚TQFP。
AD545的主要特点有:差分和单端驱动模拟输出;采样速率最大可达11.025kHz;采样精度16位,2的补码数据格式;80dB动态范围;具有可编程增益放大器;带有可编程增益放大器的8ΩAT41差分话筒驱动器;Flash写使能电路为外部的Flash提供电源;温度范围-40~85℃。
1.2 功能框图
AD545内部功能框图如图1所示。
1.3 各功能部分简介
Codec部分:①1个ADC通道;②低通滤波;③模拟输入和模拟输出增益控制;④1个16位与外部主处理器接口的串口;⑤最大采样速率可达11.025kHz。
模拟混合电路部分:①1个集成放大器,其增益和滤波器频率可由外部的电容和电阻设定;②1个可编程增益放大器和1个8Ω的差分话筒驱动器相连,通过对控制寄存器进行编程,话筒驱动器可以设置为0dB增益或者不发声,通过编程,话筒驱动器的输入可以选择放大了的DAC输出(Data_Out PGA),也可以是ADC的输入信号;③变换器的参考电压输入端(DT_REF)应接2.5V或1.5V电压(当DACDD是5V时,应接2.5V;当DAVDD是3.3V时,应接1.5V)。
逻辑和其它电路部分:逻辑电路的功能是执行串口操作以及通过串口的二次通信对控制寄存器进行编程。这些控制寄存器用于设置放大器增益,选择循环功能以及读取ADC的溢出标志等。此外,还有一个Flash写命名能电路,它提供了一个外部的逻辑输入,并且可以为外部存储器设备的写使能电路提供电源,这个Flash写使能电路采用数字电源供电。
2 硬件连接
AD545与VC5402硬件连接原理如图2所示。
AD545的帧同步信号可以是高电平有效,也可以是低电平有效,这取决于AD545串行接口模式选择引脚SI_SEL的状态。本设计采用低电平有效方式和VC5402接口,因此,AD545的串行接口模式选择SI_SEL接高电平DVDD。
3 软件设计
3.1 串行通信工作时序
DSP与Codec串行通信工作时序如图3所示。
3.2 VC5402 DSP的McBSP寄存器设置
McBSP应该配置成单相位通信、16位字长的标准模式。由于AD545提供了串行时钟和帧同步时钟信号,因此,不必要配置McBSP的采样速率发生器。鉴于上述的串行通信工时序图,表1给出了McBSP控制寄存器的典型配置值。
表1 VC5402 DSP的McBSP控制寄存器的典型配置值
McBSP的控制寄存器名 设置值(16位)
SPCR x (串口控制寄存器1) 0000000000000001B(0001H
SPCR2x (串口控制寄存器2) 1000000000000000B(8000H
RCR1x (接收控制寄存器1) 0000000001000000B(0040H
RCR2x (接收控制寄存器2) 0000000000000100B(0004H
XCR1x (发送控制寄存器1) 0000000001000000B(0040H
XCR2x (发送控制寄存器2) 0000000000000100B(0004H
PCRx (帧控制寄存器) 0000000000001110B(000EH
3.3 AD545寄存器设置
DSP对AD545控制寄存器的设置是通过串行通信来完成的。主通信在DSP和AD545的ADC通道和DAC通道之间传输实际信号数据,二次通信用来配置AD545的控制寄存器。二次通信是在主通道期间通过设置所传输到AD545中数据字的最低有效位(LSB)的值来标识的。如果LSB是1,则下一个通信周期是二次通信周期,AD545所接收到的数据就会被变换来对控制寄存器进行写入操作。图4给出了主通信数据格式。
在二次通信期间,通过DT_DIN传输到AD545的数据包含了AD545控制寄存器的地址信息、一位表示寄存器是否正在被读或写的位信息以及在写寄存器状态下将被写到寄存器的数据信息。如图5所示,是在写寄存器状态下的数据格式,其中bit15和bit14为缺省值00,bit13为读/写位(1表示写,0表示读)。
AD545仅有两个控制寄存器(标识为1和2)。程序代码中所提供的控制寄存器设置值(分别是0x0100和0x0200)是一种通用配置,可以很容易地对其修改,以满足所需要的情况。
3.4 关键程序代码
这里所提供的程序代码是基于上述硬件连接的单机模式程序,此程序对VC5402的McBSP和AD545进行了初始化,并且用DSP的CPU来完成数据的采集和回放(AD545的ADC通道输入数据被送到DAC通道进行输出)。所有代码在CCS2.0下调试通过。
(1)主程序
void main(void)
{……
init_core(); /*初始化DSP*/
……
setup_codec(&McBSP_ch1,codec_ctrl_chl,N_delay_chl);
/*设置AD545通道*/
setup_CPU_to_codec(&McBSP_ch1);/*设置数据流向*/
while(1){} /*无限循环*/
}
(2)子程序
void init_core(void)
{/*设置PLL*/
*CLKMD=0x0000; /*禁止PLL*/
*CLKMD=0x90b2; /*PLLx10,外部晶振10MHz*/
/*其它设置*/
*SWWSR=0x2492; /*设置等待状态*/
*SWCR=0x0000; /*设置等待状态控制寄存器*/
*PMST=*PMST|0x0020; /*设置OVLY=1*/
void setup_codec(McBSP *McBSPx,int *codec_ctr1_data,unsigned
}
int N_delay)
{……
asm(SSBX INTM ;/*禁止全局中断*/
/*设置McBSP*/
/*设置AD545寄存器*/
……
for(i=1;i<=codec_ctr1_data[0];i++){
*McBSPx->DXRlx=0x0001;
/*主通信中标识下一通道为二次通信*/
while(!IFR & McBSPx->BXINTx_MASK)){}
/*DXR1x寄存器中的主要通信数据,等待BXINT标志*/
*IFR=McBSPx->BXINTx_MASK;/*清除BXINT flag*/
*McBSPx->DXR1x=codec_ctrl_data[i];
/*二次通信数据*/
while(!(*IFR & McBSPx->BXINTx_MASK)){}
/*DXR1寄存器中二次通信数据,等待BXINT标志*/
*IFR=McBSPx->BXINTx_MASK;/*清除BXINT标志*/}
}
void setup_CPU_to_codec(McBSP *McBSPx)
{……
if((McBSPx->McBSPnum==1)||(McBSPx->McBSPnum==2)
){
*DMPREC=*DMPREC &0xff3f;/*设置INTOSEL[1:0]=00b*/}
*IFR=McBSPx->BRINTx_MASK;/*清除BRINT标志*/
temp=*DRR10;/*读取DRR10来清除RRDY位*/
*IMR=*IMR|McBSPx->BRINTx_MASK;/*使能BRINT中断*/
asm(RSBX INTM ;/*使能全局中断*/
}
结语
AD545 Codec是较为常用的数据/传真编解码器,TMS320VC02是性能价格比较高的定点DSP芯片。基于上述设计的系统,可以应用于音频/传真数据采集、存储及处理系统中。