串行接口及應(yīng)用3(TWI)_第1頁
串行接口及應(yīng)用3(TWI)_第2頁
串行接口及應(yīng)用3(TWI)_第3頁
串行接口及應(yīng)用3(TWI)_第4頁
串行接口及應(yīng)用3(TWI)_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

5.4兩線串行接口TWI5.4.1TWI主要特點(diǎn)

?簡單,但是強(qiáng)大而靈活的通訊接口,只需要兩根線?支持主機(jī)和從機(jī)操作?器件可以工作于發(fā)送器模式或接收器模式?7位地址空間允許有128個(gè)從機(jī)?支持多主機(jī)仲裁?高達(dá)400kHz的數(shù)據(jù)傳輸率?可以抑制總線尖峰的噪聲抑制器?完全可編程的從機(jī)地址以及公共地址?睡眠時(shí)地址匹配可以喚醒AVR1、兩線串行接口總線定義

TWI協(xié)議允許系統(tǒng)設(shè)計(jì)者只用兩根雙向傳輸線就可以將128個(gè)不同的設(shè)備互連到一起。這兩根線一是時(shí)鐘SCL,一是數(shù)據(jù)SDA。外部硬件只需要兩個(gè)上拉電阻,每根線上一個(gè)。所有連接到總線上的設(shè)備都有自己的地址。TWI協(xié)議解決了總線仲裁的問題。圖5.9TWI總線的連接表5.5TWI詞匯2、TWI的電氣連接

兩根線都通過上拉電阻與正電源連接,TWI兼容的器件的總線驅(qū)動(dòng)都是漏極開路或集電極開路的,TWI器件輸出為“0”時(shí),TWI總線會(huì)產(chǎn)生低電平。

當(dāng)所有的TWI器件輸出為三態(tài)時(shí),總線會(huì)輸出高電平,允許上拉電阻將電壓拉高。注意,為保證所有的總線操作,凡是與TWI總線連接的AVR器件必須上電。3、TWI的傳輸數(shù)據(jù)(位)

TWI總線上數(shù)據(jù)位的傳送與時(shí)鐘脈沖同步。時(shí)鐘線為高時(shí),數(shù)據(jù)線電壓必須保持穩(wěn)定,除非在啟動(dòng)與停止的狀態(tài)下。圖5.10數(shù)據(jù)有效性4、START/STOP狀態(tài)

主機(jī)在總線上發(fā)出START信號啟動(dòng)數(shù)據(jù)傳輸,在總線上發(fā)出STOP信號停止數(shù)據(jù)傳輸。

在START與STOP狀態(tài)之間,需要假定總線忙,不允許其它主機(jī)控制總線,特例是在START與STOP狀態(tài)之間發(fā)出一個(gè)新的START狀態(tài)。

如下所示,START與STOP狀態(tài)是在SCL線為高時(shí),通過改變SDA電平來實(shí)現(xiàn)的。圖5.11啟動(dòng)、停止和重啟動(dòng)狀態(tài)5、地址包格式

在TWI總線上傳送的地址包均為9位,包括7位地址位、1位READ/WRITE控制位與1位應(yīng)答位。

如果READ/WRITE為1,則執(zhí)行讀操作;否則執(zhí)行寫操作。

從機(jī)被尋址后,必須在第九個(gè)SCL(ACK)周期通過拉低SDA作出應(yīng)答。若該從機(jī)忙或有其它原因無法響應(yīng)主機(jī),則應(yīng)該在ACK周期保持SDA為高。然后主機(jī)可以發(fā)出STOP狀態(tài)或REPEATEDSTART狀態(tài)重新開始發(fā)送。

地址包包括從機(jī)地址與分別稱為SLA+R或SLA+W的READ或WRITE位。6、數(shù)據(jù)包格式

在TWI總線上傳送的數(shù)據(jù)包為9位長,包括8位數(shù)據(jù)位及1位應(yīng)答位。

