ad1674應(yīng)用電路
1 硬件設(shè)計(jì)
1.1 AD1674 接口電路
文獻(xiàn)[1]詳細(xì)介紹了AD1674 芯片的性能和控制信號(hào)的時(shí)序。在完全受控方式下,最好是用邏輯控制信號(hào)CE 啟動(dòng)數(shù)據(jù)讀或A/D 轉(zhuǎn)換;在CE 有效時(shí),片選信號(hào)CS 應(yīng)有效,并且控制信號(hào)R/C 和A0 已確定,只有滿足這種時(shí)序,AD1674 才能正常工作。
1.2 A/D 轉(zhuǎn)換及數(shù)據(jù)的讀時(shí)序
對(duì)A/D 接口電路而言,只有PC 機(jī)的時(shí)序與AD1674 的要求時(shí)序匹配才能保證電路的正常工作。該電路的A/D 轉(zhuǎn)換及數(shù)據(jù)的讀時(shí)序如圖1 所示。
A 在/D 轉(zhuǎn)換時(shí),8253 的定時(shí)脈沖或端口寫(xiě)脈沖QD 經(jīng)過(guò)延時(shí)和調(diào)節(jié)定時(shí)寬度后,使A/D 的使能控制CE 開(kāi)始啟動(dòng)A/D轉(zhuǎn)換。同時(shí)QD 寬度為1μs 的低電平脈沖(在端口寫(xiě)啟動(dòng)方式下,1μs 的低脈沖是由端口寫(xiě)脈沖經(jīng)調(diào)節(jié)定時(shí)寬度后獲得)使R/C的轉(zhuǎn)換有效,A0 及片選CS 可在A/D 轉(zhuǎn)換前設(shè)置為有效。當(dāng)讀取A/D 轉(zhuǎn)換后的數(shù)據(jù)時(shí),端口讀信號(hào)或DMA 讀信號(hào)D 直接使A/CD 的使能控制CE 啟動(dòng)數(shù)據(jù)讀,此時(shí)R/C=1,R/C 的讀有效,開(kāi)始12 位數(shù)據(jù)的讀取。當(dāng)A0=0 時(shí),讀取高八位數(shù)據(jù);當(dāng)A0=1 時(shí),讀取數(shù)據(jù)低四位,讀完后A0=0,準(zhǔn)備下一次A/D 轉(zhuǎn)換??梢?jiàn)該時(shí)序既能與PC 機(jī)接口,又能使AD1674 正常工作。
1.3 A/D 轉(zhuǎn)換及數(shù)據(jù)讀取的實(shí)現(xiàn)電路
本電路的AD1674 工作在完全受控方式。A/D 轉(zhuǎn)換為12 位,而轉(zhuǎn)換后數(shù)據(jù)分兩次讀取,即先讀數(shù)據(jù)的高八位,后讀數(shù)據(jù)的低四位。
1.3.1 A/D 轉(zhuǎn)換的啟動(dòng)方式
A/D 轉(zhuǎn)換的啟動(dòng)方式有兩種:8253 定時(shí)器硬件啟動(dòng)和寫(xiě)端口軟件啟動(dòng)。
8253 定時(shí)器啟動(dòng)方式應(yīng)用于對(duì)數(shù)據(jù)采集的時(shí)隔要求準(zhǔn)確的場(chǎng)合,該方式是利用8253 的定時(shí)脈沖啟動(dòng)A/D 轉(zhuǎn)換,通過(guò)8253 數(shù)據(jù)總線緩沖器(端口地址為&0X23F)輸出鑒別通道的計(jì)數(shù)初值,通過(guò)向6 位鎖存器74LS174(端口地址為&0X23B)寫(xiě)入控制字設(shè)定8253 的控制字以及A/D 片選控制位。6 位鎖存
器數(shù)據(jù)位定義說(shuō)明如下:
A1A0=00:&0X23D 口輸出的數(shù)據(jù)為計(jì)數(shù)器0 的計(jì)數(shù)值。
A1A0=01:&0X23F 口輸出的數(shù)據(jù)為計(jì)數(shù)器1 的計(jì)數(shù)值。
A1A0=10:&0X23F 口輸出的數(shù)據(jù)為計(jì)數(shù)器2 的計(jì)數(shù)值。
A1A0=11:&0X23F 口輸出的數(shù)據(jù)為計(jì)數(shù)器8253 的方式字。
G0&G1=1:起動(dòng)計(jì)數(shù)器0 和計(jì)數(shù)器1;G0&G=0:禁止計(jì)數(shù)器0 和計(jì)數(shù)器1。
CS=1:選中A/D 芯片CS=0;不選中A/D 芯片。
具體的實(shí)現(xiàn)電路如圖2 所示。首先將8253 定時(shí)通道0 與通道1 串聯(lián)起來(lái)定時(shí),通道0 的時(shí)鐘輸入CLK0 的頻率是2MHz,工作在方式3(方波比率發(fā)生器)下,通道0 的輸出OUT0 為頻率1MHz 的方波,作為通道1 的輸入時(shí)鐘CLK1。通道1 設(shè)定為方式2,即通道1 的輸出OUT1 從輸出開(kāi)始一直維持高電平,計(jì)數(shù)回零后,輸出為低電平并自動(dòng)重新裝入原計(jì)數(shù)值,低電平維持一個(gè)時(shí)鐘周期后,輸出恢復(fù)高電平并重新作減法計(jì)數(shù)。輸出OUT1 分為兩路信號(hào),一路通過(guò)與門(mén)U18A 輸出,作為AD1674 的R/C 控制信號(hào);另一路經(jīng)過(guò)單穩(wěn)觸發(fā)器U24 延時(shí)和調(diào)節(jié)定時(shí)寬度后,再通過(guò)或門(mén)U15C 輸出作為AD1674 的CE控制信號(hào)。當(dāng)OUT1 輸出寬度為1μs 的低電平脈沖時(shí),一方面使控制信號(hào)R/C 的轉(zhuǎn)換有效,同時(shí)經(jīng)延時(shí)和調(diào)節(jié)定時(shí)寬度后,使A/D 的使能控制CE 開(kāi)始啟動(dòng)A/D 轉(zhuǎn)換。因此在裝入計(jì)數(shù)初值以后,只要設(shè)置6位鎖存器U8 的控制字,就可利用8253 定時(shí)器啟動(dòng)A/D。
寫(xiě)啟動(dòng)A/D 方式應(yīng)用于軟件定時(shí),即通過(guò)對(duì)端口(地址為&0X23D)寫(xiě)來(lái)觸發(fā)A/D 轉(zhuǎn)換。如圖2 所
示,端口寫(xiě)信號(hào)一方面經(jīng)過(guò)單穩(wěn)觸發(fā)器U6A 調(diào)節(jié)定時(shí)寬度(寬度為1μs)后,作為AD1674 的R/C 控制信號(hào),同時(shí)經(jīng)過(guò)另一單穩(wěn)觸發(fā)器U24 延時(shí)和調(diào)節(jié)定時(shí)寬度后,再通過(guò)或門(mén)U15C 輸出作為AD1674 的CE控制信號(hào)。
可見(jiàn)兩種啟動(dòng)A/D 轉(zhuǎn)換的過(guò)程相似。相比較而言,前者的采樣間隔是由8253 定時(shí)脈沖的周期決定
的,屬于可編程定時(shí)器方式定時(shí),共特點(diǎn)是采樣間隔準(zhǔn)確;后者則由相鄰兩次寫(xiě)端口(地址為
&0X23D)的時(shí)間差決定采樣間隔,為軟件定時(shí)方式,特點(diǎn)是靈活方便。
1.3.2 A/D 轉(zhuǎn)換數(shù)據(jù)的讀取方式
在數(shù)據(jù)采集系統(tǒng)中,計(jì)算機(jī)讀取A/D 轉(zhuǎn)換數(shù)據(jù)的方式一般有三種,即查詢、中斷和DMA 方式。其中查詢方式就是通過(guò)查詢標(biāo)志位來(lái)判斷A/D 是否轉(zhuǎn)換完畢,如果A/D 轉(zhuǎn)換完畢則讀入轉(zhuǎn)換的數(shù)據(jù)。這種方式下CPU 主動(dòng)查詢,通過(guò)CPU 讀取A/D 轉(zhuǎn)換的數(shù)據(jù),故實(shí)現(xiàn)的硬件電路簡(jiǎn)單,但數(shù)據(jù)讀取速度慢,同時(shí)在WINDOWS 的多任務(wù)執(zhí)行方式下,存在著A/D 轉(zhuǎn)換數(shù)據(jù)不能及時(shí)讀入的問(wèn)題。中斷方式是利用A/D 轉(zhuǎn)換完畢的標(biāo)志位觸發(fā)一硬中斷,然后中斷管理器向CPU 提出中斷申請(qǐng)。在中斷允許的情況下,執(zhí)行中斷服務(wù)程序讀入轉(zhuǎn)換的數(shù)據(jù)。這種方式實(shí)現(xiàn)的硬件電路也比較簡(jiǎn)單,但中斷服務(wù)程序的介入,引起
數(shù)據(jù)采集程序的斷點(diǎn)的不可預(yù)測(cè)性,這樣會(huì)導(dǎo)致數(shù)據(jù)采集程序的失控。DMA 方式利用A/D 轉(zhuǎn)換完畢的
標(biāo)志位向DMA 控制器提出DMA 申請(qǐng),當(dāng)DMA 控制器從CPU 取得總線控制權(quán)時(shí),接口便與內(nèi)存之間直接地進(jìn)行數(shù)據(jù)交換(不經(jīng)過(guò)CPU)。這種方式下,由于不經(jīng)過(guò)CPU 讀入數(shù)據(jù),故提高了數(shù)據(jù)傳輸速度。同時(shí)由于A/D 轉(zhuǎn)換器主動(dòng)申請(qǐng)數(shù)據(jù)傳輸,而DMA 申請(qǐng)比外設(shè)中斷申請(qǐng)的優(yōu)先級(jí)高,A/D 轉(zhuǎn)換數(shù)據(jù)能夠及時(shí)讀入,系統(tǒng)性能也得到了提高,但實(shí)現(xiàn)的硬件電路較前兩種方式復(fù)雜。
本電路設(shè)計(jì)有查詢、中斷和DMA 三種數(shù)據(jù)傳輸方式。通過(guò)一撥碼盤(pán)開(kāi)關(guān)來(lái)選擇不同的的傳輸方式。如圖3 所示,當(dāng)A/D 轉(zhuǎn)換完畢時(shí),標(biāo)志位STS 由高電平變?yōu)榈褪请娖?,從而引起D 觸發(fā)器U20A 觸發(fā),U20A 的輸出Q 由低電平變成高電平。當(dāng)撥碼盤(pán)開(kāi)關(guān)S1 選擇為查詢方式時(shí),該U20A 的輸出Q 通過(guò)一個(gè)三態(tài)門(mén)(端口地址為&0X23F)與數(shù)據(jù)線D6 相連,提供計(jì)算機(jī)查詢;在中斷方式下,該U20A 的輸出Q 直接與硬中斷引腳IRQ2 相連,當(dāng)Q 由低電平變成高電平時(shí),引起計(jì)算機(jī)中斷。在前兩種方式下,通過(guò)軟件編程,向一鎖存器U22 的最低位寫(xiě)入0 或1,選擇讀取A/D 轉(zhuǎn)換數(shù)據(jù)的高八位或低四位,且由專(zhuān)門(mén)的端口(地址為&0X23D)讀取A/D 轉(zhuǎn)換的數(shù)據(jù)。實(shí)現(xiàn)的硬件電路簡(jiǎn)單。而在DMA 方式下,通過(guò)
應(yīng)答信號(hào)DACK1 尋址,并不由專(zhuān)門(mén)的端口讀取A/D 轉(zhuǎn)換的數(shù)據(jù),故選擇A/D 轉(zhuǎn)換數(shù)據(jù)的高八位或低四
位的功能必須由硬件電路來(lái)實(shí)現(xiàn),比較而言,電路更復(fù)雜一些。
下面介紹DMA 方式下的具體實(shí)現(xiàn)電路。DMA 請(qǐng)求電路由兩個(gè)D 觸發(fā)器組成,當(dāng)A/D 轉(zhuǎn)換完畢時(shí),U20A 的輸出Q 由低電平變成高電平,DRQ1=1,DMA 通道1 發(fā)出請(qǐng)求,DRQ1 被認(rèn)可后進(jìn)行兩次DMA傳輸。在第一次DMA 傳輸期間,觸發(fā)器U20B 的輸出Q 為低電平,A/D 轉(zhuǎn)換數(shù)據(jù)的高八位傳輸?shù)街付▋?nèi)存單元。在第一次DMA 傳輸結(jié)束時(shí),DACK1 由低電平變成高電平,觸發(fā)器U20B 的輸出為高電平,但觸發(fā)器U20A 的輸出Q 仍然是高電平,該電平申請(qǐng)第二次DMA 傳輸。在第二次DMA 傳輸期間,觸發(fā)器U20B 的輸出為高電平,A/D 轉(zhuǎn)換數(shù)據(jù)的低四位傳輸?shù)街付ǖ膬?nèi)存單元。當(dāng)?shù)诙蜠MA 傳輸結(jié)束時(shí),DACK1 由低電平變成高電平,使觸發(fā)U20B 輸出低電平,同時(shí)觸發(fā)器U20A 的輸出Q 變?yōu)榈碗娖?,DRQ1=0 變?yōu)榈碗娖?,DRQ1=0,DMA 通道1 的請(qǐng)求被撤銷(xiāo),結(jié)束一次A/D 轉(zhuǎn)換12 位數(shù)據(jù)傳輸過(guò)程。
2 軟件設(shè)計(jì)
該接口電路支持各種帶有口指令操作的高級(jí)語(yǔ)言和8086/8088 匯編語(yǔ)言。以下就以Turbo C 為例對(duì)
相應(yīng)的部分編程,經(jīng)供參考。
2.1 A/D 編程
該編程適合于中斷或查詢方式下的編程,端口地址=0x238~0x23f。
outportb(0x23c,0x00); /*初始化清零*/
outportb(0x23a,0x00); /*選擇傳輸高8 位數(shù)據(jù)并為A/D 轉(zhuǎn)換作準(zhǔn)備*/
{
}; /*啟動(dòng)A/D 并檢查A/D 是否轉(zhuǎn)換完畢*/
dh=inportb(0x23d); /*輸入高八位數(shù)據(jù)*/
outporth(0x23a,0x01); /*選擇傳輸?shù)退奈粩?shù)據(jù)*/
dl=inportb(0x23d); /*輸入低四位數(shù)據(jù)*/
outportb(0x23a,0x00); /*選擇傳輸高8 位數(shù)據(jù)并為A/D 轉(zhuǎn)換作準(zhǔn)備*/
dl=dl>>4;
dh1=dh;
dl=(dh1<<4)+dl;
dh=dh>>4; /*將高八位低四位數(shù)據(jù)轉(zhuǎn)化為高四位低八位數(shù)據(jù)*/
d=dh*256+dl; /*拼合12 位數(shù)據(jù)*/
u=(d-2047)*10.0/4096; /*轉(zhuǎn)換電壓值*/
2.2 寫(xiě)啟動(dòng)和查詢方式的編程
outportb(0x23d,0x00); /*寫(xiě)啟動(dòng)A/D 轉(zhuǎn)換*/
if(inporth(0x23e)&0x80);/*D7=1 則A/D 轉(zhuǎn)換完畢*/
2.3 8253 定時(shí)器編程
outportb(0x23b,0x03); /*set 8253 timer into writing mode word state*/
outportb(0x23f,0x36); /*set 0 channel working with mode 3*/
outportb(0x23f,0x74); /*set 1 channel working with mode 2*/
outportb(0x23b,0x00); /*set to write data to 0 Channel mode */
outportb(0x23f,0x02); /*write low data to 0 channel*/
outportb(0x23f,0x00); /*write high data to 0 channel*/
outportb(0x23b,0x01); /*set to write data to 1 channel*/
outportb(0x23f,LC1); /*write low data to 1 channel*/
outportb(0x23f,HC1); /*write high data to 1 channel*/
outportb(0x23b,0x0c); /*啟動(dòng)CH0,CH1 工作*/
其中采樣頻率決寫(xiě)入計(jì)數(shù)器1 的計(jì)數(shù)值。
2.4 DMA 方式下PC 主機(jī)中8237A DMA 控制器編程
8237A DMA 控制器具有4 個(gè)DMA 通道,該接口電路使用通道1。
outportb(0x0x,0x05); /*mask DMA channel 1*/
outportb(0x0c,0x00); /*clear byet pointer flip*/
outportb(0x0b,0x55); /*write mode word.demand mode,address tincrease,autoinitialization,write trasfer
and select 1*/
outportb(0x83,SEG); /*write page number*/
outportb(0x02,LA); /*write low 8 bit address*/
outportb(0x02,HA); /*write hige 8 bit address*/
outportb(0x03,LC); /*write low 8 bit count data*/
outportb(0x03,HC); /*write hige 8 bit count data*
outportb(0x03,0x01); /*clear mask bit of DMA channel*/
其中寫(xiě)入11 口的數(shù)值應(yīng)按照具體的工作方式來(lái)確定,寫(xiě)入131 口的頁(yè)地址SEG 取20 位絕對(duì)地址的最高4 位的數(shù)值,而將低16 位地址的數(shù)值寫(xiě)入地址寄存器。寫(xiě)基值字節(jié)計(jì)數(shù)寄存器的字節(jié)總數(shù)值應(yīng)為需要傳輸?shù)淖止?jié)數(shù)減1。
2.5 中斷服務(wù)程序的編寫(xiě)以有中斷向量的裝入
void interrupt int9() /*中斷服務(wù)程序*/
{ disable();
ah5=inportb(0x23d); /*輸入高八位數(shù)據(jù)*/
outportb(0x23a,0x01); /*選擇傳輸?shù)退奈粩?shù)據(jù)*/
dl5=inportb(0x23d); /*輸入低四位數(shù)據(jù)*/
outportb(0x23a,0x00); /*選擇傳輸高8 位數(shù)據(jù)并為A/D 轉(zhuǎn)換作準(zhǔn)備*/
outportb(0x23c,0x00); /*A/D 轉(zhuǎn)換完畢的標(biāo)志位清零*/
outportb(0x20,0x20);
enable();
}
void stall 1(void interrupt(*faddr)())
{
disable();
setvect(INT1,faddr); /*裝入中斷服務(wù)程序*/
enable();
}
本文介紹一種基于AD1674 設(shè)計(jì)的接口電路,該電路具有查詢、中斷和DMA 三種數(shù)據(jù)傳輸功能,同時(shí)采用8253 定時(shí)脈沖或端口寫(xiě)兩種A/D 啟動(dòng)方式。其中DMA 方式實(shí)現(xiàn)了數(shù)據(jù)的快速傳輸,而兩種A/D 啟動(dòng)方式將會(huì)使采樣率的設(shè)定更加靈活。應(yīng)用本文原理設(shè)計(jì)的可插入通用PC 機(jī)的數(shù)據(jù)采集板已用于我們的高頻多譜勒和到達(dá)角探測(cè)分析系統(tǒng)中,取得了滿意的效果。這些設(shè)計(jì)方法和原理在其它實(shí)際數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)過(guò)程中,也會(huì)具有重要的參考價(jià)值。
應(yīng)用電路
圖6 為某新型國(guó)產(chǎn)機(jī)載武器系統(tǒng)的數(shù)
據(jù)采集處理部分的電路原理框圖。來(lái)自保
傳感器的十六路模擬信號(hào)經(jīng)過(guò)多路開(kāi)關(guān)切
換后送至高精密運(yùn)放進(jìn)行緩沖放大,同時(shí)
還要保持信號(hào)的采樣精度。AD1674T 被接
在±10V 雙極模擬電壓輸入模式,使用的是
內(nèi)部基準(zhǔn)源和時(shí)鐘。從開(kāi)關(guān)選通模擬信號(hào)
到A/D 轉(zhuǎn)換以及數(shù)據(jù)輸出均由ADSP2100
微處理器進(jìn)行邏輯控制,每個(gè)這樣的變換
周期均為64μs,因而完成16 個(gè)通道的模擬轉(zhuǎn)換大約需要1ms 的時(shí)間,可以符合該系統(tǒng)的響應(yīng)技術(shù)要
求。
評(píng)論
查看更多