IIC原理與應(yīng)用_第1頁
IIC原理與應(yīng)用_第2頁
IIC原理與應(yīng)用_第3頁
IIC原理與應(yīng)用_第4頁
IIC原理與應(yīng)用_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機中級教程 原理與應(yīng)用1 在器件(IC)之間,使用兩根信號線(SDA和SCL)串行的方法進行信息傳送的并允許若干兼容器件共享的二線總線,稱為。Inter Integrated Circuit單片機中級教程 原理與應(yīng)用2DECT cordless phone base-stationDigital Enhanced Cordless Telecommunications SDA(Serial DAta)線稱為串行數(shù)據(jù)線,其上傳輸雙向的數(shù)據(jù);SCL(Serial CLock)線稱為串行時鐘線,其上傳輸時鐘信號,用來同步串行數(shù)據(jù)線上的數(shù)據(jù)。 單片機中級教程 原理與應(yīng)用3 I2C總線上的器件,SD

2、A和SCL引腳都是一個開漏輸出端。單片機中級教程 原理與應(yīng)用4 掛接在I2C總線上的器件(或IC),根據(jù)其功能可分為兩種:主控器件和從控器件。 主控器件:控制總線存取,產(chǎn)生串行時鐘(SCL)信號,并產(chǎn)生啟動傳送信號及結(jié)束傳送信號的器件,總線必須由一個主控器件控制。主控器件一般稱主器件(主機)。 從控器件:在總線上被主控器件尋址的器件,它們根據(jù)主控器件的命令來接收和發(fā)送數(shù)據(jù)。從控器件一般稱從器件(從機)。單片機中級教程 原理與應(yīng)用5I2C總線系統(tǒng)是一個允許多主的系統(tǒng)。 系統(tǒng)中的某一器件有四種可能的工作方式:主發(fā)送方式、主接收方式、從發(fā)送方式和從接收方式。單片機中級教程 原理與應(yīng)用6 在I2C總線

3、上的所有器件是按照如下的數(shù)據(jù)傳輸協(xié)議協(xié)調(diào)工作的:據(jù)此定義以下總線條件: 總線不忙SCL=SDA=1只有當(dāng)總線不忙時,數(shù)據(jù)傳輸才能開始; 當(dāng)串行時鐘線為高電平時,串行數(shù)據(jù)線的變化將認為是傳送的開始或停止;當(dāng)串行時鐘線為低電平時,才允許串行數(shù)據(jù)線發(fā)生變化; 數(shù)據(jù)傳送期間,無論何時串行時鐘線為高電平,串行數(shù)據(jù)線必須保持穩(wěn)定。單片機中級教程 原理與應(yīng)用7 開始數(shù)據(jù)傳送 停止數(shù)據(jù)傳送起始信號(START)停止信號(STOP)單片機中級教程 原理與應(yīng)用8 數(shù)據(jù)有效(Data validity )單片機中級教程 原理與應(yīng)用9 應(yīng)答(Acknowledge)單片機中級教程 原理與應(yīng)用10單片機中級教程 原理與

4、應(yīng)用11主發(fā)送到從接收主機發(fā)送,從機接收,傳輸?shù)姆较虿粫淖儐纹瑱C中級教程 原理與應(yīng)用12從發(fā)送到主接收 主機在發(fā)送完第一個字節(jié)后,立即讀從機。第一次響應(yīng)仍由從機產(chǎn)生,在第一次響應(yīng)后主機變成接受器,從機變成發(fā)送器。停止條件由主機發(fā)出。單片機中級教程 原理與應(yīng)用13復(fù)合格式 傳輸改變方向的時侯,起始條件和從機地址都會被重復(fù),且R/W 位取反。 如果主機作為接收,發(fā)送一個重復(fù)起始條件,它之前應(yīng)該發(fā)送了一個不響應(yīng)信號(A)。單片機中級教程 原理與應(yīng)用14仲裁和時鐘發(fā)生時鐘同步單片機中級教程 原理與應(yīng)用15仲裁單片機中級教程 原理與應(yīng)用16 在主控器件和從控器件之間雙向傳送數(shù)據(jù); 無中央主控器件的多主

