基于可編程數字電位器在A(yíng)VR單片機中的應用
1 引言
AVR嵌入式單片機具有豐富的硬件、軟件資源,其中的串行I2C接口能滿(mǎn)足很多應用場(chǎng)合的要求,兩個(gè)AVR單片機通過(guò)I2C總線(xiàn)直接連接就可實(shí)現單片機相互通信;AVR單片機還可以和任何具有I2C總線(xiàn)接口的外設直接連接而無(wú)須其它硬件電路支持。而X9221系列可編程數字電位器在智能測試設備上應用非常廣泛,通過(guò)I2C總線(xiàn)可以簡(jiǎn)單地構成單片機與各種外設之間乃至與計算機之間的通信,建立友好的人機界面聯(lián)系。硬件設計簡(jiǎn)單、靈活,只需要將所有設備的SDA和SCL信號線(xiàn)分別并聯(lián)在一起并加上拉電阻即可,有助于提高設備的自動(dòng)化水平、可靠性、穩定性及電氣裝配的工藝性。AVR單片機和X9221系列可編程數字電位器都有內置的E2ROM單元,可以非常方便地為用戶(hù)保留一些工藝參數;X9221系列電位器0~63級的變化可以將電位器調節到手動(dòng)無(wú)法實(shí)現的平滑級別,調節過(guò)程中不會(huì )產(chǎn)生噪聲且壽命長(cháng)、不受機械振動(dòng)污染潮濕影響等。
2 X9221系列數字電位器介紹
2.1電氣特性及硬件結構原理
X9221系列電位器共有15種規格型號,有雙列直插DIP20和表面貼裝SOIC20兩種封裝。電源電壓民品級、工業(yè)級為4.5~5.5V,軍品級為2.7~5.5V;一組封裝芯片內有兩個(gè)數字電位器,參見(jiàn)圖1,X9221系列電位器封裝及引腳功能。內置的E2ROM單元,可以在掉電時(shí)將數據很好地保存,上電時(shí)自動(dòng)加載到自己的RAM單元,電位器接口是標準的I2C總線(xiàn),其中的數據寄存器可通過(guò)I2C總線(xiàn)進(jìn)行讀寫(xiě)操作;電位器滑動(dòng)端(VW0/RW0,VW1/RW1)相當于普通電位器中間抽頭,是無(wú)摩擦"觸點(diǎn)"。
X9221系列電位器總電阻配置有3種阻值2 kΩ、10kΩ、50kΩ,用戶(hù)可根據自己的設計需求來(lái)選型。每一個(gè)芯片有A0~A3四位二進(jìn)制編程的器件地址以區分I2C總線(xiàn)上接入的不同外設,因此,一條總線(xiàn)上最多可接入16個(gè)X9221器件。器件內部有兩組類(lèi)型的寄存器"DATA"和"WCR",他們的訪(fǎng)問(wèn)則由串行數據線(xiàn)上的命令字來(lái)確定。電阻陣列通過(guò)內部編碼可以有64種狀態(tài),0~63種狀態(tài)的連續變化,相當于電位器中心抽頭從普通電位器的一端滑動(dòng)到另一端;所有的寄存器都可以通過(guò)I2C總線(xiàn)進(jìn)行雙向操作,即可讀可寫(xiě)。
"在線(xiàn)"實(shí)時(shí)的調節電位器"中間抽頭位置"可以有3種方法:通過(guò)I2C總線(xiàn)向WCR寄存器寫(xiě)數據(串行加載)、通過(guò)對相應的DATA類(lèi)寄存器直接寫(xiě)數據(并行加載)、以及增量減量命令(下面會(huì )討論到)直接寫(xiě)數據;概念上電位器"中間抽頭位置"可以由"WCR"寄存器來(lái)替代,其另一類(lèi)寄存器可以由"DATA"寄存器來(lái)替代。
2.2數字電位器I2C總線(xiàn)時(shí)序及指令
2.2.1一般I2C總線(xiàn)通信時(shí)序
X9221系列數字電位器其接口是按標準的I2C總線(xiàn)設計的,因此,硬件連接非常簡(jiǎn)單,只需把串行時(shí)鐘線(xiàn)SCL、串行數據線(xiàn)SDA與之對應相連即可。其通信完全符合I2C總線(xiàn)協(xié)議要求,串行時(shí)鐘線(xiàn)SCL、串行數據線(xiàn)SDA按照規定的協(xié)議產(chǎn)生一序列脈沖串,進(jìn)而完成傳輸一組數據的任務(wù)。參見(jiàn)圖2 I2C總線(xiàn)通信時(shí)序。
X9221系列數字電位器完全以從機的身份出現在I2C總線(xiàn)上,它不可以主機的身份出現在I2C總線(xiàn)上,也就是說(shuō)對其寄存器的讀寫(xiě)操作都受控于主機,這一點(diǎn)一定要在硬件和軟件設計上留意。當主機發(fā)出"START"信號后,從機(X9221A)芯片即將拉高SDA線(xiàn),表明放棄數據線(xiàn)權限由主機控制,主機發(fā)送一個(gè)字節后再由從機(X9221A)芯片自動(dòng)拉低SDA線(xiàn),表明數據收到,如果此時(shí)從機將SDA線(xiàn)拉不低,表明從機沒(méi)有正常接受數據,主機必須啟動(dòng)下一個(gè)寫(xiě)周期??梢岳斫鉃橹鳈C每發(fā)送一個(gè)字節后都會(huì )等待一個(gè)ACK回答響應信號,否則,主機認為從機(X9221A)沒(méi)有正常接收數據。
2.2.2 X9221指令表
表1是X9221所有指令說(shuō)明,其中前4種指令的正常執行需要在串行數據線(xiàn)上至少有3個(gè)步驟:①通過(guò)數據線(xiàn)寫(xiě)從機地址;②寫(xiě)指令;③寫(xiě)數據。才能完成一個(gè)寄存器的讀或寫(xiě),這4種指令適用于X9221三字節時(shí)序格式操作。如果是寫(xiě)在WCR類(lèi)型的寄存器中,掉電后數據丟失,寫(xiě)在DATA類(lèi)型的寄存器中,掉電后數據存在其中;全局轉換的4種指令的正常執行需要在串行數據線(xiàn)上至少有2個(gè)步驟:①通過(guò)數據線(xiàn)寫(xiě)從機地址、②寫(xiě)指令,才能完成所有寄存器之間的數據交換,適用于X9221兩字節時(shí)序格式操作;最后一種"+/-"指令相當于"在線(xiàn)"上下調節電位器中間抽頭,比較直觀(guān),很好理解。"+/-"指令僅訪(fǎng)問(wèn)WCR類(lèi)型寄存器,且只是寫(xiě)操作,如果數據線(xiàn)SDA保持高電平,下一個(gè)時(shí)鐘信號SCL周期到來(lái),WCR寄存器數據"+1"。如果數據線(xiàn)SDA保持低電平,下一個(gè)時(shí)鐘信號SCL周期到來(lái),WCR寄存器數據"-1"。然而,不管哪種命令,只要寫(xiě)DATA類(lèi)型的寄存器(芯片內的E2ROM存儲單元),寫(xiě)操作要花費大約10 ms時(shí)間才能完成,在設計通信軟件時(shí)一定要特別留意。
3 AVR系列單片機與數字電位器硬件和軟件設計
3.1 X9221數字電位器與AVR系列單片機硬件接口
X9221數字電位器與AVR系列單片機硬件接口如圖3所示。硬件連接非常簡(jiǎn)單,只需將所有設備串行數據線(xiàn)SDA、串行時(shí)鐘線(xiàn)SCL相連接并接10 kΩ左右的上拉電阻即可。連接在I2C總線(xiàn)上的邏輯電平為"線(xiàn)與"邏輯關(guān)系,只要有一個(gè)設備將其拉低,總線(xiàn)上即出現低電平,當所有設備總線(xiàn)都懸掛起時(shí)呈現高阻狀態(tài)。主機發(fā)送模式就是向其中一個(gè)外設寫(xiě)入數據,首先產(chǎn)生一個(gè)啟動(dòng)信號"START","START"發(fā)送成功后才向外設發(fā)送設備地址,地址發(fā)送成功后,再發(fā)送數據,數據可以是1~N個(gè)字節,所有數據發(fā)送完成,最后發(fā)送"STOP"完成主機寫(xiě)的過(guò)程。主機接收模式也是一樣的,過(guò)程類(lèi)似。對X9221來(lái)說(shuō)地址發(fā)送完成后,必須發(fā)送指令模式,告訴X9221目前將做什么,指令的含義上面已提到,指令模式后是一組數據,其它過(guò)程一樣。
為了使I2C總線(xiàn)處于正常狀態(tài),所有總線(xiàn)上的設備必須加電,如果有一個(gè)設備沒(méi)有加電,總線(xiàn)將處于不正常工作狀態(tài)。在總線(xiàn)上有幾個(gè)設備同時(shí)欲將發(fā)送數據時(shí),競爭中某主機發(fā)現仲裁失敗后,應立即回到從機狀態(tài)或放棄總線(xiàn)請求,保證獲取總線(xiàn)控制權的主機正常發(fā)送數據;不同的主機有不同的總線(xiàn)時(shí)鐘頻率,通過(guò)SCL信號"線(xiàn)與"來(lái)保證,即高電平為高電平中最短的,低電平為低電平中最長(cháng)的,也就是說(shuō)協(xié)議"照顧"了速度最慢的設備;集結在總線(xiàn)上所有的傳送必須包含相同數目的數據包,否則,多主機系統中仲裁結果無(wú)法定義,這在設計上要特別注意。
3.2 X9221數字電位器與AVR系列單片機通信軟件設計
下面是一個(gè)通過(guò)查詢(xún)由atmega16單片機向X9221發(fā)送數據的例程,在這個(gè)例程中需要注意的是TWINT標志利用軟件寫(xiě)"1"進(jìn)行清零(清除硬件置位標志),而當前發(fā)送完成后由硬件自動(dòng)將TWINT標志置"1",TWINT標志是不能通過(guò)硬件清零的;每次通過(guò)檢查T(mén)WINT標志判斷當前發(fā)送是否完成,通過(guò)讀取狀態(tài)寄存器TWSR的值判斷發(fā)送的數據是否正確。
START:
LDI R16,$A4;設置AVR單片機I2C總線(xiàn)控制寄存器
OUT TWCR,R16;軟件清除TWINT標志W(wǎng)AIT1:
IN R16,TWCR;讀取控制寄存器TWCR
SBRS R16,7;等待硬件置位TWINT標志
RJMP WAIT1;TWINT標志沒(méi)置位,循環(huán)檢查等待
IN R16,TWSR;讀取狀態(tài)寄存器TWSR
ANDI R16,$F8;屏蔽無(wú)效位
CPI R16,$08:檢查"START"信號是否發(fā)送成功
BRNE ERROR;"START"信號發(fā)送未成功,轉入出錯處理
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ā)送未成功,轉入出錯處理
LDI R16,$2F;設置所發(fā)送的數據(0~63有效,例中為47)
OUT TWDR,R16;數據輸出到數據寄存器TWDR
LDI R16,$84
OUT TWCR,R16;軟件清除TWINT標志;檢查數據"2F"是否發(fā)送完成,類(lèi)似于上述循環(huán)繼續
LDI R16,$94;發(fā)送"STOP"信號,一次'$2F'數據發(fā)送完成
OUT TWCR,R16
ERROR:···;出錯處理過(guò)程
END
在此例程中,器件的地址對X9221來(lái)說(shuō)為56,其中"5"是器件本身固有的以區別于其它類(lèi)型的設備,而"6"是設計硬件時(shí)規定的,可以是"0~F"任何十六進(jìn)制數值;例程中AVR單片機僅作為主機使用且向X9221發(fā)送數據,其實(shí)從X9221中讀取當前數據也是一樣的。本例程采用查詢(xún)方式,程序顯得繁瑣,但是如果采用中斷方式的話(huà),程序就會(huì )顯得簡(jiǎn)單多,只要標志SREG寄存器中"I"位和I2C總線(xiàn)控制寄存器中的"TEWIE"置"1",即中斷使能有效,當"TWINT"標志置"1"立即產(chǎn)生中斷請求,表明完成當前數據發(fā)送完成,可以準備下一個(gè)字節數據發(fā)送或停止發(fā)送等操作。
4 X9221可編程數字電位器在半導體專(zhuān)用設備一些應用研究
4.1用于測量微小電壓變化
圖4是微小電壓測量電路模型,用于芯片鍵合設備中去檢測吸頭上是否有芯片吸附以及吸頭是否堵塞、或者芯片是否丟失等現象。當內徑為大約0.1~0.15 mm的吸頭去吸附一個(gè)小芯片時(shí),如果芯片較透明,光敏傳感器檢測出來(lái)的電壓變化較小,一般在10~50 mV間;同樣當吸頭吸附一個(gè)小芯片時(shí),氣路真空的壓力也會(huì )產(chǎn)生變化,這種壓力的變化以傳感器電壓變化輸出。為了改變電位器"中間抽頭"以便與傳感器檢測輸入電壓相匹配,計算機通過(guò)RS232接口向單片機發(fā)送數據,單片機收到數據后轉發(fā)給X9221可編程數字電位器以改變基準電壓值。比較基準電壓U∑+按下式確定:
U∑+是LM393運放同相輸入端電壓(在這種狀態(tài)下,考慮到前級傳感器輸出基本上處于放大狀態(tài),所用傳感器電源電壓為+5 V,最高輸出電壓按3.5 V計算)
N是0~63共64種狀態(tài)變化值,那么,當U∑+從0~3.5 V變化時(shí),最小分辨率可以達到55 mV左右,用手工進(jìn)行一般電位器調節達到這樣的分辨率是難以掌控的。
基準電壓(即U∑+)通過(guò)機器的人機界面可以"直接調節",如果將電位器數值進(jìn)行標定,隨時(shí)還可以看到當前的基準電壓大小。傳感器輸出電壓與基準電壓比較,使電壓比較器輸出反應當前的狀態(tài),不同的時(shí)刻高低電平代表不同的意義,如"吸頭阻塞"、"芯片丟片"、"真空不足"等。
4.2測量微小電流變化
圖5是微小電流測量電路模型,用于引線(xiàn)鍵合設備中去檢測斷線(xiàn)、連線(xiàn)、短路等情況,被測器件是一個(gè)半導體元件,當在焊盤(pán)上鍵合上一根金線(xiàn)時(shí),通過(guò)檢測漏電流來(lái)判斷這條金線(xiàn)與芯片鍵合過(guò)程中是否存在"斷線(xiàn)"、"連線(xiàn)"、"短路"等情況。計算機通過(guò)界面操作發(fā)送指令以改變X9221可編程數字電位器的阻值,進(jìn)而改變電壓源的放大倍數以改變加在被測元件的電壓,從而達到適應不同品種的半導體器件性能要求。
設:信號源的輸出為Us,運放LM324輸出為U0,X9221電阻為Rx,被測元件阻抗為Rz,被測元件流過(guò)的漏電流為I0,則用以下兩個(gè)表達即可表達它們之間的關(guān)系:
通過(guò)主機界面改變Rx可編程電阻值,即可以改變U0,U0的改變等于改變了I0,而I0的改變等于改變了流過(guò)被測器件的最大允許電流,從而保護了被測器件不會(huì )因為檢測漏電流而損壞,通過(guò)檢測被測器件上施加的電壓和U0之差值即可判斷漏電流大小,從而檢測金線(xiàn)是否與被測器件焊盤(pán)點(diǎn)鍵合上。I0是根據不同器件在工藝參數上需要經(jīng)常調節的量,以適應不同場(chǎng)合的要求。
5 結束語(yǔ)
可編程數字電位器的最大優(yōu)點(diǎn)在于直接可以和帶有I2C總線(xiàn)單片機相連而無(wú)需特殊設計,上位機可以隨機讀取電位器當前設定值。利用它的這些優(yōu)點(diǎn),可以提高設備儀器的智能化水平,特別是在帶有I2C總線(xiàn)的嵌入式單片機中應用十分靈活簡(jiǎn)單。隨著(zhù)電子技術(shù)的飛速發(fā)展,人們對設備、儀器以及家用電器的追求已不再僅僅滿(mǎn)足功能使用上,而是在產(chǎn)品應用的人性化上要求越來(lái)越高,由于大多數自動(dòng)化設備上,都具有友好的人機界面,人們通過(guò)計算機界面想完成所有操作,比如調節一個(gè)電位器以調節電流、電壓或者電機速度、轉矩、頻率等物理量,利用可編程數字電位器完全可以通過(guò)界面完成。適時(shí)采用可編程數字電位器不但可以降低成本、簡(jiǎn)化電路設計、提高可靠性,而且可以使設計更加人性化。另外,AVR單片機可以通過(guò)JTAG接口完成仿真調試、下載程序;片內有FLASH和E2ROM存儲單元,有標準的串行接口、I2C總線(xiàn)接口、SPI接口增強了其硬件功能;支持C語(yǔ)言編程,便于掌握C語(yǔ)言者無(wú)需太多地了解硬件就能進(jìn)行一些編程。
評論