1 引言
串行數(shù)/模轉(zhuǎn)換減少了器件間的硬件連接,特別適用于電路空間較小且數(shù)據(jù)采集速率要求不是特別高的場合。當(dāng)然,硬件的簡化也相應(yīng)提高了使用的復(fù)雜程度。本文介紹AD7890型串行數(shù)/模轉(zhuǎn)換器在自動(dòng)導(dǎo)向鉆井系統(tǒng)控制電路數(shù)據(jù)采集中的應(yīng)用。由于井下工具電子倉部分空間狹窄、工作條件惡劣、可靠性要求高,所以特別適合采用串行A/D轉(zhuǎn)換器。
AD7890是美國Analog Devices公司于20世紀(jì)90年代末推出的一款8通道12位串行A/D轉(zhuǎn)換器。其主要性能特征包括:A/D轉(zhuǎn)換時(shí)間較快(9.5μs);功耗較低(最大50 mW,體眠狀態(tài)下75μW);信噪比較高(大于70 dB);總諧波失真小(不大于-78 dB);內(nèi)置跟蹤/保持放大器,片上參考電壓;具有高速、靈活的串行接口等。
2 AD7890的內(nèi)部結(jié)構(gòu)
圖1示出AD7890的內(nèi)部功能框圖,由圖1可知AD7890內(nèi)部含有相應(yīng)的信號(hào)調(diào)理(對(duì)于AD7890-5和AD7890-10)、多路開關(guān)、跟蹤保持放大器、通用串行接口及參考電源等,給用戶的使用帶來極大的方便。特別是電路中的多路開關(guān)輸出(MUX OUU)和跟蹤/保持輸入(SHA IN)采用分離的獨(dú)特設(shè)計(jì),使用戶在二者間采用1個(gè)外部濾波電路就可完成全部8個(gè)通道的抗混疊處理。
電路的SMODE端是工作模式的控制輸入端,用戶可以用其指定器件內(nèi)部時(shí)鐘(主)和外部時(shí)鐘(從)的工作模式。采用外部時(shí)鐘工作模式時(shí).用戶需提供讀寫數(shù)據(jù)的幀同步和串行時(shí)鐘信號(hào)SCLK,其串行脈沖頻率最大可以達(dá)到10 MHz。采用內(nèi)部時(shí)鐘模式時(shí),AD7890本身向系統(tǒng)提供幀同步行時(shí)鐘,此時(shí)的工作頻率取決于CLK IN引腳輸入的主時(shí)鐘頻率。電路的8路模擬輸入端為VINl-VIN8,由多路開關(guān)根據(jù)3位通道地址選擇,多路切換時(shí)按先開后合方式操作。REF OUT/REF IN是參考電壓輸出/輸入端。使用外部參考電壓時(shí)外部+2.5 V參考電壓由該端接入,而使用內(nèi)部參考電壓時(shí)需要在該端和模擬地AGND之間接入一只0.1μF的電容器。
AD7890通過片內(nèi)的高速雙向串行數(shù)據(jù)接口成輸出數(shù)據(jù)和接收控制字。其控制寄存器由5位組成,如圖2所示,各位的默認(rèn)狀態(tài)均為0。其中A2、A1、A0分別為多路開關(guān)通道地址選擇的最高位、次高位和最低位。通道選擇算法為:被選通道號(hào)=A2x4+Alx2+AO+1??刂谱炙腿肟刂萍拇嫫?,器件即開始啟動(dòng)內(nèi)部延時(shí)脈沖,該脈沖寬度取決于CEXT引腳的電容值,用戶可以根據(jù)外部濾波和信號(hào)處理的實(shí)際延時(shí),適當(dāng)調(diào)節(jié)該電容值,確保在A/D轉(zhuǎn)換開始前有足夠的時(shí)間進(jìn)行多路轉(zhuǎn)換建立和跟蹤保持的采集。該內(nèi)部延時(shí)脈沖時(shí)間到后,跟蹤/保持器立即進(jìn)入保持狀態(tài)并且開始啟動(dòng)12位A/D轉(zhuǎn)換器的本次操作。
3 AD7890的工作時(shí)序
控制寄存器中的CONV為轉(zhuǎn)換開始狀態(tài)位,為l時(shí)表示進(jìn)入轉(zhuǎn)換狀態(tài),與CONVST引腳輸入效果完全相同。在向CONV寫操作(寫1)的第6個(gè)串行時(shí)鐘周期結(jié)束后內(nèi)部延時(shí)脈沖開始啟動(dòng),轉(zhuǎn)換過程開始。另外,在CONV為1時(shí),CONVST的輸入命令無效。STBY為休眠狀態(tài)位,該位為1時(shí),電路處于低功耗體眠狀態(tài)。電路在寫操作SCLK的第7個(gè)脈沖下降沿進(jìn)入休眠。因此,系統(tǒng)向AD7890寫操作至少需要6個(gè)時(shí)鐘脈沖,使其休眠的寫操作至少需要7個(gè)時(shí)鐘脈沖。如果在6個(gè)時(shí)鐘脈沖前TFS回到高電平,則不會(huì)有任何數(shù)據(jù)寫入控制寄存器。但是需要注意的是,當(dāng)CONV位置為1時(shí),轉(zhuǎn)換過程都會(huì)在寫操作發(fā)生時(shí)開始,無論TFS的低電平能夠保持多少個(gè)時(shí)鐘脈沖。
CONVST為轉(zhuǎn)換開始時(shí)的硬件輸入端,上升沿觸發(fā)。AD7890可以由CONVST輸入或CONV位寫1兩種方式啟動(dòng)。如前所述,從轉(zhuǎn)換過程開始到正式啟動(dòng)A/D轉(zhuǎn)換器的時(shí)間間隔是由每次串行寫操作啟動(dòng)的內(nèi)部延時(shí)脈沖來控制。這也意味著該脈沖總會(huì)給軟件啟動(dòng)的轉(zhuǎn)換過程帶來一定的延時(shí)。若內(nèi)部延時(shí)時(shí)間已到,由CONVST上升沿開始的A/D轉(zhuǎn)換時(shí)間為9.5μs,跟蹤/保持器的采集時(shí)間為2μs。另外,為了保證正常的A/D轉(zhuǎn)換,任何串行讀寫操作均不可在A/D轉(zhuǎn)換期間及下次轉(zhuǎn)換開始前500 ns內(nèi)進(jìn)行。
4 AD7890的讀寫操作
AD7890串行數(shù)據(jù)輸入引腳是DATA IN,寫操作時(shí)通過該引腳向AD7890控制寄存器寫入數(shù)據(jù),寫入時(shí)用傳輸幀同步TFS變?yōu)榈碗娖胶骃CLK的前5個(gè)下降沿寫入DATA IN上串行數(shù)據(jù)的前5位。而同一次TFS中的5個(gè)SCLK脈沖下降沿以后的串行數(shù)據(jù)均無效。
串行數(shù)據(jù)輸出引腳是DATA OUT,輸出數(shù)據(jù)由1位起始位(O)、3位通道地址和由最低有效位開始的12位轉(zhuǎn)換數(shù)據(jù)共16位組成。輸出數(shù)據(jù)碼制,在雙極性輸入型(AD7890-10)中為補(bǔ)碼,在單極性輸入型(AD7890-4和AD7890-2)中為無符號(hào)的二進(jìn)制數(shù)。
AD7890-4的讀寫操作在不同工作模式下略有區(qū)別,其時(shí)序如圖3所示。
內(nèi)部時(shí)鐘模式讀操作時(shí)序如圖3(a)所示,轉(zhuǎn)換結(jié)束后RFS自動(dòng)變?yōu)榈碗娖剑瑫r(shí)開始輸出SCLK脈沖和串行數(shù)據(jù),每位數(shù)據(jù)在SCLK下降沿時(shí)有效。RFS在第16個(gè)SCLK上升沿時(shí)刻變?yōu)楦唠娖健A-TA OUT數(shù)據(jù)結(jié)束。內(nèi)部時(shí)鐘寫操作時(shí)序如圖3(b)所示,TFS輸入為低電平表示寫操作的開始,同時(shí)也啟動(dòng)SLCK的輸出,DATA IN上的串行數(shù)據(jù)在SCLK的下降沿寫入,故寫入操作至少需要6個(gè)SCLK脈沖。
外部時(shí)鐘模式讀操作時(shí)序如圖3(c)所示,從RFS低電平開始讀取16位串行數(shù)據(jù),為保證正常操作,無論RFS和SCLK的時(shí)間關(guān)系如何,起始位O都將維持至少一個(gè)SCLK脈沖周期,并在第一個(gè)脈沖周期之后的第一個(gè)下降沿時(shí)結(jié)束。此外,在讀操作進(jìn)行中若有新的A/D轉(zhuǎn)換結(jié)束,則輸出數(shù)據(jù)寄存器的刷新會(huì)被延遲到讀操作完成和RFS返回到高電平后進(jìn)行。外部時(shí)鐘模式寫操作時(shí)序如圖3(c)所示,串行數(shù)據(jù)寫操作在TFS變?yōu)榈碗娖綍r(shí)開始,5位控制寄存器寫操作至少需要6個(gè)SCLK脈沖,與內(nèi)部時(shí)鐘寫操作工作模式相同。
5 應(yīng)用實(shí)例
AD7890在51系列單片機(jī)系統(tǒng)中的應(yīng)用實(shí)例硬件接口原理如圖4所示。系統(tǒng)采用外部時(shí)鐘工作模式,用89C52的P1.3口作為時(shí)鐘輸出;P1.0口連接串行數(shù)據(jù)輸入和輸出。也可以應(yīng)用5l系列單片機(jī)的串口RXD和TXD連接AD7890實(shí)現(xiàn)數(shù)據(jù)讀寫操作,此時(shí)需要特別注意的是AD7890的串行數(shù)據(jù)總是最高有效位在前,而51系列單片機(jī)串行通信收發(fā)操作總是最低有效位在前。P1.1、P1.2分別連接RFS可和TFS。MUX OUT和SHA IN直接連接,這種連接方式的缺點(diǎn)是系統(tǒng)不能同時(shí)訪問控制寄存器和輸出數(shù)據(jù)寄存器。內(nèi)部延時(shí)脈沖寬度只需考慮2 μs的跟蹤/保持器采集時(shí)間,因此電容C的最小容值可以為120 pF。
軟件啟動(dòng)AD7890轉(zhuǎn)換的C51函數(shù)程序框圖如圖5所示。執(zhí)行中由實(shí)際參數(shù)傳遞欲轉(zhuǎn)換的通道地址(0x00--Ox07對(duì)應(yīng)VINl-VIN8),將通道地址A2、Al、A0分別送控制字第7位、第6位和第5位??刂谱值?位置1作為CONV標(biāo)志。如果寫入的是置電路為休眠狀態(tài)的命令,則應(yīng)將控制字第3位也置為1。通過P1.2置TFS為低電+平并在SCLK脈沖作用下串行輸出控制字。經(jīng)過軟件延時(shí)等待,延時(shí)時(shí)間大于內(nèi)部延時(shí)脈沖加5.9μs的A/D轉(zhuǎn)換時(shí)間。當(dāng)主頻為11.0592 MHz時(shí),89C52系統(tǒng)的1個(gè)機(jī)器周期約為l.085μs。所以執(zhí)行空操作至少8次后再發(fā)送RFS命令,進(jìn)行讀操作。讀操作過程中主機(jī)在SCLK脈沖同步下讀入16個(gè)串行數(shù)據(jù)。轉(zhuǎn)換結(jié)果在函數(shù)返回?cái)?shù)字中的低12位中。若采用硬件啟動(dòng)方式,則需要先將控制寄存器CONV標(biāo)志寫0,然后用P3.2口輸出A/D轉(zhuǎn)換啟動(dòng)命令。由于沒有加入內(nèi)部延時(shí)脈沖,因此如果不改變轉(zhuǎn)換通道,硬件啟動(dòng)方式可以得到最快的轉(zhuǎn)換速率。
下面是應(yīng)用實(shí)例的C51程序清單。實(shí)例中所用軟硬件條件為:89C52單片機(jī)、11.0592 MHz時(shí)鐘、AD7890-10和V2.40版本KEIL Cx51開發(fā)工具。