I2C總線數(shù)字電位器原理及與單片機(jī)的接口設(shè)計(jì)上課講義_第1頁
I2C總線數(shù)字電位器原理及與單片機(jī)的接口設(shè)計(jì)上課講義_第2頁
I2C總線數(shù)字電位器原理及與單片機(jī)的接口設(shè)計(jì)上課講義_第3頁
I2C總線數(shù)字電位器原理及與單片機(jī)的接口設(shè)計(jì)上課講義_第4頁
I2C總線數(shù)字電位器原理及與單片機(jī)的接口設(shè)計(jì)上課講義_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Good is good, but better carries it.精益求精,善益求善。I2C總線數(shù)字電位器原理及與單片機(jī)的接口設(shè)計(jì)-I2C總線數(shù)字電位器原理及與單片機(jī)的接口設(shè)計(jì)湘潭工學(xué)院信息與電氣工程系(411201)黃采倫摘要I2C總線數(shù)字電位器是Xicor公司推出的數(shù)字電位器中較有代表性的一種,它集許多先進(jìn)特性于一體,倍受使用者矚目;本文介紹其特性、工作原理及與單片機(jī)的接口技術(shù)。關(guān)鍵詞數(shù)字電位器I2C總線單片機(jī)程序模塊1引言隨著I2C總線應(yīng)用的日益廣泛,兼容I2C總線的接口芯片及存儲器的品種也越來越多,其中數(shù)字電位器以其調(diào)節(jié)方便、使用壽命長、受物理環(huán)境的影響小、性能穩(wěn)定等特點(diǎn),已被廣

2、大電子工程技術(shù)人員所認(rèn)識;尤其是在音頻產(chǎn)品、控制領(lǐng)域等的應(yīng)用越來越受到人們的重視。I2C總線數(shù)字電位器是美國Xicor公司推出的X9系列數(shù)字電位器中較有代表性的一種。它是把幾個E2POT非易失性數(shù)字電位器集成在一起的單片CMOS微電路,具有二線串行I2C總線接口,易于軟件控制,可直接讀出、寫入滑動端位置,可級聯(lián)使用等先進(jìn)特性。本文以X9241為例說明。2結(jié)構(gòu)原理X9241內(nèi)部包括一個I2C接口和四個數(shù)字電位器。每個數(shù)字電位器由電阻陣列及與之對應(yīng)的滑動端計(jì)數(shù)寄存器WCR、四個8位數(shù)據(jù)寄存器R0R3等部分構(gòu)成。其引腳配置如圖1所示。2.1電阻陣列每個電阻陣列由63個串聯(lián)連接的分立的電阻段組成。每個

3、電阻陣列的物理終端等效于機(jī)械電位器的固定端(VH和VL輸入端)。每個陣列的VH和VL以及每個電阻段之間的接點(diǎn)(即抽頭)通過FET開關(guān)連接滑動輸出端VW;而滑動端VW在電阻陣列中的位置由WCR控制。圖1X9241引腳配置圖其中VW0、VW1、VW2及VW3分別為四個電位器的滑動端;VL0、VL1、VL2及VL3分別為四個電位器的低端;VH0、VH1、VH2及VH3分別為四個電位器的高端;A0、A1、A2及A3為地址線(用來設(shè)置從屬地址低4位);SDA及SCL分別為串行數(shù)據(jù)和串行時鐘;VCC及VSS分別為電源和地如果將四個電阻陣列中的兩個、三個或四個串聯(lián)起來可構(gòu)成127、190或253個抽頭的數(shù)字

