IIC通信協(xié)議總結(jié)_第1頁(yè)
IIC通信協(xié)議總結(jié)_第2頁(yè)
IIC通信協(xié)議總結(jié)_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、IIC通信協(xié)議概述IIC總線的優(yōu)點(diǎn):I2C總線是各種總線中使用信號(hào)線最少,并具有自動(dòng)尋址、多主機(jī)時(shí)鐘同步和仲裁等功能的總線。硬件結(jié)構(gòu)I2C串行總線一般有兩根信號(hào)線,一根是雙向的數(shù)據(jù)線SDA,另一根是時(shí)鐘線SCL。所有接到I2C總線設(shè)備上的串行數(shù)據(jù)SDA都接到總線的SDA上,各設(shè)備的時(shí)鐘線SCL接到總線的SCL上。SDA數(shù)據(jù)線:設(shè)備上的串行數(shù)據(jù)線SDA接口電路應(yīng)該是雙向的,輸出電路用于向總線上發(fā)送數(shù)據(jù),輸入電路用于接收總線上的數(shù)據(jù)。SCL時(shí)鐘線:而串行時(shí)鐘線也應(yīng)是雙向的,作為控制總線數(shù)據(jù)傳送的主機(jī),一方面要通過(guò)SCL輸出電路發(fā)送時(shí)鐘信號(hào);另一方面還要檢測(cè)總線上的SCL電平,以決定什么時(shí)候發(fā)送下一

2、個(gè)時(shí)鐘脈沖電平,作為接受主機(jī)命令的從機(jī),要按總線上的SCL信號(hào)發(fā)出或接收SDA上的信號(hào),也可以向SCL線發(fā)出低電平信號(hào)以延長(zhǎng)總線時(shí)鐘信號(hào)周期。空閑時(shí)候總線的狀態(tài):總線空閑時(shí),因各設(shè)備都是開(kāi)漏輸出,上拉電阻Rp使SDA和SCL線都保持高電平。任一設(shè)備輸出的低電平都將使相應(yīng)的總線信號(hào)線變低,也就是說(shuō):各設(shè)備的SDA是與”關(guān)系,SCL也是與”關(guān)系。1主機(jī):總線的運(yùn)行(數(shù)據(jù)傳輸)由主機(jī)控制。所謂主機(jī)是指啟動(dòng)數(shù)據(jù)的傳送(發(fā)出啟動(dòng)信號(hào))、發(fā)出時(shí)鐘信號(hào)以及傳送結(jié)束時(shí)發(fā)出停止信號(hào)的設(shè)備,通常主機(jī)都是微處理從機(jī):被主機(jī)尋訪的設(shè)備稱為從機(jī)。為了進(jìn)行通訊,每個(gè)接到I2C總線的設(shè)備都有一個(gè)唯一的地址,以便于主機(jī)尋訪。

