《電子技術(shù)應用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應用 > 基于可編程數(shù)字電位器在AVR單片機中的應用
基于可編程數(shù)字電位器在AVR單片機中的應用
電子工業(yè)專用設(shè)備
謝珺耀
摘要: AVR單片機和X9221系列可編程數(shù)字電位器都有內(nèi)置的E2ROM單元,可以非常方便地為用戶保留一些工藝參數(shù),;X9221系列電位器0~63級的變化可以將電位器調(diào)節(jié)到手動無法實現(xiàn)的平滑級別,,調(diào)節(jié)過程中不會產(chǎn)生噪聲且壽命長、不受機械振動污染潮濕影響等,。
關(guān)鍵詞: avr 數(shù)字電位器 X9221
Abstract:
Key words :

1 引言  

    AVR" title="AVR">AVR嵌入式單片機具有豐富的硬件,、軟件資源,其中的串行I2C接口能滿足很多應用場合的要求,,兩個AVR單片機通過I2C總線直接連接就可實現(xiàn)單片機相互通信,;AVR單片機還可以和任何具有I2C總線接口的外設(shè)直接連接而無須其它硬件電路支持。而X9221" title="X9221">X9221系列可編程數(shù)字電位器" title="數(shù)字電位器">數(shù)字電位器在智能測試設(shè)備上應用非常廣泛,,通過I2C總線可以簡單地構(gòu)成單片機與各種外設(shè)之間乃至與計算機之間的通信,,建立友好的人機界面聯(lián)系。硬件設(shè)計簡單,、靈活,,只需要將所有設(shè)備的SDA和SCL信號線分別并聯(lián)在一起并加上拉電阻即可,有助于提高設(shè)備的自動化水平,、可靠性,、穩(wěn)定性及電氣裝配的工藝性。AVR單片機和X9221系列可編程數(shù)字電位器都有內(nèi)置的E2ROM單元,,可以非常方便地為用戶保留一些工藝參數(shù),;X9221系列電位器0~63級的變化可以將電位器調(diào)節(jié)到手動無法實現(xiàn)的平滑級別,調(diào)節(jié)過程中不會產(chǎn)生噪聲且壽命長、不受機械振動污染潮濕影響等,。  

2 X9221系列數(shù)字電位器介紹  

2.1電氣特性及硬件結(jié)構(gòu)原理  

    X9221系列電位器共有15種規(guī)格型號,,有雙列直插DIP20和表面貼裝SOIC20兩種封裝。電源電壓民品級,、工業(yè)級為4.5~5.5V,,軍品級為2.7~5.5V;一組封裝芯片內(nèi)有兩個數(shù)字電位器,,參見圖1,,X9221系列電位器封裝及引腳功能。內(nèi)置的E2ROM單元,,可以在掉電時將數(shù)據(jù)很好地保存,,上電時自動加載到自己的RAM單元,電位器接口是標準的I2C總線,,其中的數(shù)據(jù)寄存器可通過I2C總線進行讀寫操作,;電位器滑動端(VW0/RW0,VW1/RW1)相當于普通電位器中間抽頭,,是無摩擦"觸點",。  

     X9221系列電位器總電阻配置有3種阻值2 kΩ、10kΩ,、50kΩ,,用戶可根據(jù)自己的設(shè)計需求來選型。每一個芯片有A0~A3四位二進制編程的器件地址以區(qū)分I2C總線上接入的不同外設(shè),,因此,,一條總線上最多可接入16個X9221器件。器件內(nèi)部有兩組類型的寄存器"DATA"和"WCR",,他們的訪問則由串行數(shù)據(jù)線上的命令字來確定,。電阻陣列通過內(nèi)部編碼可以有64種狀態(tài),0~63種狀態(tài)的連續(xù)變化,,相當于電位器中心抽頭從普通電位器的一端滑動到另一端,;所有的寄存器都可以通過I2C總線進行雙向操作,即可讀可寫,。  

    "在線"實時的調(diào)節(jié)電位器"中間抽頭位置"可以有3種方法:通過I2C總線向WCR寄存器寫數(shù)據(jù)(串行加載)、通過對相應的DATA類寄存器直接寫數(shù)據(jù)(并行加載),、以及增量減量命令(下面會討論到)直接寫數(shù)據(jù),;概念上電位器"中間抽頭位置"可以由"WCR"寄存器來替代,其另一類寄存器可以由"DATA"寄存器來替代,。  

2.2數(shù)字電位器I2C總線時序及指令  

