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
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芯片。基于上述設計的系統,可以應用于音頻/傳真數據采集、存儲及處理系統中。
評論
查看更多