在數(shù)據(jù)傳送中,主機(jī)產(chǎn)生時(shí)鐘及START與STOP狀態(tài),而接收器響應(yīng)接收。

應(yīng)答是由從機(jī)在第9個(gè)SCL周期拉低SDA實(shí)現(xiàn)的。如果接收器使SDA為高,則發(fā)出NACK信號。接收器完成接收,應(yīng)該在收到最后的字節(jié)后發(fā)出NACK來告知發(fā)送器。圖5.13數(shù)據(jù)包格式7、將地址包和數(shù)據(jù)包組合為一個(gè)完整的傳輸過程

發(fā)送主要由START狀態(tài)、SLA+R/W、至少一個(gè)數(shù)據(jù)包及STOP狀態(tài)組成,可以利用SCL的線與功能來實(shí)現(xiàn)主機(jī)與從機(jī)的握手。

圖5.14說明了典型的數(shù)據(jù)傳送。注意SLA+R/W與STOP之間傳送的字節(jié)數(shù)由應(yīng)用程序的協(xié)議決定。圖5.14典型的數(shù)據(jù)傳送8、多主機(jī)總線系統(tǒng),仲裁和同步

TWI協(xié)議允許總線上有多個(gè)主機(jī)。特別要注意的是即使有多個(gè)主機(jī)同時(shí)開始發(fā)生數(shù)據(jù),也要保證發(fā)送正常進(jìn)行。多主機(jī)系統(tǒng)中有兩個(gè)問題:只能允許一個(gè)主機(jī)完成傳送。當(dāng)其余主機(jī)失去選擇權(quán)后應(yīng)停止傳送,這個(gè)過程稱為仲裁。當(dāng)競爭中的主機(jī)發(fā)現(xiàn)其仲裁失敗,應(yīng)立即轉(zhuǎn)換到從機(jī)模式檢測是否被獲得總線控制權(quán)的的主機(jī)尋址。不同的主機(jī)可能使用不同的SCL頻率。為保證傳送的一致性,必須設(shè)計(jì)一種同步主機(jī)時(shí)鐘,這會(huì)簡化仲裁過程。5.4.2TWI模塊綜述

TWI模塊由幾個(gè)子模塊組成,如圖5.17所示。所有位于粗線之中的寄存器可以通過AVR數(shù)據(jù)總線進(jìn)行訪問。圖5.17TWI模塊概述5.4.3總線接口單元

該單元包括數(shù)據(jù)與地址移位寄存器TWDR,START/STOP控制器和總線仲裁判定硬件電路。5.4.4地址匹配單元地址匹配單元將檢測從總線上接收到的地址是否與TWAR寄存器中的7位地址相匹配。5.4.5控制單元:

控制單元監(jiān)控TWI總線,并根據(jù)TWI控制寄存器TWCR的設(shè)置作出相應(yīng)的響應(yīng)。5.4.6使用TWI

AVR的TWI接口是面向字節(jié)和基于中斷的。

在字節(jié)發(fā)送和接收過程中,不需要應(yīng)用程序的干預(yù)。

TWCR寄存器的TWIE位和SREG寄存器的全局中斷允許位一起決定了應(yīng)用程序是否響應(yīng)TWINT標(biāo)志位產(chǎn)生的中斷請求。1、TWI寄存器設(shè)置(1)TWI比特率寄存器(TWBR)Bits7..0–TWI比特率寄存器TWBR為比特率發(fā)生器分頻因子。比特率發(fā)生器是一個(gè)分頻器,在主機(jī)模式下產(chǎn)生SCL時(shí)鐘頻率。(2)TWI控制寄存器(TWCR)Bit7–TWINT:TWI中斷標(biāo)志Bit6–TWEA:使能TWI應(yīng)答B(yǎng)it5–TWSTA:TWISTART狀態(tài)標(biāo)志Bit4–TWSTO:TWISTOP狀態(tài)標(biāo)志Bit3–TWWC:TWI寫碰撞標(biāo)志Bit2–TWEN:TWI使能Bit1–Res:保留Bit0–TWIE:使能TWI中斷(3)TWI狀態(tài)寄存器(TWSR)Bits7..3–TWS:TWI狀態(tài)Bit2–Res:保留Bits1..0–TWPS:TWI預(yù)分頻位(4)TWI數(shù)據(jù)寄存器(TWDR)Bits7..0–TWD:TWI數(shù)據(jù)寄存器(5)TWI(從機(jī))地址寄存器(TWAR)?Bits7..1–TWA:TWI從機(jī)地址寄存器其值為從機(jī)地址。?Bit0–TWGCE:使能TWI廣播識(shí)別置位后MCU可以識(shí)別TWI總線廣播。TWI數(shù)據(jù)傳輸過程中的規(guī)則總結(jié)如下:

