新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DSP與CPLD的ADS7805多通道數(shù)據(jù)采集

基于DSP與CPLD的ADS7805多通道數(shù)據(jù)采集

作者: 時(shí)間:2007-06-01 來源:網(wǎng)絡(luò) 收藏
摘要 設(shè)計(jì)了利用TMS320LF2407A與EPM3032A控制的采集系統(tǒng)的邏輯結(jié)構(gòu),介紹了系統(tǒng)的工作原理,詳細(xì)描述了之間接口的硬件與軟件設(shè)計(jì)。
關(guān)鍵詞;;

0 引言

用于實(shí)時(shí)控制的嵌入式系統(tǒng)有多路模擬量輸入,要求對(duì)多路輸入進(jìn)行連續(xù)掃描并進(jìn)行高速高精度處理,具有16位16路差分輸入的ADS7805能夠滿足系統(tǒng)數(shù)量及精度的要求。通道的快速切換及系統(tǒng)關(guān)鍵控制信號(hào)的產(chǎn)生成為制約系統(tǒng)性能的瓶頸,利用TMS320LF2407A豐富的I/O接口及高頻時(shí)鐘,配合EPM3032A靈活的譯碼功能,則可以控制ADS7805進(jìn)行多個(gè)通道的高精度高速,由于采用了等可編程器件,系統(tǒng)可操作性得到了保證,也極大地簡(jiǎn)化了硬件電路。

1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)

系統(tǒng)以DSP與CPLD為核心構(gòu)建,模擬信號(hào)從多路復(fù)用器接入,利用CPLD使能或禁止其輸出,DSP的I/O引腳控制通道的選擇,當(dāng)選通一路時(shí),多路復(fù)用器輸出差分再經(jīng)過運(yùn)放轉(zhuǎn)為單端信號(hào)作為ADC的輸入,ADC片選由DSP的I/O引腳控制,啟動(dòng)由CPLD控制,當(dāng)片選有效時(shí)啟動(dòng)ADC,并按照規(guī)定的時(shí)序控制片選信號(hào),ADC開始工作,轉(zhuǎn)換結(jié)果輸出到CPLD譯碼得到的地址。ADC與DSP之間的緩沖器件用來做電平匹配,利用CPLD將其鎖定在選通狀態(tài)。ADC在轉(zhuǎn)換完成時(shí)發(fā)起一個(gè)外部中斷到DSP,請(qǐng)求DSP處理轉(zhuǎn)換結(jié)果[1]。系統(tǒng)結(jié)構(gòu)如圖1所示。

2 硬件設(shè)計(jì)

模擬信號(hào)輸入到多路復(fù)用器ADG726(ADI公司產(chǎn)品),1.8~5.5V電源供電,由引腳VDD輸入;接受16路差分或32路單端模擬信號(hào)輸入(引腳S1A~S16A,S1B~S16B)。DA,DB為差分信號(hào)輸出引腳;A0~A3是通道選擇控制引腳。片選引腳CSA、CSB低電平有效。引腳EN、WR分別為芯片使能和寫使能,EN低有效,WR上的有效電平波形如圖2所示。

圖1系統(tǒng)結(jié)構(gòu)

圖2 多路復(fù)用器ADG726的控制時(shí)序圖

信號(hào)從DA,DB引腳輸出之后,在到達(dá)ADC之前先轉(zhuǎn)成單端信號(hào),這里采用ADI公司易用型運(yùn)放AD620,12V模擬電源供電,電路連接如圖3所示。

圖3 差分轉(zhuǎn)單端電路