4、電位器。X9241電位器電阻陣列的阻值種類根據(jù)后綴的不同而不同。當(dāng)分別為Y、W、U時,則電阻陣列分別為四個2k、四個10k、四個50k的數(shù)字電位器;而當(dāng)為M時,其內(nèi)部四個數(shù)字電位器阻值分別為2k、10k、10k、50k。2.2滑動端計(jì)數(shù)寄存器WCR滑動端計(jì)數(shù)寄存器WCR實(shí)際上是一個6位帶有譯碼輸出的計(jì)數(shù)器,用來實(shí)現(xiàn)選擇六十四選一的FET開關(guān)的位置,即控制滑動端在電阻陣列中的位置。WCR是一種易失性存貯器,其內(nèi)容可通過指令改寫,上電時裝入數(shù)據(jù)寄存器R0的內(nèi)容(注意:此值可能與斷電時的值不同)。2.3數(shù)據(jù)寄存器數(shù)據(jù)寄存器的內(nèi)容可由用戶讀出或?qū)懭耄鋬?nèi)容可傳輸?shù)交瑒佑?jì)數(shù)寄存器WCR以設(shè)置滑動端的位置

5、。每個數(shù)字電位器有四個8位非易失性數(shù)據(jù)寄存器R0R3。2.4串行接口X9241支持I2C串行雙向總線的定向規(guī)約:實(shí)際應(yīng)用時X9241為從器件,由主機(jī)啟動數(shù)據(jù)的傳輸,并為發(fā)送和接收操作提供時鐘。數(shù)據(jù)線SDA和時鐘線SCL的信號間關(guān)系(起始條件、終止條件及應(yīng)答條件)見圖2。3器件尋址及指令結(jié)構(gòu)3.1器件尋址在起始后,主器件輸出它所要訪問的從器件地址,該地址的格式如下:0101A3A2A1A0對于X9241來說,這個地址的高4位固定為:0101,低4位由物理的器件地址A0A3輸入端狀態(tài)決定。這樣,X9241把串行數(shù)據(jù)流與地址輸入端的狀態(tài)進(jìn)行比較,若所有位都比較成功,則該器件在總線上作出一個應(yīng)答響應(yīng)。

6、3.2指令結(jié)構(gòu)主器件在發(fā)送完起始條件及器件地址,且從器件作出應(yīng)答之后,送到X9241的下一個字節(jié)包括指令及寄存器指針的信息。其格式如下:I3I2I1I0P1P0R1R0其中低4位中前兩位(R0和R1)指出四個寄存器中的一個,后兩位(P0和P1)選擇四個電位器中的哪一個;高4位決定指令,X9241共有9條指令見表1。表1X9241指令指令I(lǐng)3I2I1I0P1P0R1R0功能說明ReadWCR10011/01/0讀P1、P0指定的滑動端計(jì)數(shù)寄存器內(nèi)容WriteWCR10101/01/0寫新值到P1、P0指定的滑動端計(jì)數(shù)寄存器中ReadDataRegister10111/01/01/01/0讀P1、

7、P0和R1、R0指定的寄存器內(nèi)容WriteDataRegister11001/01/01/01/0寫新值到P1、P0和R1、R0指定的寄存器中XFTDataRegistertoWCR11011/01/01/01/0傳輸由P1、P0和R1、R0指定的寄存器內(nèi)容到與它相關(guān)的WCR中XFTWCRtoDataRegister11101/01/01/01/0傳輸由P1、P0指定的WCR的內(nèi)容到R1、R0指定的寄存器中GlobalXFTDataRegistertoWCR00011/01/0傳輸由R1、R0指定的所有四個數(shù)據(jù)寄存器的內(nèi)容到與它們相應(yīng)的WCR中GlobalXFTWCRtoDataRegiste

8、r10001/01/0傳輸所有WCR中的內(nèi)容到與它們相應(yīng)的由R1、R0指定的數(shù)據(jù)寄存器中Increment/DecrementWiper00101/01/0使能增加/減少由P1、P0指定的滑動端計(jì)數(shù)寄存器(WCR)的內(nèi)容9條指令中包括四條兩字節(jié)指令,四條三字節(jié)指令和一條增加/減少指令。(1)兩字節(jié)指令:這四條兩字節(jié)指令用作在WCR與數(shù)據(jù)寄存器中的一個之間交換數(shù)據(jù);這種傳輸可以發(fā)生在四個電位器之一與它們的一個輔助寄存器之間,或全局性地發(fā)生在所有四個電位器與它們的一個輔助寄存器之間;操作時序見圖2(a)。(2)三字節(jié)指令:這四條指令是在主機(jī)和X9241之間傳輸數(shù)據(jù),無論是主機(jī)與一個數(shù)據(jù)寄存器或是主