5、總線; 多主傳送時,不發(fā)生錯誤; 可以使用不同的位速率; 串行時鐘作為交接信號; 可用于測試和診斷目的。單片機中級教程 原理與應(yīng)用17 在單片機應(yīng)用系統(tǒng)中,單主結(jié)構(gòu)占絕大多數(shù)。在單主系統(tǒng)中,I2C總線的數(shù)據(jù)傳送狀態(tài)要簡單得多,沒有總線競爭與同步問題,只有作為主器件的單片機對I2C總線器件的讀/寫操作。這就簡化了模擬軟件的設(shè)計工作。 有I2C總線的單片機中,可以直接用I2C總線來進行系統(tǒng)的串行擴展;對于80C51系列單片機,大多數(shù)沒有I2C總線接口功能,而是采用軟件模擬雙向數(shù)據(jù)傳送協(xié)議的方法,來實現(xiàn)系統(tǒng)的串行擴展。單片機中級教程 原理與應(yīng)用181.利用模擬I2C擴展串行E2PROM(1) 串行E

6、 PROM24LC32的特點及引腳 24LC32是32 Kb(4 K8位)串行存取的電擦除可編程的只讀存儲器E2PROM 。特點:芯片對快速寫操作具有8個8B字節(jié)頁面、或者64字節(jié)的高速緩存器,并具有二線串行接口。在I2C上作從器件使用;單片機中級教程 原理與應(yīng)用19 可在電源電壓低到2.5V的條件下工作,芯片還有功率等待模式,以降低功耗;等待電流和額定電流分別為1A和3 mA(寫); 地址線允許8片24LC32連接到相同的總線上,得到256 Kb位地址空間。引腳:A0、A1、A2:芯片地址輸入端WP : 寫保護端單片機中級教程 原理與應(yīng)用20(2) 器件的尋址和操作控制字節(jié)和器件尋址單片機中

7、級教程 原理與應(yīng)用21 作為從器件,接收到的下兩個字節(jié)定義了第一個數(shù)據(jù)字節(jié)的地址。 由于僅用A0A11,所以最高4位地址碼必須為0。 但對于ATMEL公司的產(chǎn)品來說,無此規(guī)定。firstlast地址的最高有效字節(jié)的最高有效位最先發(fā)送。單片機中級教程 原理與應(yīng)用22寫操作字節(jié)寫 主器件發(fā)出開始條件以后,再發(fā)送R/W=0的控制字節(jié)到總線上。這指示被尋址的從接收器的兩個地址字節(jié)及一個數(shù)據(jù)字節(jié)將跟在第9個時鐘周期產(chǎn)生的確認(應(yīng)答)位之后。10100 主器件發(fā)送的下一個字節(jié)是字地址的高地址字節(jié),應(yīng)答后,接著是低地址字節(jié),再次應(yīng)答后,它們將被寫入24LC32的地址指針。隨后主器件發(fā)送寫入到被尋址的存儲器里

8、的數(shù)據(jù)字節(jié)。24LC32應(yīng)答后,主器件發(fā)出停止條件。R/W =0時,將啟動寫操作。單片機中級教程 原理與應(yīng)用23頁面寫 寫控制字節(jié)、字地址和第一個數(shù)據(jù)字節(jié)以與字節(jié)寫相同的方式發(fā)送到24LC32。但是替代產(chǎn)生停止條件,主器件可發(fā)送多達8頁的8個數(shù)據(jù)字節(jié)(總共64個字節(jié))。24LC32先將這些數(shù)據(jù)字節(jié)暫存在片內(nèi)的頁面高速緩存器中。 一旦接收到主器件的停止條件后,則內(nèi)部的寫周期開始,這些數(shù)據(jù)字節(jié)將從頁面高速緩存器中寫入E2PROM陣列。接收到每一個字節(jié)后,24LC32的低6位順序地址指針在內(nèi)部加1,高6位順序地址指針保持不變。單片機中級教程 原理與應(yīng)用24 如果主器件在產(chǎn)生停止條件以前要發(fā)送多于8個

9、字節(jié)的數(shù)據(jù)(越過頁邊界寫),地址計數(shù)器的低3位將會翻轉(zhuǎn),并且指針將加1,指向頁面高速緩存器的下一頁。這樣重復(fù)8次后或者直至高速緩存器存滿時,主器件產(chǎn)生停止條件。如果停止條件沒有接收到,高速緩存器指針將翻轉(zhuǎn)到第一頁(字節(jié)0),這之后再接收到的數(shù)據(jù)將覆蓋以前所獲得的數(shù)據(jù)。在發(fā)送期間的任何時刻都可傳送停止條件。單片機中級教程 原理與應(yīng)用25應(yīng)答查詢 由于在寫周期期間,器件將不會應(yīng)答,所以,這一點可以用來決定寫周期在什么時候完成。一旦針對寫命令的停止條件由主器件發(fā)出,從器件開始進行內(nèi)部定時寫周期,主器件的ACK查詢被立即啟動。如果寫周期器件仍然很忙,則ACK信號將不會產(chǎn)生;如果周期已經(jīng)完成,則器件將產(chǎn)