ADI公司生產(chǎn)的低功耗16位模數(shù)轉(zhuǎn)換器ADS7805為逐次逼近型結(jié)構(gòu),+5V單電源供電,標(biāo)準(zhǔn)10V輸入,最小采樣率100KSPS。REF引腳接內(nèi)部或者外部參考電壓,用于設(shè)定模擬輸入電壓范圍,與模擬地之間連接一個(gè)2.2μF的鉭電容,本設(shè)計(jì)采用內(nèi)部參考;VANA引腳是+5V模擬電源輸入端,并聯(lián)一個(gè)0.1μF和一個(gè)10μF的鉭電容接到模擬地上;VDIG為數(shù)字電源輸入端,直接連到VANA上。AGND1和AGND2是模擬地;CAP引腳為參考緩沖電容,與模擬地之間接一個(gè)2.2μF鉭電容;DGND是數(shù)字地;BYTE引腳電平?jīng)Q定轉(zhuǎn)換結(jié)果的字節(jié)位置,低電平時(shí)引腳6到13輸出結(jié)果的高8位,引腳15到22輸出結(jié)果的低8位,高電平時(shí)正好相反。當(dāng)啟動(dòng)引腳R//C為低時(shí),片選CS的下降沿激活一次轉(zhuǎn)換。BUSY在轉(zhuǎn)換時(shí)保持低電平,轉(zhuǎn)換完成時(shí)變高。轉(zhuǎn)換結(jié)果由16個(gè)引腳并行輸出,經(jīng)過緩沖74LVTH16245A做5V到3.3V的電平轉(zhuǎn)換到DSP,輸出引腳為三態(tài)驅(qū)動(dòng)。ADS7805的控制時(shí)序如圖4所示

圖 4 ADS7805的控制時(shí)序

系統(tǒng)的主控制器采用TI(德州儀器)公司的TMS320LF2407A,3.3V靜態(tài)CMOS工藝,40MIPS,具有16位地址總線,16位數(shù)據(jù)總線,3個(gè)獨(dú)立的存儲(chǔ)空間,包括可用的64K字程序空間,35.5K字?jǐn)?shù)據(jù)空間以及64K字I/O空間。訪問不同的存儲(chǔ)空間時(shí),DSP有相應(yīng)的引腳作為選通信號(hào),即PS對(duì)應(yīng)程序空間,DS對(duì)應(yīng)數(shù)據(jù)空間,IS對(duì)應(yīng)I/O空間,均為低電平有效。本設(shè)計(jì)將ADC映射到I/O空間。TMS320LF2407A具有豐富的通用數(shù)字I/O口,利用其中一個(gè)對(duì)ADS7805進(jìn)行啟動(dòng)控制。通道選擇也由數(shù)字I/O實(shí)現(xiàn),利用DSP 4個(gè)I/O引腳作為ADG726的4-16譯碼輸入可選擇系統(tǒng)的16路差分。設(shè)計(jì)將ADC的BUSY引腳接到DSP的外部中斷引腳XINT1上,當(dāng)BUSY上升沿到來時(shí),將觸發(fā)DSP外部中斷,中斷的極性、優(yōu)先級(jí)均可軟件設(shè)定。EMP3032A是ALTERA公司推出的高性價(jià)比CPLD,在系統(tǒng)中用來控制ADC的引腳CS,配合引腳R//C來激活A(yù)DC,對(duì)CS的控制同時(shí)也將ADC映射在了DSP的I/O空間,因?yàn)槭笴S變?yōu)橛行У目刂七壿媮碜杂贑PLD對(duì)DSP的4根地址線(A15到A12)及IS的譯碼。多路復(fù)用器的寫使能由CPLD控制,即ADG726也被映射在DSP的I/O空間,這樣設(shè)計(jì)的優(yōu)點(diǎn)是對(duì)映射地址執(zhí)行一個(gè)讀操作就能得到需要的時(shí)序,雖然利用DSP的數(shù)字I/O引腳也能實(shí)現(xiàn),但是需要在軟件中模擬信號(hào)的時(shí)序,實(shí)現(xiàn)由高到低、延時(shí)并上跳變的過程,相對(duì)較復(fù)雜[2-4]

3 軟件設(shè)計(jì)

首先編寫CPLD程序?qū)DG726及ADS7805進(jìn)行地址譯碼,然后對(duì)CPLD在線編程生成譯碼電路。

/*--adc mux--*/