3、三:數(shù)據(jù)的傳輸開(kāi)始和停止條件的確定:在I2C總線傳輸過(guò)程中,將兩種特定的情況定義為開(kāi)始和停止條件(見(jiàn)圖3):當(dāng)SCL保持高”時(shí),SDA由高”變?yōu)榈汀睘殚_(kāi)始條件;當(dāng)SCL保持高”且SDA由低”變?yōu)楦摺睍r(shí)為停止條件。開(kāi)始和停止條件均由主控制器產(chǎn)生。使用硬件接口可以很容易地檢測(cè)到開(kāi)始和停止條件,沒(méi)有這種接口的微機(jī)必須以每時(shí)鐘周期至少兩次對(duì)SDA取樣,以檢測(cè)這種變化。B.2StartandiopconditonsBothda:anddockli*§rsmairHIGHwhan(h#butisnotbj»y.AHIGH-to-LOWuaistionofr»datalir&#

4、187;.whil#t腿clashigHIGH,ledenneaasthecsncrtiwiiS).ALSIto-HiGHtranstbonofitiedamlinewhletheciochisHIGHtsd*fir#da«th#就。pcondlion(F)_SDA線上的數(shù)據(jù)在時(shí)鐘高”期間必須是穩(wěn)定的,只有當(dāng)SCL線上的時(shí)鐘信號(hào)為低時(shí),數(shù)據(jù)線上的高”或低”狀態(tài)才可以改變。因此在IIC總線上胡數(shù)據(jù)傳輸過(guò)程中,數(shù)據(jù)信號(hào)線SDA的變化只能發(fā)生在SCL為低電平的期間內(nèi)。從上圖中可以清楚的看到這一點(diǎn)。IXHACKACK底答起始信號(hào)圖16-3PCJB短的字節(jié)偉和矚成倍號(hào)ACK1機(jī)發(fā)出時(shí)鐘佑丹援收

5、器«出響應(yīng)信號(hào)ACK寬度為1位,緊跟在8個(gè)數(shù)據(jù)位后面,所以發(fā)送1字節(jié)的數(shù)據(jù)需要9個(gè)SCL時(shí)鐘脈沖。響應(yīng)時(shí)鐘脈沖也是由主機(jī)產(chǎn)生的,主機(jī)在響應(yīng)時(shí)鐘脈沖期間釋放SDA線,使其處在高電平(見(jiàn)圖163上面的信號(hào))。而在響應(yīng)時(shí)鐘脈沖期間,接收方需要將SDA拉低,使SDA在響應(yīng)時(shí)鐘脈沖高電平期間保持穩(wěn)定的低電平(見(jiàn)圖163中間結(jié)束的信號(hào))。低電平用ACK表示,代表有應(yīng)答;高電平用nACK表示,代表無(wú)應(yīng)答。應(yīng)答信號(hào)在I2C總線的數(shù)據(jù)傳輸過(guò)程中起著非常重要的作用,它將決定總線及連接在總線上設(shè)備下一步的狀態(tài)和動(dòng)作。一旦在應(yīng)答信號(hào)上發(fā)生錯(cuò)誤,例如接收方不按規(guī)定返回或返回不正確的應(yīng)答信號(hào),=以及發(fā)送方對(duì)應(yīng)答

6、信號(hào)的誤判,都將造成總線通信的失敗。=輸出到SDA線上的每個(gè)字節(jié)必須是8位,高位在前,低位在后。每次傳輸?shù)淖止?jié)不受限制,但每個(gè)字節(jié)必須要有一個(gè)應(yīng)答ACK。如果一接收器件在完成其他功能(如一內(nèi)部中斷)前不能接收另一數(shù)據(jù)的完整字節(jié)時(shí),它可以保持時(shí)鐘線SCL為低,以促使發(fā)送器進(jìn)入等待狀態(tài);當(dāng)接收器準(zhǔn)備好接受數(shù)據(jù)的其它字節(jié)并釋放時(shí)鐘SCL后,數(shù)據(jù)傳輸繼續(xù)進(jìn)行。數(shù)據(jù)傳送具有應(yīng)答是必須的。與應(yīng)答對(duì)應(yīng)的時(shí)鐘脈沖由主控制器產(chǎn)生,發(fā)送器在應(yīng)答期間必須下拉SDA線。當(dāng)尋址的被控器件不能應(yīng)答時(shí),數(shù)據(jù)保持為高并使主控器產(chǎn)生停止條件而終止傳輸。在傳輸?shù)倪^(guò)程中,在用到主控接收器的情況下,主控接收器必須發(fā)出一數(shù)據(jù)結(jié)束信號(hào)給

7、被控發(fā)送器,從而使被控發(fā)送器釋放數(shù)據(jù)線,以允許主控器產(chǎn)生停止條件。開(kāi)女臺(tái)傳輸:|2C住在開(kāi)始條件后的首字節(jié)決定哪個(gè)被控器將被主控器選擇,例外的是通用訪問(wèn)”地址,它可以在所有期間尋址。當(dāng)主控器輸出一地址時(shí),系統(tǒng)中的每一器件都將開(kāi)始條件后的前7位地址和自己的地址進(jìn)行比較。如果相同,該器件即認(rèn)為自己被主控器尋址,而作為被控接收器或被控發(fā)送器則取決于R/W位。四.例子(用GMS97C2051的通用I/O口來(lái)作為I2C總線接口,并由軟件控制實(shí)現(xiàn)數(shù)據(jù)傳送)接I2C總線規(guī)定:SCL線和SDA線是各設(shè)備對(duì)應(yīng)輸出狀態(tài)相與”的結(jié)果,任一設(shè)備都可以用輸出低電平的方法來(lái)延長(zhǎng)SCL的低電平時(shí)間,以迫使高速設(shè)備進(jìn)入等待狀

8、態(tài),從而實(shí)現(xiàn)不同速度設(shè)備間的時(shí)鐘同步。因此,即使時(shí)鐘脈沖的高、低電平時(shí)間長(zhǎng)短不一,也能實(shí)現(xiàn)數(shù)據(jù)的可靠傳送,可以用軟件控制I/O口做I2C接口。傳輸?shù)恼麄€(gè)過(guò)程:前面已經(jīng)介紹過(guò)I2C總線是支持多機(jī)通信的數(shù)據(jù)總線,每一個(gè)連接在總線上的從機(jī)設(shè)備或器件都有一個(gè)唯一獨(dú)立的地址,以便于主機(jī)尋訪。I2C總線上的數(shù)據(jù)通信過(guò)程是由主機(jī)發(fā)起的,以主機(jī)控制總線,發(fā)出起始信號(hào)作為開(kāi)始。在發(fā)送起始信號(hào)后,主機(jī)將發(fā)送一個(gè)用于選擇從機(jī)設(shè)備的地址字節(jié),以尋址總線中的某一個(gè)從機(jī)設(shè)備,通知其參與同主機(jī)之間的數(shù)據(jù)通信。地址字節(jié)的格式如下:MSB2耳泌ad<43-1tdZidDI/O地址字節(jié)的高7位數(shù)據(jù)是主機(jī)呼叫的從機(jī)地址,第8

