0 引 言
數(shù)字電位器是利用微電子技術(shù)制成的集成電路,它是依靠電阻陣列和多路模擬開關(guān)的組合完成阻值的變化。它沒有可動的滑臂,而通過按鈕輸入信號,或是通過數(shù)字輸入信號改變數(shù)字電位器的阻值。數(shù)字電位器由于可調(diào)精度高,更穩(wěn)定,定位更準確,操作更方便,數(shù)據(jù)可長期保存和隨時刷新等優(yōu)點,在某些場合具有模擬電位器不可比擬的優(yōu)勢。
ADN2850是ADI公司的雙通道,1 024階非易失性數(shù)字電位器。溫度系數(shù)僅為35 ppm/℃。其功能模塊圖如圖1所示。它的輸出電阻W和B之間的阻值主要由中間寄存器RDAC中存儲的值決定。RDAC的值可以由外部指令直接賦予或者從內(nèi)部非易失性存儲器E2MEM中載入。E2MEM中的值可以被修改或者被保護。當RDAC中的值被改變后,新的值也可以被存入E2MEM中。之后,新的值將在系統(tǒng)重新上電后自動加載到RDAC中。
ADN2850的指令系統(tǒng)包含16種模式,通過一個標準SPI串行接口傳送24位命令字決定,高位在先。24位命令字的前4位是命令,接下來4位是地址,后面16位是數(shù)據(jù)。這些指令可以用于RDAC的值的寫入,E2MEM值的改寫與復(fù)原,電阻值的回讀等。
2 SPI接口簡介
SPI是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用4根線,節(jié)約了芯片的管腳,同時為PCB的布局上節(jié)省空間。正是出于這種簡單易用的特性,現(xiàn)在越來越多的芯片集成了這種通信協(xié)議。
SPI的通信以主從方式工作,這種模式通常有1個主設(shè)備和1個或多個從設(shè)備,一般需要4根線,事實上3根也可以(單向傳輸時)。其也是所有基于SPI的設(shè)備共有的,它們是SDI(數(shù)據(jù)輸入),SDO(數(shù)據(jù)輸出),SCLK(時鐘),CS(片選)。由SCLK提供時鐘脈沖,SDI,SDO則基于此脈沖完成數(shù)據(jù)傳輸。數(shù)據(jù)輸出通過SDO線,數(shù)據(jù)在時鐘上升沿或下降沿時改變,在緊接著的下降沿或上升沿被讀取。完成1位數(shù)據(jù)傳輸,輸入也使用同樣原理。這樣,在至少8次時鐘信號的改變(上沿和下沿為1次),就可以完成8位數(shù)據(jù)的傳輸。ADN2850的SPI接口的4根引腳線分別是SDI,SDO,CLK,CS。
這里利用FPGA對SPI接口進行配置。為了方便對輸入SPI的指令的隨時改變,而不需要程序的重復(fù)寫入,24位指令通過串口輸入到FPGA。串口通信由微機上的串口調(diào)試助手協(xié)助進行。由于少了重新寫入程序的時間,從而調(diào)試速度和效率明顯增高。
3 串口簡介
串口是計算機上一種通用的設(shè)備通信的協(xié)議,可以用于獲取遠程采集設(shè)備的數(shù)據(jù)。
串口按位(b)發(fā)送和接收字節(jié)。通信使用3根線完成:地線、發(fā)送、接收功能。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時在另一根線上接收數(shù)據(jù)。其他線用于握手,但不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗位。波特率是衡量通信速度的參數(shù),它表示每秒鐘傳送的bit的個數(shù)。數(shù)據(jù)位則是衡量通信中實際數(shù)據(jù)位的參數(shù)。停止位一般是為了平衡兩個系統(tǒng)的時鐘而在實際數(shù)據(jù)位結(jié)束后傳送的。奇偶校驗位是串口通信中檢錯的一種方式,沒有校驗位也可以。整個系統(tǒng)的連接框圖如圖2所示。
4 ADN2850的串口控制
用串口控制ADN2850的流程圖如圖3所示。一旦有指令從串口發(fā)送,就重新經(jīng)FPGA后寫入ADN2850。
Verilog HDL程序分為3個模塊,分別為復(fù)位rstgen模塊,串口接收datagen模塊和SPI接口操作spi模塊。24位指令由微機輸入,經(jīng)串口接收模塊后輸出1個24位數(shù)據(jù)和1個標志位,用于SPI接口模塊把數(shù)據(jù)傳入ADN2850中。
datagen模塊關(guān)鍵程序如下所示(相關(guān)變量聲明省略):
該程序已經(jīng)通過前仿真,并在Altera公司的EP2C70 FPGA上通過了驗證,達到了預(yù)期的效果。
5 結(jié) 語
通過串口的應(yīng)用,ADN2850的控制過程變的很方便。而串口本身連線簡單占用資源少,應(yīng)用也比較廣泛,所以數(shù)字電位器ADN2850的串口控制不失為一種可行的方法。