當(dāng)TWI完成一次操作并等待反饋時(shí),TWINT標(biāo)志置位。直到TWINT清零,時(shí)鐘線SCL才會(huì)拉低。

TWINT標(biāo)志置位時(shí),TWDR寄存器必須載入下一個(gè)總線周期中要發(fā)送的值。當(dāng)所有的TWI寄存器得到更新,而且其它掛起的應(yīng)用程序也已經(jīng)結(jié)束,TWCR被寫入數(shù)據(jù)。寫TWCR時(shí),TWINT位應(yīng)為置位狀態(tài)。對TWINT寫“1”清除此標(biāo)志。TWI將開始執(zhí)行由TWCR設(shè)定的操作。1、數(shù)據(jù)傳輸模式

TWI可工作于4個(gè)不同的模式:主機(jī)發(fā)送器(MT)、主機(jī)接收器(MR)、從機(jī)發(fā)送器(ST)及從機(jī)接收器(SR)。同一應(yīng)用程序可以使用幾種模式。2、主機(jī)發(fā)送模式 為進(jìn)入主機(jī)模式,必須發(fā)送START信號。緊接著的地址包格式?jīng)Q定進(jìn)入MT或MR模式。如果發(fā)送SLA+W進(jìn)入MT模式;如果發(fā)送SLA+R則進(jìn)入MR模式。 本節(jié)所提到的狀態(tài)字均假設(shè)其預(yù)分頻位為“0”。(1)通過在TWCR寄存器中寫入下列數(shù)值發(fā)出START信號:TWEN必須置位以使能兩線接口TWSTA必須置“1”來發(fā)出START信號TWINT必須置“1”來對TWINT標(biāo)志清零

TWI邏輯開始檢測串行總線,一旦總線空閑就發(fā)送START。接著中斷標(biāo)志TWINT置位,TWSR的狀態(tài)碼為0x08。(2)為進(jìn)入MT模式,必須發(fā)送SLA+W,可對TWDR寫入SLA+W來實(shí)現(xiàn)。完成此操作后軟件清零TWINT標(biāo)志,TWI傳輸繼續(xù)進(jìn)行。 在TWCR寄存器中寫入下述值完成此操作:

當(dāng)SLA+W發(fā)送完畢并接收到確認(rèn)信號,主機(jī)的TWINT標(biāo)志再次置位。 此時(shí)主機(jī)的TWSR狀態(tài)碼可能是0x18、0x20。

SLA+W發(fā)送成功后可以開始發(fā)送數(shù)據(jù)包,通過對TWDR寫入數(shù)據(jù)實(shí)現(xiàn)。

(3)TWDR只有在TWINT為高時(shí)方可寫入。否則,訪問被忽略,寄存器TWCR的寫碰撞位TWWC置位。