2.2.1一般I2C總線通信時序  

    X9221系列數(shù)字電位器其接口是按標準的I2C總線設(shè)計的,,因此,硬件連接非常簡單,只需把串行時鐘線SCL,、串行數(shù)據(jù)線SDA與之對應相連即可,。其通信完全符合I2C總線協(xié)議要求,串行時鐘線SCL,、串行數(shù)據(jù)線SDA按照規(guī)定的協(xié)議產(chǎn)生一序列脈沖串,,進而完成傳輸一組數(shù)據(jù)的任務。參見圖2 I2C總線通信時序,。  

    X9221系列數(shù)字電位器完全以從機的身份出現(xiàn)在I2C總線上,,它不可以主機的身份出現(xiàn)在I2C總線上,也就是說對其寄存器的讀寫操作都受控于主機,,這一點一定要在硬件和軟件設(shè)計上留意,。當主機發(fā)出"START"信號后,從機(X9221A)芯片即將拉高SDA線,,表明放棄數(shù)據(jù)線權(quán)限由主機控制,,主機發(fā)送一個字節(jié)后再由從機(X9221A)芯片自動拉低SDA線,表明數(shù)據(jù)收到,,如果此時從機將SDA線拉不低,,表明從機沒有正常接受數(shù)據(jù),主機必須啟動下一個寫周期,??梢岳斫鉃橹鳈C每發(fā)送一個字節(jié)后都會等待一個ACK回答響應信號,否則,,主機認為從機(X9221A)沒有正常接收數(shù)據(jù),。  

2.2.2 X9221指令表  

    表1是X9221所有指令說明,其中前4種指令的正常執(zhí)行需要在串行數(shù)據(jù)線上至少有3個步驟:①通過數(shù)據(jù)線寫從機地址,;②寫指令,;③寫數(shù)據(jù)。才能完成一個寄存器的讀或?qū)?,這4種指令適用于X9221三字節(jié)時序格式操作,。如果是寫在WCR類型的寄存器中,掉電后數(shù)據(jù)丟失,,寫在DATA類型的寄存器中,,掉電后數(shù)據(jù)存在其中;全局轉(zhuǎn)換的4種指令的正常執(zhí)行需要在串行數(shù)據(jù)線上至少有2個步驟:①通過數(shù)據(jù)線寫從機地址,、②寫指令,,才能完成所有寄存器之間的數(shù)據(jù)交換,適用于X9221兩字節(jié)時序格式操作,;最后一種"+/-"指令相當于"在線"上下調(diào)節(jié)電位器中間抽頭,,比較直觀,,很好理解。"+/-"指令僅訪問WCR類型寄存器,,且只是寫操作,,如果數(shù)據(jù)線SDA保持高電平,下一個時鐘信號SCL周期到來,,WCR寄存器數(shù)據(jù)"+1",。如果數(shù)據(jù)線SDA保持低電平,下一個時鐘信號SCL周期到來,,WCR寄存器數(shù)據(jù)"-1",。然而,不管哪種命令,,只要寫DATA類型的寄存器(芯片內(nèi)的E2ROM存儲單元),,寫操作要花費大約10 ms時間才能完成,在設(shè)計通信軟件時一定要特別留意,。

3 AVR系列單片機與數(shù)字電位器硬件和軟件設(shè)計  

3.1 X9221數(shù)字電位器與AVR系列單片機硬件接口  

    X9221數(shù)字電位器與AVR系列單片機硬件接口如圖3所示,。硬件連接非常簡單,只需將所有設(shè)備串行數(shù)據(jù)線SDA,、串行時鐘線SCL相連接并接10 kΩ左右的上拉電阻即可,。連接在I2C總線上的邏輯電平為"線與"邏輯關(guān)系,只要有一個設(shè)備將其拉低,,總線上即出現(xiàn)低電平,,當所有設(shè)備總線都懸掛起時呈現(xiàn)高阻狀態(tài)。主機發(fā)送模式就是向其中一個外設(shè)寫入數(shù)據(jù),,首先產(chǎn)生一個啟動信號"START",,"START"發(fā)送成功后才向外設(shè)發(fā)送設(shè)備地址,地址發(fā)送成功后,,再發(fā)送數(shù)據(jù),,數(shù)據(jù)可以是1~N個字節(jié),所有數(shù)據(jù)發(fā)送完成,,最后發(fā)送"STOP"完成主機寫的過程,。主機接收模式也是一樣的,過程類似,。對X9221來說地址發(fā)送完成后,,必須發(fā)送指令模式,告訴X9221目前將做什么,,指令的含義上面已提到,,指令模式后是一組數(shù)據(jù),其它過程一樣,。  

    為了使I2C總線處于正常狀態(tài),,所有總線上的設(shè)備必須加電,如果有一個設(shè)備沒有加電,,總線將處于不正常工作狀態(tài),。在總線上有幾個設(shè)備同時欲將發(fā)送數(shù)據(jù)時,競爭中某主機發(fā)現(xiàn)仲裁失敗后,,應立即回到從機狀態(tài)或放棄總線請求,,保證獲取總線控制權(quán)的主機正常發(fā)送數(shù)據(jù);不同的主機有不同的總線時鐘頻率,,通過SCL信號"線與"來保證,,即高電平為高電平中最短的,低電平為低電平中最長的,,也就是說協(xié)議"照顧"了速度最慢的設(shè)備,;集結(jié)在總線上所有的傳送必須包含相同數(shù)目的數(shù)據(jù)包,否則,,多主機系統(tǒng)中仲裁結(jié)果無法定義,,這在設(shè)計上要特別注意。  