10、生ACK信號。主器件將可以進行下一次的讀或?qū)懖僮鳌纹瑱C中級教程 原理與應(yīng)用26讀操作讀當(dāng)前地址內(nèi)容 當(dāng)控制字的R/W位被置為“1”時,將啟動讀操作。存在三種基本的讀操作類型:讀當(dāng)前地址內(nèi)容、讀隨意地址內(nèi)容及讀順序地址內(nèi)容。1 0 1 01 讀當(dāng)前地址內(nèi)容24LC32內(nèi)部包含一個自動加1的地址計數(shù)器,它保存被存取過的最后一個字節(jié)的地址。如果以前存取的地址為n,下一次讀操作則從n+1地址中讀數(shù)據(jù)。 在接收到的從地址中的R/W為1的情況下,24LC32發(fā)送一個應(yīng)答位,并且送出8位數(shù)據(jù)。主器件發(fā)出非應(yīng)答信號(NO ACK),使從器件釋放數(shù)據(jù)線,以便主器件發(fā)出一個停止條件,從而終止數(shù)據(jù)傳送。單片機中級

11、教程 原理與應(yīng)用27讀隨意地址內(nèi)容 此方式允許主器件以任意方式讀存儲器任意地址的內(nèi)容。這種讀操作須先置字地址,即主器件將字地址作為寫操作的一部分送給24LC32。在發(fā)送了字地址以后,主器件在應(yīng)答位之后產(chǎn)生一個開始條件。這樣可以在內(nèi)部地址計數(shù)器置數(shù)后終止寫操作。主器件再次發(fā)R/W為1的控制字。24LC32將發(fā)出應(yīng)答位,并發(fā)送出8位數(shù)據(jù)。主器件將發(fā)送非應(yīng)答信號,并產(chǎn)生一個停止條件,從而終止發(fā)送。單片機中級教程 原理與應(yīng)用28讀順序地址內(nèi)容 讀順序地址內(nèi)容方式與讀隨意地址內(nèi)容方式的啟動方法一樣,但是在24LC32發(fā)送第一個數(shù)據(jù)字節(jié)后,主器件不發(fā)出終止發(fā)送的信號(發(fā)送應(yīng)答信號)。24LC32繼續(xù)發(fā)送下

12、一個地址的8位數(shù)據(jù),其內(nèi)部的地址指針在操作后自動加1。地址指針允許在一次操作期間,連續(xù)順序地讀出整個存儲器。 當(dāng)主器件接收到最后一個字節(jié)后,主器件將產(chǎn)生非應(yīng)答信號及一個停止條件,終止傳送。單片機中級教程 原理與應(yīng)用29(3) 80C51與串行E PROM 24LC32的接口和編程 80C51與串行24LC32的接口80C51與串行E2PROM 24LC32的接口原理圖單片機中級教程 原理與應(yīng)用30 模擬I2C總線的編程利用模擬仿真的方法,編寫通用子程序。 這些通用子程序包括:啟動、停止、發(fā)送應(yīng)答位及非應(yīng)答位、應(yīng)答位檢查、單字節(jié)數(shù)據(jù)接收與發(fā)送。 以下子程序中,設(shè)定單片機所使用的晶體振蕩器為6MH

13、z,即機器周期為2S。若晶體振蕩器不是6MHz,則可根據(jù)情況增減程序中的NOP指令即可。匯編語言匯編語言編寫的子程序:SDA BITP1.7SCLBITP1.6單片機中級教程 原理與應(yīng)用31A.啟動I2C總線子程序:START: SETBSDASETBSCLNOPNOPCLRSDANOP NOPCLRSCLNOPRET單片機中級教程 原理與應(yīng)用32B.停止I2C總線子程序:STOP:CLR SDA SETB SCL NOP NOP SETB SDA NOP NOP CLR SCL NOP RET單片機中級教程 原理與應(yīng)用33C. 發(fā)送應(yīng)答位子程序:S_ACK: CLRSDA SETB SCL

