16位高性能低功耗A/D轉換器AD7705及其應用
沈國民 王歡 謝軍龍
(華中科技大學 武漢,430074)
摘要:介紹了16位高性能、低功耗A/D轉換器AD7705的特點,并給出了AD7705結合8031單片機進行壓力測量的硬件接口電路及軟件編程方法。
關鍵詞:A/D轉換器單片機壓力測量
ABSTRACT:The paper describes the characters of the high—performance,low—power A/D converter AD7705,introduces its application for pressure measurement with a single chip mierocomputer8031.
KEYWORDS:A/D Converter Single chip microcomputer Pressure measurement
1 AD7705簡介
1.1 主要性能
AD7705是美國AD公司新近推出的一種低成本、高分辨率A/D轉換器,它適用于寬動態(tài)范
圍測量、工業(yè)控制或工藝控制中的低頻信號的轉換。是用于智能系統(tǒng)、微控制系統(tǒng)和基于DSP系統(tǒng)的理想產品。其功能框圖如圖1所示。它具有如下功能及特點:
(1)雙通道全差分模擬輸入,可接受直接來自傳感器的低電平的輸人信號;
(2)用Σ一△轉換技術實現(xiàn)了16位無丟失代碼性能,0.003%的非線性度;
(3)可編程增益前端,增益:1—128;
(4) 可配置成三線串行接口;
(5)信號極性以及更新速率的選擇可用串行輸入口由軟件來配置;
(6)該器件包括自校準和系統(tǒng)校準選項,以消除器件本身或系統(tǒng)的增益和偏移誤差;
(7) 只需2.7~3.3V或4.75~5.25V單電源;
(8) CMOS結構確保器件具有極低功耗,3V電壓時,最大功耗為lmV;
(9)等待或掉電模式下,器件消耗的電源電流僅為10ptA;
(10)主時鐘頻率為1MHz或2.4576MHz,數據輸出更新頻率有20Hz、25Hz、100Hz、200Hz、
50Hz、60Hz、250Hz、500Hz八種選擇。
AD7705的引腳排列如圖2所示。其中SCLK, 串行時鐘輸入;MCLK IN/MCLK OUT,主
主時鐘信號輸入/輸出;CS,片選信號,低電平有效;RESET,復位輸入端;AIN2(+)/AIN2(-),差分模擬輸入通道2的正/負輸入端;AINl(+)/AINl(-),差分模擬輸入通道1的正/負輸入端;DRDY,數據輸出準備,當它為低電平表示可從AD7705的數據寄存器中獲取新的輸出字;DOUT/DIN,串行數據輸出/輸入端;電源電壓,+2.7V一+5.25V;GND,內部電路的地電位基準點。
1.3工作時序
AD7705的讀寫時序如圖3所示。
注意在讀寫過程中串行數據的傳輸順序為高位在先,低位在后,這與8031串行口的數據傳輸順序恰好相反。另外,在讀取A/D轉換結果時,需先檢測麗位,只有在該位為低電平時,才能讀取已更新的A/D轉換結果。
1.4片內寄存器
AD7705片內包括8個寄存器,其編程功能是通過對寄存器的設置來控制的,對這些寄存的讀/寫操作通過器件的串行接口來完成。
第1個是通信寄存器,它管理通道操作,決定下一個操作是讀操作還是寫操作,以及下一次讀或寫哪一個寄存器。所有與器件有關的通信必須從寫入通信寄存器開始。上電或復位后,器件等待在通信寄存器上進行一次寫操作,即接口的默認狀態(tài)。在接口序列丟失的情況下,如果在DIN為高電平時的寫操作持續(xù)足夠長的時間(至少32個串行時鐘周期),AD7705將會回到默認狀態(tài)。此外,通信寄存器還控制等待模式和通道選擇,DRDY的狀態(tài)也可從它上面讀出。下表即為通信寄存器的各位說明。
其中,0/DRDY位狀態(tài)與DRDY引腳狀態(tài)相同;RS2~RS0,寄存器選擇位;R/W,讀/寫操作選擇;STBY為高電平則處于等待或掉電模式;CHl~CH0,通道選擇。
第2個是設置寄存器,決定校準模式、增益設置、單/雙極性輸入以及緩沖模式。
第3個是時鐘寄存器,包括濾波器選擇和時鐘控制位。
第4個是數據寄存器,它是16位只讀寄存器,器件輸出的數據從這個寄存器讀出。
最后是校準寄存器組,它存儲通道校準數據,包括測試寄存器、零標度校準寄存器和滿標度校準寄存器。
2 AD7705的應用
AD7705靈活的串行口使其能很容易地與大多數微處理器進行連接,而且AD7705具有上述的多種優(yōu)點,因而可將它直接與各種傳感器相連,構成對采樣速率要求不高的數據采集系統(tǒng)。下面介紹一種AD7705結合8031單片機進行壓力測量的硬件接口電路及編程方法。
2.1硬件接口電路
接口電路如圖4所示。
在此應用中,壓力傳感器被安裝在一個橋式電路中,在它的OUT(+)和OUT(一)端輸出差分輸出電壓。橋式電路的激勵電壓用來為AD7705產生基準電壓,因此,激勵電壓的變化不會造成系統(tǒng)內的誤差。AD7705的第2個通道作為一個輔助通道來測量另一個變化,如溫度,以便消除溫度對系統(tǒng)的影響。將AD7705的CS直接接低電平,與8031單片機可采用2線連接。由于8031單片機的串行口通常用來與上位機進行通信,在這種情況下,把AD7705的DO叭’和DIN線接在一起并與8031的P1.10相連以實現(xiàn)串行數據的輸入和輸出,同時必須使用一個100k12的上拉電阻。P1.1用來輸出串行時鐘信號。DRDY的狀態(tài)通過訪問通信寄存器的首位(MSB)得到,以確認數據寄存器是否進行過更新。
2.2 AD7705的編程
以上具體說明如何對AD7705進行編程。為避免贅述,在本例中假定只選擇通道1作為有效通道(對通道2的數據采集編程可參照通道1),工作條件是增益為1,沒有濾波同步,雙極性模式,無緩沖,4.9512MHz的時鐘和50Hz的輸出更新速率。采集一次模擬信號的流程圖如圖5所示。由于C語言既有一般高級語言的特點,又能直接操作系統(tǒng)硬件,而且具有良好的可移植性,所以用C語言進行程序設計是單片機開發(fā)與應用的必然趨勢。
本例采用Franklin C51編寫源程序,如下:
#include<re951.h>
#define uchar unsigned char
sbit P1-0=P1^0:
sbit P1-1=P1^1;
sbit ACC-0=ACC^0;
uchar RLC(a)/*左循環(huán)移位一位*/
{uchar a,b,C;
b=a》7;
C=a《1;
a=clb:
return(a);
}
void Writetoreg(a)/*移位寫入8位數據*/
{uchar i,a;
for(i=0;i<=7;i++)
{P1—0=1,P1—1=O;
ACC=RLC(a);
P1—0=ACC—O;P1.1=1;
}
}
uchar read()/*移位讀出8位數據*/
{uchar i;
for(i=0;i<7;i++)
{P1—0=1,P1—1=O;
ACC一0=P1一O;P1—1=1;
ACC=RLC(ACC);
}
retum(ACC)
}
void ADC7705(uchar idata*abc)/*一次模擬
數據采集*/
{uchar i,a,reglength=2;
Writetoreg(0x20);/*AD7705初始化*/
Writetoreg(0xoc);
Writetoreg(0x 10);
Writetoreg(0x40);
Writetoreg(0x00);
a=Read();/*讀通信寄存器*/
while(aIxl0)/*判斷面i麗位狀態(tài)*/
{Writetoreg(0x38);/*準備讀數據寄存器*7
for(i=O;i<feglength;i++)
*adc=Read();
}
}
3結束語
AD7705是性能價格比較高的16位串行A/D轉換器,它的雙輸入通道對于需要輔助通道以測定變量用來修正主通道的系統(tǒng)特別適合。AD7705不僅能應用于壓力測量,還可以應用于溫度測量,以及低功率、單電源的智能發(fā)射器和電池監(jiān)控中。
參考文獻
1李朝青.單片機原理及接口技術[M].北京:北京航空航
天大學出版社,1994
2徐愛鈞,彭秀華.單片機高級語言C51應用程序設計
[M].北京:電子工業(yè)出版社,1998