32通道16位D/A轉(zhuǎn)換器MAX5631的原理及應(yīng)用
關(guān)鍵詞:MAX5631 D/A轉(zhuǎn)換AT89C51 串行接口
MAX5631是美國MAXIM公司生產(chǎn)的一種32通道高速度采樣保持D/A轉(zhuǎn)換器。它內(nèi)含一個16位DAC、一個帶內(nèi)部時鐘的時序控制器、一個片內(nèi)RAM以及32路采樣保持放大器。其中DAC電路由兩部分組成。在16位DAC中,高4位可通過15個同值電阻組成的權(quán)電阻網(wǎng)絡(luò)來完成相應(yīng)的轉(zhuǎn)換,其余位的轉(zhuǎn)換則由一個12位R-2R梯形網(wǎng)絡(luò)來完成。其32路帶緩沖的采樣保持電路通過內(nèi)部保持電容來使輸出壓降維持在每秒1mV的范圍內(nèi),且不需要配置外部增益和偏置電路。
MAX5631能提供最大200μV的分辨率和0.015%FSR的高精度轉(zhuǎn)換,其輸出電壓范圍為-4.5V~9.2V,并具有工作溫度范圍以及串行接口靈活等特點,適用地處理大量模擬數(shù)據(jù)輸出的場合。
1 引腳說明
圖1所示是MAX5631的引腳列圖。該器件共有64個引腳,大致可分成以下幾類:
(1)電源類:其中第4腳為D/A數(shù)模轉(zhuǎn)換器的+5V供電電源。第9腳為+5V邏輯電源,第14腳為+5V采樣保持電路。16、32、46腳為負(fù)電源,17、39、48腳為正電源。13腳為數(shù)字地,15、25、40、55、62腳為模擬地,63腳為電壓參考輸入。
(2)控制類:其中第5腳RST為復(fù)位輸入,6腳CS為片選輸入,10腳IMMED為立即更新模式,18、33、49腳(CL)為輸出鉗位電壓低位。31、47、64腳(CH)為輸出鉗位電壓高位。
(3)時鐘類:11腳ECLK為外部時序時鐘輸入,12腳CLKSEL為時鐘選擇輸入。
(4)串行接口類:7腳DIN為串行數(shù)據(jù)輸入,8腳SCLK為串行時鐘輸入。
(5)輸出類:該類引腳主要有OUT0~OUT31共32個輸出端。
2 MAX5631的功能結(jié)構(gòu)和工作模式
MAX5631的內(nèi)部結(jié)構(gòu)框圖如圖2所示。下面介紹MAX5631的輸入字、轉(zhuǎn)換時序及工作模式。
2.1 輸入字及轉(zhuǎn)換時序
MAX5631的轉(zhuǎn)換過程是先從串行數(shù)據(jù)端DIN送進(jìn)要轉(zhuǎn)換的16位數(shù)據(jù)D15~D0(高位在前,低位在后),然后送進(jìn)5腳地址A4~A0(用這5位地址編碼來選擇輸出通道號)。地址的后兩位是控制字C1和C0,其中C1為1為立即更新模式,為0則為猝發(fā)模式;C0為1表示選擇外部時鐘序列,為0則選擇內(nèi)部時鐘序列。C1、C0之后應(yīng)補一位0。見表1。
表1 輸入字序列
數(shù) 據(jù) | 地 址 | 控 制 | |||||||||||||||||||||
D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | A4 | A3 | A2 | A1 | A0 | C1 | C0 | 0 |
MSB | LSM |
圖3是MAX5631的時序圖,當(dāng)片選CS變低后,系統(tǒng)將在每一個時鐘的上升沿送出一位數(shù)據(jù)。送完最后一位數(shù)據(jù)(即第24位數(shù)據(jù)后)后片選CS變高。而當(dāng)CS為高電平時,任何輸入數(shù)據(jù)都是無效的。
2.2 工作模式
MAX5631有三種工作模式,分別為順序模式、立即更新模式和猝發(fā)模式。其中順序模式為默認(rèn)工作模式。在順序工作模式下,內(nèi)部時序控制器按順序循環(huán)訪問SRAM,并將對應(yīng)的數(shù)字量裝入DAC,同時更新相應(yīng)的采樣保持器。所以,在采用內(nèi)部順序控制時鐘時,順序工作模式下更新32路輸出的時間為320μs。而當(dāng)采用外部順序控制時鐘時,整個更新過程需要128個時鐘周期。
立即更新模式用于更新單片SRAM的內(nèi)容,同時更新相應(yīng)的采樣保持放大器輸出。在這種模式下,所選擇的通道輸出會在順序操作恢復(fù)前更新。用戶可以通過設(shè)置IMMED或使C1為高電平來選擇立即更新模式。當(dāng)片選CS為低電平時,原訪問順序被打斷。輸入字被存儲在對應(yīng)于被選擇通道的SRAM中。此時DAC轉(zhuǎn)換和相應(yīng)的采樣保持對輸入串口完全透明。相應(yīng)的輸出通道將得到立即更新。更新后,時序?qū)⒒氐皆瓉碇袛嗟腟RAM地址重新開始順序更新。立即更新操作需要占用兩個時序周期,其中一個周期用來使時序控制器繼續(xù)完成正在進(jìn)行的操作,另一個用來進(jìn)行新數(shù)據(jù)的更新。圖4(a)所表示的就是立即更新模式的例子。當(dāng)7通道正在更新的時候,20通道正在裝載數(shù)據(jù)。此時,如果CS變?yōu)榈碗娖剑瑒t原順序操作被中斷,而當(dāng)CS變?yōu)楦唠娖胶?,通?0將立即更新,然后是通道7的更新以后的操作依據(jù)原序列進(jìn)行。
猝發(fā)模式是一種高速裝入多地址SRAM的方法,但此時數(shù)據(jù)不被立即更新,而只有在數(shù)據(jù)猝發(fā)裝入完成并將控制返回到時序控制器后才進(jìn)行更新。用戶通過將IMMED和C1同時保持低電平可選擇猝發(fā)模式。當(dāng)CS變低時,順序操作被中斷,可以給相應(yīng)的SRAM中裝入數(shù)據(jù)。而當(dāng)CS變高時,順序操作從中斷的地方重新開始。各通道按順序依次更新數(shù)據(jù)。猝發(fā)操作后,一般需要一個時序循環(huán)才能再次讀取串口數(shù)據(jù)以保證所有通道的被猝發(fā)數(shù)據(jù)更新。圖4(b)所示是在通道7被更新時,片選CS變成低電平開始裝入所有數(shù)據(jù)的例子,此時沒有任何一個通道的數(shù)據(jù)能被更新。當(dāng)片選CS變成高電平時,系統(tǒng)將從通道7重新開始順序更新操作。
3 硬件連接電路
MAX5631與單片機(jī)AT89C51的硬件連接如圖5所示。片選CS可控制MAX5631是否被選中。CS為低后,所有的轉(zhuǎn)換開始有效。DIN為串行數(shù)據(jù)輸入,SCLK為外部時鐘輸入。IMMED為模式選擇,該腳為高或者控制字C1為高表示選擇立即更新模式;當(dāng)IMMED和C1同時為低表示猝發(fā)模式。在所給出的硬件連接圖中,這兩種模式可通過P1.4的控制加以選擇。如果已經(jīng)固定選擇了某一模式,也可以將該腳直接接地或電源。CLKSEL為時鐘選擇端,當(dāng)C0或者該腳為高電平時,系統(tǒng)選擇外部時鐘模式,此時內(nèi)部時鐘模式將被關(guān)閉。所給的硬件連接圖為外部時鐘模式。ECLK為外部時鐘模式控制引腳,可用于控制外部時鐘。RST為輸入復(fù)位端。
圖4
4 軟件程序設(shè)計
下面是針對圖5硬件連接電路給出的相應(yīng)C評議程序。其中單片機(jī)晶振頻率為11.0592Hz。設(shè)計時,首先送入24個輸入字,其中前16位是要轉(zhuǎn)換的16位數(shù)(用第一個循環(huán)實現(xiàn)輸入數(shù)據(jù)),后8位是通過地址選擇的輸出數(shù)據(jù)通道號。
Max5631(unsigned int Data,unsigned char Chan)
{
unsigned char BitCounterData=16,BitCounter Chan=8;//位數(shù)控制
unsigned char TempChan;//中間臨時通道號
unsigned int TempData;//中間臨時變量
TempData=Data;
TempChan=Chan;
TempChan<<=3;
TempChan&=0xfffe;
SCL=0;//時鐘線為低電平
SCS=0;//片選為低電平
do{
SCL=0;
-nop-();
if((TempData&0x8000)==0x8000)//如果最高位是1
SDA=1;
Else
SDA=0;//數(shù)據(jù)線為低電平
SCL=1;
TempData=TempData<<1;左移
BitCounterData--;
}while(BitCounterData);
do{
SCL=0;
-nop-();
if((TempChan & 0x0080)==0x0080)//如果最高位是1
SDA=1;
else
SDA=0;
SDA=0;
SCL=1;
TempChan=TempChan<<1;//左移
BitCounterChan--;
}while(BitCounterChan);
SCL=0;
SCS=1;
}
5 結(jié)束語
MAX5631是MAXIM公司推出的多通道D/A轉(zhuǎn)換器。該器件接口簡單,特別適用于控制多路模擬信號,可廣泛應(yīng)用于自動監(jiān)測、工業(yè)控制程序及光電控制電路等場合。
AN>