9、位用于標(biāo)示緊接下來(lái)的數(shù)據(jù)傳輸方向:“0”表示要從機(jī)準(zhǔn)備接收主機(jī)下發(fā)數(shù)據(jù)(主機(jī)發(fā)送/從機(jī)接收);而“l(fā),,則表示主機(jī)向從機(jī)讀取數(shù)據(jù)(主機(jī)接收/從機(jī)發(fā)送)。機(jī)轉(zhuǎn)佩SD息心E£DA£機(jī)里竺堅(jiān)FyAI妃?必丫/777L/?VJTVJ7V_11IIw&始信號(hào)從機(jī)011RAVACKF?皎據(jù)ACW答即止信母圍16-4個(gè)的*援傳全切程示侗主機(jī)控制SDA。在I2C總線上產(chǎn)生起始信號(hào),同時(shí)控制SCL,發(fā)送時(shí)鐘脈沖。在整個(gè)傳輸過(guò)程中,SCL都是由主機(jī)控制的。主機(jī)發(fā)送器發(fā)送地址字節(jié)。地址字節(jié)的第8位為“1”。表示準(zhǔn)備向從機(jī)讀取數(shù)據(jù)。主機(jī)在字節(jié)發(fā)送完成后,放棄對(duì)5DA的控制,進(jìn)入接收檢測(cè)AC

10、K的狀態(tài)。所有從機(jī)在起始信號(hào)后為從機(jī)接收器,接收地址字節(jié),與自己地址比對(duì)。被尋址的從機(jī)在第9個(gè)SCL時(shí)鐘脈沖期間控制SDA.將其拉低,給出ACK應(yīng)答。主機(jī)檢測(cè)到從機(jī)的ACK應(yīng)答后、轉(zhuǎn)換成主機(jī)接收器。準(zhǔn)備接收從機(jī)發(fā)出的數(shù)據(jù)。從機(jī)則根據(jù)第8位“1”的設(shè)定,在第2個(gè)字節(jié)的8個(gè)時(shí)鐘脈沖期間作為從機(jī)發(fā)送器控制SDA。發(fā)送1字節(jié)的數(shù)據(jù)。發(fā)送完成后放棄對(duì)SDA的控制,進(jìn)入接收檢測(cè)ACK的狀態(tài)。在第2個(gè)字節(jié)的8個(gè)傳輸時(shí)鐘脈沖期間,主機(jī)接收器接收從機(jī)發(fā)出的數(shù)據(jù)。當(dāng)接收到d0位后,主機(jī)控制SDA,將其拉低,給出ACK應(yīng)答。從機(jī)接收檢測(cè)主機(jī)的ACK應(yīng)答c如果是ACK,則難備發(fā)送1個(gè)新的字節(jié)數(shù)據(jù);如果是nACK,則轉(zhuǎn)

11、入檢測(cè)下一個(gè)起始信號(hào)的狀態(tài)。在這個(gè)示例中,主機(jī)收到l字節(jié)數(shù)據(jù)后,轉(zhuǎn)成主機(jī)發(fā)送器控制SDA,在發(fā)出ACK應(yīng)答信號(hào)后,馬上發(fā)出停止信號(hào),通知本次數(shù)據(jù)傳輸結(jié)束。從機(jī)檢測(cè)到停止信號(hào),轉(zhuǎn)入檢測(cè)下一個(gè)起始信號(hào)的狀態(tài)。以上介紹了I2C總線基本的特性、操作時(shí)序和通信規(guī)范,這些概念對(duì)了解、掌握、應(yīng)用I2C總線尤為重要。這是因?yàn)镮2C總線在硬件連接上非常簡(jiǎn)單,只要將所有器件和設(shè)備的SDA、SCL并在一起就可以了,但復(fù)雜的通信規(guī)范的實(shí)現(xiàn),往往需要軟件的控制。盡管AVR的TWI接口在硬件層面上實(shí)現(xiàn)了更多的I2C底層協(xié)議和數(shù)據(jù)傳送與接收的功能,但對(duì)于什么時(shí)間發(fā)出起始信號(hào)、停止信號(hào),如何返回應(yīng)答信號(hào),以及主/從機(jī)之間的發(fā)

12、送/接收器的相互轉(zhuǎn)換,還是需要程序員根據(jù)實(shí)際情況,編寫相應(yīng)的、正確的系統(tǒng)程序才能實(shí)現(xiàn)。關(guān)于I2C總線更多的特性,例如多主機(jī)的總線競(jìng)爭(zhēng)與仲裁等,本書將不做介紹,有興趣的讀者可以通過(guò)本書所附光盤中的參考資料«I2C總線規(guī)范進(jìn)一步地深入學(xué)習(xí)。使用C語(yǔ)言在C51的環(huán)境下對(duì)IIC的編程范例/IIC開(kāi)始voidStart()(SDA=1;SCL=1;NOP4();SDA=0;NOP4();SCL=0;/IIC結(jié)束voidStop()(SDA=0;SCL=0;NOP4();SCL=1;NOP4();SDA=1;/IIC讀取應(yīng)答voidRACK()(SDA=1;NOP4();SCL=1;NOP4();SCL=

溫馨提示

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

評(píng)論

0/150

提交評(píng)論