9、機(jī)直接與WCR間都可以;這些指令是讀、寫WCR(即讀出、寫入選定電位器的當(dāng)前滑動端的位置)或讀、寫數(shù)據(jù)寄存器(即讀出、寫入選定的非易失性寄存器的內(nèi)容);操作時序見圖2(b)。(3)增加/減少指令:這條指令與其它的指令不同,一旦這條指令發(fā)出且X9241已用一個應(yīng)答來響應(yīng)后,主機(jī)才能夠以時鐘來觸發(fā)選定的滑動端升或降一個電阻段;這個操作的命令時序見圖2(c)。4電位器的串聯(lián)方式及控制X9241提供一個把陣列串聯(lián)起來的機(jī)構(gòu),可以把一個陣列的六十三個電阻元件與一個相鄰陣列的電阻元件串聯(lián)起來,其控制位在三字節(jié)的指令中。對于三字節(jié)的指令,其數(shù)據(jù)字節(jié)包括用來定義滑動端位置的6位(LSB)加上高2位:CM(串聯(lián)

10、方式CaseadeMode)和DW(禁止滑動端DisableWipe)。CM位的狀態(tài)用來使能或禁止串聯(lián)方式;當(dāng)WCR的CM位被置為“0”時,則電位器是正常工作方式;當(dāng)CM位置“1”,則與它相鄰的高序號的電位器串聯(lián)連接。例如電位器WCR1的位7被置為“1”,則POT1與POT2被串聯(lián)使用。DW位的狀態(tài)用于使能或禁止滑動端,當(dāng)WCR的DW位被置為“0”(或“1”)時,則滑動端被使能(或被禁止),禁止時該滑動端是電氣上隔離并且是浮空的,當(dāng)工作于串聯(lián)方式時,被串聯(lián)陣列的VH、VL及滑動端VW這三個輸出端必須在電氣上與外部連接,除了一個滑動端被使能以外,其余的滑動端必須被禁止。用戶可以通過改變WCR的內(nèi)

11、容來改變滑動端的位置。5與GMS90/97系列單片機(jī)的接口圖3是X9241與GMS90/97系列單片微機(jī)之間的一種有代表性的連接,筆者曾將該連接方法成功地用于音頻系統(tǒng)和智能儀表中,作為增益反饋電阻,這樣可在寬范圍內(nèi)由軟件編程來調(diào)整放大器的增益。在實(shí)際應(yīng)用系統(tǒng)設(shè)計(jì)中,采用I2C總線數(shù)字電位器可以收到降低成本、簡化電路的效果;然而在數(shù)字電位器帶來硬件設(shè)計(jì)簡化的同時,卻增加了軟件的工作量,原因是對其訪問需要一套嚴(yán)格而復(fù)雜的操作;假如有了接口程序模塊,使用I2C總線數(shù)字電位器就很方便了。為此,本文給出筆者已成功應(yīng)用的I2C總線數(shù)字電位器與GMS90/97系列單片機(jī)的接口程序模塊,讀者幾乎不需改動就可采

12、用;該程序模塊略加修改還可用于串行E2PROM的讀寫。在圖3的連接中,GMS97C51單片機(jī)的時鐘為6MHz。由于只連接一片X9241數(shù)字電位器,則地址A3A2A1A0=0000,故X9241的器件地址固定為50H。調(diào)用時將直接位02H用作滑動端的增減位,命令字節(jié)放30H單元,要寫入的數(shù)據(jù)放32H單元;程序執(zhí)行結(jié)束將讀出的數(shù)據(jù)放31H單元。其模塊程序清單如下:圖3GMS90/97系列單片機(jī)與X9241的典型連接E2POT驅(qū)動程序模塊RW9241:SCLBITP1.4SDABITP1.5INCDECBIT02H;滑動端的增減位DEVICEDATA50H;器件地址COMMANDEQU30H;命令字