14、NOP NOP CLRSCL SETBSDA RETD. 應(yīng)答位檢查子程序: 子程序出口時,SDA線的狀態(tài)存入標志位F0中,若有ACK,F(xiàn)0=0,否則F0=1。單片機中級教程 原理與應(yīng)用34C_ACK: SETB SDA ;SDA為輸入狀態(tài) SETB SCL ;第9個時鐘脈沖開始 NOP MOVC,SDA ;讀SDA線 MOVF0,C ;存入F0中 CLRSCL; 第9個時鐘脈沖結(jié)束 NOP RET單片機中級教程 原理與應(yīng)用35E. 單字節(jié)數(shù)據(jù)發(fā)送子程序:將累加器A中的待發(fā)送數(shù)據(jù)送上SDA線。WRBYT: MOV R7,#8 ; 發(fā)送8位WRBYT1: RLC A;將發(fā)送位移入C中 JC WR

15、BYT2 ;此位為1,轉(zhuǎn)WRBYT2 CLR SDA;此位為0,發(fā)送0 SETB SCL; 時鐘脈沖開始 NOP NOP CLR SCL ; 時鐘脈沖結(jié)束 DJNZ R7,WRBYT1 ;未發(fā)送完,轉(zhuǎn)WRBYT1 RET單片機中級教程 原理與應(yīng)用36WRBYT2: SETB SDA; 此位為1,發(fā)送1 SETB SCL ; 時鐘脈沖開始NOPNOPCLR SCL ; 時鐘脈沖結(jié)束CLR SDADJNZ R7,WRBYT1;未發(fā)送完,轉(zhuǎn)WRBYT1RET單片機中級教程 原理與應(yīng)用37F. 單字節(jié)數(shù)據(jù)接收子程序: 從SDA線上讀一個字節(jié)的數(shù)據(jù),存入A中。RDBYT: MOV R7,#8 ; 接收8

16、位RDBYT1: SETB SDA ; SDA為輸入狀態(tài) SETB SCL; 時鐘脈沖開始 MOV C,SDA ;讀SDA線 MOV A,R6 ;取回暫存結(jié)果 RLCA;移入新接收位 MOV R6,A ; 將結(jié)果暫存R6 CLRSCL; 時鐘脈沖結(jié)束 DJNZ R7,RDBYT1 ;未讀完8位,轉(zhuǎn)RDBYT1 RET ;讀完8位,返回單片機中級教程 原理與應(yīng)用382.利用I2C擴展I/O接口 PCF8574T是一種單片CMOS電路,具有I2C總線接口和8位準雙向口。在I2C總線系統(tǒng)中僅作從器件。具有低的電流損耗,最大靜態(tài)電流為10 A;能輸出大的電流,并有鎖存功能,可直接驅(qū)動 LED發(fā)光管;有

17、中斷邏輯線;3根硬件地址引腳使I2C總線系統(tǒng)可掛接8只 PCF8574。器件的串行時鐘的最高頻率為400 kHz單片機中級教程 原理與應(yīng)用39SDA:串行數(shù)據(jù)線,雙向。SCL:串行時鐘線,輸入。P7P0:8位準雙向輸入/輸出口。準雙向口的每一位可作輸出或輸出。上電復(fù)位時,口的每一位均為高電平。某位在作輸入前,應(yīng)置為高電平。A2A0:地址輸入線。INT:中斷輸出線,低電平有效。單片機中級教程 原理與應(yīng)用40 PCF8574 的每個I/O 口都可單獨用作輸入或輸出。輸入通過讀模式將數(shù)據(jù)傳送到MCU,輸出通過寫模式將數(shù)據(jù)發(fā)送到端口。 尋址PCF8574 和PCF8574A 的單片機中級教程 原理與應(yīng)用41 寫模式(輸出)單片機中級教程 原理與應(yīng)用42 讀模式(輸入)單片機中級教程 原理與應(yīng)用43 中斷 在輸入模式中(讀),口輸入信號的上升或下降沿產(chǎn)生中斷。單片機中級教程 原理與應(yīng)用44PCF8574讀方式的連接將開關(guān)的狀態(tài)讀入片內(nèi)RAM 30H單元中。單片機中級教程 原理與應(yīng)用45開始條件PCF8574為讀方式檢查ACK信號讀數(shù)據(jù) 單片機中級教程 原理與應(yīng)用4

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論