TWDR更新后,TWINT位應(yīng)清零后繼續(xù)傳送。 通過對TWCR寄存器中寫入下述值完成操作:(4)這過程會(huì)一直重復(fù)下去,直到最后的字節(jié)發(fā)送完且發(fā)送器產(chǎn)生STOP或REPEATEDSTART信號。STOP信號通過在TWCR中寫入下述值實(shí)現(xiàn):(5)在REPEATEDSTART(狀態(tài)0x10)后,兩線接口可以再次訪問相同的從機(jī),或不發(fā)送STOP信號來訪問新的從機(jī)。REPEATEDSTART使得主機(jī)可以在不丟失總線控制的條件下在從機(jī)、主機(jī)發(fā)送器及主機(jī)接收器模式間進(jìn)行切換。

REPEATEDSTART信號通過在TWCR中寫入下述值實(shí)現(xiàn):表:主機(jī)發(fā)送模式的狀態(tài)碼表主機(jī)發(fā)送模式的狀態(tài)碼(續(xù)表)典型數(shù)據(jù)傳輸中應(yīng)用程序與TWI的接口(數(shù)據(jù)手冊P171)3、主機(jī)接收模式

在主機(jī)接收模式,主機(jī)可以從從機(jī)接收數(shù)據(jù)。 為進(jìn)入主機(jī)模式,必須發(fā)送START信號。緊接著的地址包格式?jīng)Q定進(jìn)入MT或MR模式。如果發(fā)送SLA+W進(jìn)入MT模式;如果發(fā)送SLA+R則進(jìn)入MR模式。

表:主機(jī)接收模式的狀態(tài)碼表主機(jī)接收模式的狀態(tài)碼(續(xù)表)4、從機(jī)發(fā)送模式如圖5.20:從機(jī)發(fā)送模式下的數(shù)據(jù)傳輸(1)啟動(dòng)從機(jī)發(fā)送模式,TWAR與TWCR設(shè)置:(2)前7位是主機(jī)尋址時(shí)從機(jī)響應(yīng)的TWI接口地址。若LSB置位,則TWI接口響應(yīng)廣播地址0x00。否則忽略廣播地址。TWEN必須置位以使能TWI接口。TWEA也要置位以便主機(jī)尋址到自己(從機(jī)地址或廣播)時(shí)返回確認(rèn)信息ACK。TWSTA和TWSTO必須清零。初始化TWAR和TWCR之后,TWI接口即開始等待,直到自己的從機(jī)地址(或廣播地址,如果TWAR的TWGCE置位的話)出現(xiàn)在主機(jī)尋址地址當(dāng)中,并且數(shù)據(jù)方向位為“1”(讀)。然后TWI中斷標(biāo)志置位,TWSR則包含了相應(yīng)的狀態(tài)碼。

如果在傳輸過程中TWEA復(fù)位,TWI接口發(fā)送完數(shù)據(jù)之后進(jìn)入狀態(tài)0xC0或0xC8。接口也切換到未尋址從機(jī)模式,忽略任何后續(xù)總線傳輸。從而主機(jī)接收到的數(shù)據(jù)全為“1”。如果主機(jī)需要附加數(shù)據(jù)位(通過發(fā)送ACK),即使從機(jī)已經(jīng)傳送結(jié)束,也進(jìn)入狀態(tài)0xC8。

TWEA復(fù)位時(shí)TWI接口不再響應(yīng)自己的從機(jī)地址,但是會(huì)繼續(xù)監(jiān)視總線。一旦TWEA置位就可以恢復(fù)地址識(shí)別和響應(yīng)。也就是說,可以利用TWEA暫時(shí)將TWI接口從總線中隔離出來。

在除空閑模式外的其它休眠模式時(shí),TWI接口的時(shí)鐘被關(guān)閉。若使能了從機(jī)接收模式,接口將利用總線時(shí)鐘繼續(xù)響應(yīng)廣播地址/從機(jī)地址。地址匹配將喚醒CPU。在喚醒期間,TWI接口將保持SCL為低電平,直至TWCINT標(biāo)志清零。