13、節(jié)RD_DATAEQU31H;讀出的數(shù)據(jù)WR_DATAEQU32H;寫入的數(shù)據(jù)ACALLSTART_IC;置開始MOVA,#DEVICEACALLWR_BYTE;寫器件地址MOVA,COMMAND;根據(jù)命令及識別字散轉(zhuǎn)SWAPAANLA,#0FHCJNEA,#09H,XRW1;指令的高4位為09H表示R_WCRAJMPR_WCRXRW1:CJNEA,#0AH,XRW2;指令的高4位為0AH表示W(wǎng)_WCRAJMPW_WCRXRW2:CJNEA,#0BH,XRW3;指令的高4位為0BH表示R_ROM(讀寄存器)AJMPR_ROMXRW3:CJNEA,#0CH,XRW4;指令的高4位為0CH表示W(wǎng)_

14、ROM(寫寄存器)AJMPW_ROMXRW4:CJNEA,#0DH,XRW5;指令的高4位為0DH表示將寄存器中的值傳送到WCRAJMPROM_WCRXRW5:CJNEA,#0EH,XRW6;指令的高4位為0EH表示將WCR中的值傳送到寄存器AJMPWCR_ROMXRW6:CJNEA,#01H,XRW7;指令的高4位為01H表示全局寄存器中值傳送到WCRAJMPA_ROM_WCRXRW7:CJNEA,#08H,XRW8;指令的高4位為08H表示全局WCR中值傳送到寄存器AJMPA_WCR_ROMXRW8:CJNEA,#02H,XRW9;指令的高4位為02H表示指定的WCR增/減AJMPINC_

15、DECXRW9:ACALLSTOP_IC;命令執(zhí)行完畢,STOP并返回RETIR_WCR:MOVA,COMMAND;讀WCR子程序ACALLWR_BYTEACALLRD_BYTEMOVRD_DATA,AACALLACK_ICAJMPXRW9W_WCR:MOVA,COMMAND;寫WCR子程序ACALLWR_BYTEMOVA,WR_DATAACALLWR_BYTEAJMPXRW9R_ROM:MOVA,COMMAND;讀寄存器子程序ACALLWR_BYTEACALLRD_BYTEMOVRD_DATA,AACALLACK_ICAJMPXRW9W_ROM:MOVA,COMMAND;寫寄存器子程序ACA

16、LLWR_BYTEMOVA,WR_DATAACALLWR_BYTEAJMPXRW9ROM_WCR:MOVA,COMMAND;寄存器中數(shù)據(jù)送WCR子程序ACALLWR_BYTEAJMPXRW9WCR_ROM:MOVA,COMMAND;WCR中數(shù)據(jù)送寄存器子程序CALLWR_BYTEAJMPXRW9A_ROM_WCR:MOVA,COMMAND;全局寄存器中數(shù)據(jù)送WCR子程序ACALLWR_BYTEAJMPXRW9A_WCR_ROM:MOVA,COMMAND;全局WCR中數(shù)據(jù)送寄存器子程序ACALLWR_BYTEAJMPXRW9INC_DEC:MOVR7,#63MOVA,COMMAND;指定的WCR

17、增/減子程序ACALLWR_BYTEJBINCDEC,WCRINCCLRSDASETBSCLJMPIDCWCRINC:CLRSCLSETBSDAIDC:CLRSCLSETBSCLDJNZR7,IDCAJMPXRW9START_IC:SETBSDA;開始子程序SETBSCLCLRSDACLRSCLRETWR_BYTE:MOVB,#08;寫字節(jié)子程序,共寫8位WR_BYTE1:CLRSCLRLCA;向左移位至CYMOVSDA,C;數(shù)據(jù)輸出SETBSCLDJNZB,WR_BYTE1CLRSCLSETBSDASETBSCLJBSDA,$;檢測X9241E的應(yīng)答CLRSCLRETRD_BYTE:MOVB,#08;讀字節(jié)子程序,共讀8位RD_BYTE1:SE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論