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