assign mux_wr=~((addr==4'h3)(~is)(~dsp_wr));//ADG726映射到I/O空間的地址0x3000~0x3FFF,得到寫使能信號(hào)

assign mux_en=0;//ADG726的使能引腳始終有效

/*--adc--*/

assign buffer_cs=(~(addr==4'h0))|is;//ADC映射到I/O空間的地址0x0000~0x0FFF,得到緩沖器的片選信號(hào)

assign adc_cs=~((addr==4'h0)(~is)dsp_rdwr);//得到ADC的片選信號(hào)

在DSP程序中,對(duì)0x3000~0x3FFF的任意地址執(zhí)行一個(gè)讀操作,由DSP選擇的通道就被選通,信號(hào)由ADG726輸出到運(yùn)放AD620,差分轉(zhuǎn)單端后輸出到ADC。通過寫數(shù)字I/O的控制寄存器,先將R//C拉低,再對(duì)I/O空間的0x0000~0x0FFF執(zhí)行一個(gè)讀操作,然后將R//C拉高,就啟動(dòng)了ADC。讀0x0000~0x0FFF 其中任一個(gè)地址產(chǎn)生低電平的CS信號(hào),該信號(hào)保持的時(shí)間由訪問I/O空間的等待時(shí)間決定,通過設(shè)置等待狀態(tài)寄存器來保證獲得有效的延時(shí)時(shí)間。

/*--設(shè)置等待狀態(tài)寄存器--*/

WSGR = 0x01C0;//bit8-6=111,訪問I/O空間時(shí)插入7個(gè)等待狀態(tài)

ADC轉(zhuǎn)換完成置BUSY為高電平,向DSP申請(qǐng)中斷,相應(yīng)中斷被使能之后DSP開始處理中斷服務(wù)程序,完成數(shù)據(jù)的讀取與其他處理。

/*--初始化ADC字程序--*/

*MCRA = 0xFC3F;//配置4個(gè)I/O引腳bit9-6為通用功能用于ADG726通道選擇

*MCRB = 0xFF7F;//bit7對(duì)應(yīng)的I/O引腳控制R//C

*PADATDIR |= 0xC000;//bit7-6配置為輸出,對(duì)應(yīng)通道選擇的兩個(gè)引腳

*PBDATDIR |= 0x0300;//bit1-0配置為輸出,對(duì)應(yīng)通道選擇的另兩個(gè)引腳

*PCDATDIR |= 0xC000;//bit6配置為輸出,對(duì)應(yīng)R//C

*XINT1CR |= 0x7;//上升沿有效,低優(yōu)先級(jí),使能外部中斷

*IMR |= 0x20;//使能內(nèi)核對(duì)應(yīng)的中斷

/*--聲明ADG726,ADC映射到的存儲(chǔ)單元--*/

#define AD_Output port0000

volatile ioport unsigned int port0000;

#define mux_ad port3000

volatile ioport unsigned int port3000;

/*--ADG726通道選擇函數(shù)--*/

*PADATDIR = 0xFF3F;//bit7,bit6清0

*PBDATDIR = 0xFFFC;//bit1,bit0 清0

*PADATDIR |= ( nChlNum 0x3 ) 6;//設(shè)置bit7,bit6

*PBDATDIR |= ( nChlNum 0xC ) >> 2;//設(shè)置bit1,bit0

mux_ad = 0;//產(chǎn)生寫使能信號(hào)

/*--主程序--*/

int temp;

……
AD_Init();//初始化

ADC_MUX(13);//選擇通道13

/*--啟動(dòng)ADC--*/

*PCDATDIR = 0xFF7F;//使AD_R/C*變低

temp=AD_Output;//產(chǎn)生有效的AD_CS*

*PCDATDIR |= 0x80;// 使AD_R/C*變高

for(;;);//等待ADC中斷

......

/*--中斷服務(wù)程序--*/
int AD_result;

*IFR = 0x20; //清除中斷標(biāo)志位,以響應(yīng)后續(xù)中斷

AD_result = AD_Output;//讀轉(zhuǎn)換結(jié)果

asm(“ clrc INTM”);//重新使能中斷,因?yàn)橐贿M(jìn)服務(wù)程序中斷就被禁止了

4 結(jié)束語

本文設(shè)計(jì)了TMS320LF2407A與EPM3032A的ADS7805多通道采集系統(tǒng),介紹了系統(tǒng)的工作原理,詳細(xì)描述了ADS7805、DSP及CPLD之間接口的硬件與軟件設(shè)計(jì),該方案已在筆者參與研制的嵌入式實(shí)時(shí)控制系統(tǒng)中得到了成功應(yīng)用。

參考文獻(xiàn)

[1] 王文武,曹治國,張貴清等.FPGA和DSP的并行系統(tǒng)的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2004-11,21-23
[2] TMS320LF2407A DIGITAL SIGNAL PROCESSOR, Texas Instruments Incorporated
[3] 夏宇聞著.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M]. 北京航空航天大學(xué)出版社,2004
[4] 劉和平,王維俊,江渝等著.TMS320LF240x DSP C語言開發(fā)與應(yīng)用[M]. 北京航空航天大學(xué)出版社, 2002



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