3.2 X9221數(shù)字電位器與AVR系列單片機通信軟件設(shè)計  

    下面是一個通過查詢由atmega16單片機向X9221發(fā)送數(shù)據(jù)的例程,,在這個例程中需要注意的是TWINT標志利用軟件寫"1"進行清零(清除硬件置位標志),,而當前發(fā)送完成后由硬件自動將TWINT標志置"1",TWINT標志是不能通過硬件清零的,;每次通過檢查TWINT標志判斷當前發(fā)送是否完成,,通過讀取狀態(tài)寄存器TWSR的值判斷發(fā)送的數(shù)據(jù)是否正確。  

START:  

LDI R16,,$A4,;設(shè)置AVR單片機I2C總線控制寄存器  

OUT TWCR,R16,;軟件清除TWINT標志W(wǎng)AIT1:  

IN R16,,TWCR;讀取控制寄存器TWCR  

SBRS R16,,7,;等待硬件置位TWINT標志  

RJMP WAIT1;TWINT標志沒置位,,循環(huán)檢查等待  

IN R16,,TWSR;讀取狀態(tài)寄存器TWSR  

ANDI R16,,$F8,;屏蔽無效位  

CPI R16,$08:檢查"START"信號是否發(fā)送成功  

BRNE ERROR,;"START"信號發(fā)送未成功,,轉(zhuǎn)入出錯處理  

LDI R16,,$56;發(fā)送X9221器件地址56="5"器件標識,,"6"器件地址  

OUT TWDR,,R16  

LDI R16,$84  

OUT TWCR,,R16,;軟件清除TWINT標志  

IN R16,TWSR  

ANDI R16,,$F8  

CPI R16,,$18;檢查X9221器件地址是否發(fā)送成功  

BRNE ERROR,;X9221器件地址發(fā)送未成功,,轉(zhuǎn)入出錯處理  

LDI R16,$2F,;設(shè)置所發(fā)送的數(shù)據(jù)(0~63有效,,例中為47)  

OUT TWDR,R16,;數(shù)據(jù)輸出到數(shù)據(jù)寄存器TWDR  

LDI R16,,$84  

OUT TWCR,R16,;軟件清除TWINT標志,;檢查數(shù)據(jù)"2F"是否發(fā)送完成,類似于上述循環(huán)繼續(xù)
LDI R16,,$94,;發(fā)送"STOP"信號,一次'$2F'數(shù)據(jù)發(fā)送完成  

OUT TWCR,,R16  

ERROR:···,;出錯處理過程  

END  

    在此例程中,器件的地址對X9221來說為56,,其中"5"是器件本身固有的以區(qū)別于其它類型的設(shè)備,,而"6"是設(shè)計硬件時規(guī)定的,可以是"0~F"任何十六進制數(shù)值,;例程中AVR單片機僅作為主機使用且向X9221發(fā)送數(shù)據(jù),,其實從X9221中讀取當前數(shù)據(jù)也是一樣的。本例程采用查詢方式,,程序顯得繁瑣,,但是如果采用中斷方式的話,程序就會顯得簡單多,,只要標志SREG寄存器中"I"位和I2C總線控制寄存器中的"TEWIE"置"1",,即中斷使能有效,,當"TWINT"標志置"1"立即產(chǎn)生中斷請求,表明完成當前數(shù)據(jù)發(fā)送完成,,可以準備下一個字節(jié)數(shù)據(jù)發(fā)送或停止發(fā)送等操作,。  

4 X9221可編程數(shù)字電位器在半導體專用設(shè)備一些應用研究  