當(dāng)AVR時(shí)鐘恢復(fù)正常運(yùn)行后可以發(fā)送更多的數(shù)據(jù)。顯然如果AVR設(shè)置為長啟動(dòng)時(shí)間,時(shí)鐘線SCL可能會(huì)長時(shí)間保持低,阻塞其它數(shù)據(jù)的傳送。當(dāng)MCU從這些休眠模式喚醒時(shí),和正常工作模式不同的是,數(shù)據(jù)寄存器TWDR的數(shù)據(jù)并不反映總線上出現(xiàn)的最后一個(gè)字節(jié)。表5.9:從機(jī)發(fā)送模式的狀態(tài)碼其他狀態(tài):有兩個(gè)狀態(tài)碼沒有相應(yīng)的TWI狀態(tài)定義。狀態(tài)0xF8表明當(dāng)前沒有相關(guān)信息,因?yàn)橹袛鄻?biāo)志TWINT為“0”。狀態(tài)0x00表示在串行傳輸過程中發(fā)生了總線錯(cuò)誤。當(dāng)START或STOP出現(xiàn)在錯(cuò)誤的位置時(shí)總線錯(cuò)誤就會(huì)發(fā)生。這將導(dǎo)致TWI接口進(jìn)入未尋址從機(jī)模式、標(biāo)志TWSTO被清零(TWCR的其他位不受影響),以及SDA和SCL被釋放,但是不會(huì)產(chǎn)生STOP。表5.10其它狀態(tài)碼將幾個(gè)TWI模式組合到一起:在某些情況下,為完成期望的工作,必須將幾種TWI模式組合起來。例如從串行EEPROM讀取數(shù)據(jù)。典型的這種傳輸包括以下步驟:

1.傳輸必須啟動(dòng)

2.必須告訴EEPROM讀取的位置

3.必須完成讀操作

4.傳送必須結(jié)束注意數(shù)據(jù)可從主機(jī)傳到從機(jī),反之也可。首先主機(jī)必須告訴讀從機(jī)讀取實(shí)際的位置,因此需要使用MT模式;然后數(shù)據(jù)必須由從機(jī)讀出,需要使用MR模式,但傳送方向必須改變。在上述步驟中,主機(jī)必須保持對總線的控制,且以上各步驟應(yīng)該自動(dòng)進(jìn)行。如果在多主機(jī)系統(tǒng)中違反這一規(guī)則,即在第二步與第三步之間其它主機(jī)改變EEPROM中的數(shù)據(jù)指針,則主機(jī)讀取的數(shù)據(jù)位置是錯(cuò)誤的。傳送方向改變是通過在發(fā)送地址字節(jié)與接收數(shù)據(jù)之間發(fā)送REPEATEDSTART信號來實(shí)現(xiàn)的。在發(fā)送REPEATEDSTART信號后,主機(jī)繼續(xù)保持總線的控制權(quán)。下圖給出傳送的流程圖(從機(jī)讀流程)。例5.14在讀方式下往從器件寫入一個(gè)地址字節(jié)。voidf_I2cWriteAdd_R(unsignedcharuc_I2CAdd)//寫從器件地址和讀方式{TWDR=(uc_I2CAdd);TWCR=(1<<TWINT)|(1<<TWEN);//寫數(shù)據(jù)到TWDRwhile(!(TWCR&(1<<TWINT);if(TWSR&0xf8!=0x40)error();}例5.15往從器件寫入一個(gè)數(shù)據(jù)字節(jié)。voidf_I2cWriteData_R(unsignedcharuc_I2CData)//寫從器件數(shù)據(jù){TWDR=(uc_I2CData);TWCR=(1<<TWINT)|(1<<TWEN)//寫數(shù)據(jù)到TWDRwhile(!(TWCR&(1<<TWINT);if(TWSR&0xf8!=0x28)error();}例5.16讀從器件,返回字節(jié)數(shù)據(jù)。要求接收到ACK信號。unsignedcharf_I2Cread1(viod)//讀返回?cái)?shù)據(jù){unsignedcharuc_ReturnData;TWCR=(TWCR&0xCF)|(1<<TWEN)|(1<<TWEA)|(

溫馨提示

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

評論

0/150

提交評論