3 軟件設(shè)計(jì)
首先編寫CPLD程序?qū)DG726及ADS7805進(jìn)行地址譯碼,然后對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程序中,對0x3000~0x3FFF的任意地址執(zhí)行一個(gè)讀操作,由DSP選擇的通道就被選通,信號(hào)由ADG726輸出到運(yùn)放AD620,差分轉(zhuǎn)單端后輸出到ADC。通過寫數(shù)字I/O的控制寄存器,先將R//C拉低,再對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申請中斷,相應(yīng)中斷被使能之后DSP開始處理中斷服務(wù)程序,完成數(shù)據(jù)的讀取與其他處理。
/*--初始化ADC字程序--*/
*MCRA &= 0xFC3F;//配置4個(gè)I/O引腳bit9-6為通用功能用于ADG726通道選擇
*MCRB &= 0xFF7F;//bit7對應(yīng)的I/O引腳控制R//C??
*PADATDIR |= 0xC000;//bit7-6配置為輸出,對應(yīng)通道選擇的兩個(gè)引腳
*PBDATDIR |= 0x0300;//bit1-0配置為輸出,對應(yīng)通道選擇的另兩個(gè)引腳
*PCDATDIR |= 0xC000;//bit6配置為輸出,對應(yīng)R//C
*XINT1CR |= 0x7;//上升沿有效,低優(yōu)先級(jí),使能外部中斷
*IMR |= 0x20;//使能內(nèi)核對應(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)用。
評論