4.1用于測量微小電壓變化  

    圖4是微小電壓測量電路模型,用于芯片鍵合設(shè)備中去檢測吸頭上是否有芯片吸附以及吸頭是否堵塞,、或者芯片是否丟失等現(xiàn)象。當內(nèi)徑為大約0.1~0.15 mm的吸頭去吸附一個小芯片時,,如果芯片較透明,,光敏傳感器檢測出來的電壓變化較小,一般在10~50 mV間,;同樣當吸頭吸附一個小芯片時,,氣路真空的壓力也會產(chǎn)生變化,這種壓力的變化以傳感器電壓變化輸出,。為了改變電位器"中間抽頭"以便與傳感器檢測輸入電壓相匹配,,計算機通過RS232接口向單片機發(fā)送數(shù)據(jù),單片機收到數(shù)據(jù)后轉(zhuǎn)發(fā)給X9221可編程數(shù)字電位器以改變基準電壓值,。比較基準電壓U∑+按下式確定:  

    U∑+是LM393運放同相輸入端電壓(在這種狀態(tài)下,,考慮到前級傳感器輸出基本上處于放大狀態(tài),所用傳感器電源電壓為+5 V,,最高輸出電壓按3.5 V計算)  

    N是0~63共64種狀態(tài)變化值,,那么,當U∑+從0~3.5 V變化時,,最小分辨率可以達到55 mV左右,,用手工進行一般電位器調(diào)節(jié)達到這樣的分辨率是難以掌控的。  

    基準電壓(即U∑+)通過機器的人機界面可以"直接調(diào)節(jié)",,如果將電位器數(shù)值進行標定,,隨時還可以看到當前的基準電壓大小。傳感器輸出電壓與基準電壓比較,,使電壓比較器輸出反應當前的狀態(tài),,不同的時刻高低電平代表不同的意義,如"吸頭阻塞",、"芯片丟片",、"真空不足"等。  

4.2測量微小電流變化  

    圖5是微小電流測量電路模型,,用于引線鍵合設(shè)備中去檢測斷線,、連線、短路等情況,,被測器件是一個半導體元件,,當在焊盤上鍵合上一根金線時,,通過檢測漏電流來判斷這條金線與芯片鍵合過程中是否存在"斷線"、"連線",、"短路"等情況,。計算機通過界面操作發(fā)送指令以改變X9221可編程數(shù)字電位器的阻值,進而改變電壓源的放大倍數(shù)以改變加在被測元件的電壓,,從而達到適應不同品種的半導體器件性能要求,。  

    設(shè):信號源的輸出為Us,運放LM324輸出為U0,,X9221電阻為Rx,,被測元件阻抗為Rz,被測元件流過的漏電流為I0,,則用以下兩個表達即可表達它們之間的關(guān)系:  


  
     通過主機界面改變Rx可編程電阻值,,即可以改變U0,U0的改變等于改變了I0,,而I0的改變等于改變了流過被測器件的最大允許電流,,從而保護了被測器件不會因為檢測漏電流而損壞,通過檢測被測器件上施加的電壓和U0之差值即可判斷漏電流大小,,從而檢測金線是否與被測器件焊盤點鍵合上,。I0是根據(jù)不同器件在工藝參數(shù)上需要經(jīng)常調(diào)節(jié)的量,以適應不同場合的要求,。  

5 結(jié)束語  

    可編程數(shù)字電位器的最大優(yōu)點在于直接可以和帶有I2C總線單片機相連而無需特殊設(shè)計,,上位機可以隨機讀取電位器當前設(shè)定值。利用它的這些優(yōu)點,,可以提高設(shè)備儀器的智能化水平,,特別是在帶有I2C總線的嵌入式單片機中應用十分靈活簡單。隨著電子技術(shù)的飛速發(fā)展,,人們對設(shè)備,、儀器以及家用電器的追求已不再僅僅滿足功能使用上,而是在產(chǎn)品應用的人性化上要求越來越高,,由于大多數(shù)自動化設(shè)備上,,都具有友好的人機界面,人們通過計算機界面想完成所有操作,,比如調(diào)節(jié)一個電位器以調(diào)節(jié)電流,、電壓或者電機速度、轉(zhuǎn)矩,、頻率等物理量,,利用可編程數(shù)字電位器完全可以通過界面完成。適時采用可編程數(shù)字電位器不但可以降低成本、簡化電路設(shè)計,、提高可靠性,,而且可以使設(shè)計更加人性化。另外,,AVR單片機可以通過JTAG接口完成仿真調(diào)試,、下載程序;片內(nèi)有FLASH和E2ROM存儲單元,,有標準的串行接口,、I2C總線接口、SPI接口增強了其硬件功能,;支持C語言編程,,便于掌握C語言者無需太多地了解硬件就能進行一些編程。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。