IIC 匯流排協議詳解

2021-09-26 13:56:26 字數 2762 閱讀 7361

目錄

1、i2c匯流排物理拓撲結構

2、i2c匯流排特徵

3、i2c匯流排協議

4、i2c匯流排操作

i2c 匯流排在物理連線上非常簡單,分別由sda(序列資料線)和scl(序列時鐘線)及上拉電阻組成。通訊原理是通過對scl和sda線高低電平時序的控制,來產生i2c匯流排協議所需要的訊號進行資料的傳遞。在匯流排空閒狀態時,這兩根線一般被上面所接的上拉電阻拉高,保持著高電平。

i2c通訊方式為半雙工,只有一根sda線,同一時間只可以單向通訊,485也為半雙工,spi和uart為雙工。

i2c匯流排上的每乙個裝置都可以作為主裝置或者從裝置,而且每乙個裝置都會對應乙個唯一的位址(位址通過物理接地或者拉高,可以從i2c器件的資料手冊得知,如tvp5158晶元,7位位址依次bit6~bit0:x101 1***, 最低三位可配,如果全部物理接地,則該裝置位址為0x58, 而之所以7bit因為1個bit要代表方向,主向從和從向主),主從裝置之間就通過這個位址來確定與哪個器件進行通訊,在通常的應用中,我們把cpu帶i2c匯流排介面的模組作為主裝置,把掛接在匯流排上的其他裝置都作為從裝置。

i2c匯流排上可掛接的裝置數量受匯流排的最大電容400pf 限制,如果所掛接的是相同型號的器件,則還受器件位址位的限制。

i2c匯流排資料傳輸速率在標準模式下可達100kbit/s,快速模式下可達400kbit/s,高速模式下可達3.4mbit/s。一般通過i2c匯流排介面可程式設計時鐘來實現傳輸速率的調整,同時也跟所接的上拉電阻的阻值有關。

i2c匯流排上的主裝置與從裝置之間以位元組(8位)為單位進行雙向的資料傳輸。

i2c協議規定,匯流排上資料的傳輸必須以乙個起始訊號作為開始條件以乙個結束訊號作為傳輸的停止條件起始和結束訊號總是由主裝置產生(意味著從裝置不可以主動通訊?所有的通訊都是主裝置發起的,主可以發出詢問的command,然後等待從裝置的通訊)。

起始和結束訊號產生條件:匯流排在空閒狀態時,scl和sda都保持著高電平,當scl為高電平而sda由高到低的跳變,表示產生乙個起始條件;當scl為高而sda由低到高的跳變,表示產生乙個停止條件。

在起始條件產生後,匯流排處於忙狀態,由本次資料傳輸的主從裝置獨佔,其他i2c器件無法訪問匯流排;而在停止條件產生後,本次資料傳輸的主從裝置將釋放匯流排,匯流排再次處於空閒狀態。起始和結束如圖所示

在了解起始條件和停止條件後,我們再來看看在這個過程中資料的傳輸是如何進行的。前面我們已經提到過,資料傳輸以位元組為單位。主裝置在scl線上產生每個時鐘脈衝的過程中將在sda線上傳輸乙個資料位,當乙個位元組按資料位從高位到低位的順序傳輸完後,緊接著從裝置將拉低sda線,回傳給主裝置乙個應答位, 此時才認為乙個位元組真正的被傳輸完成。當然,並不是所有的位元組傳輸都必須有乙個應答位,比如:當從裝置不能再接收主裝置傳送的資料時,從裝置將回傳乙個否定應答位。資料傳輸的過程如圖所示:

在前面我們還提到過,i2c匯流排上的每乙個裝置都對應乙個唯一的位址,主從裝置之間的資料傳輸是建立在位址的基礎上,也就是說,主裝置在傳輸有效資料之前要先指定從裝置的位址,位址指定的過程和上面資料傳輸的過程一樣,只不過大多數從裝置的位址是7位的,然後協議規定再給位址新增乙個最低位用來表示接下來資料傳輸的方向,0表示主裝置向從裝置寫資料,1表示主裝置向從裝置讀資料。向指定裝置傳送資料的格式如圖所示:(每一最小包資料由9bit組成,8bit內容+1bit ack, 如果是位址資料,則8bit包含1bit方向)

下圖是完整的一幀i2c資料

對i2c匯流排的操作實際就是主從裝置之間的讀寫操作。大致可分為以下三種操作情況

4.1 主裝置往從裝置中寫資料

資料傳輸格式如下:

4.2、主裝置從從裝置中讀資料

資料傳輸格式如下:

4.3、主裝置往從裝置中寫資料,然後重啟起始條件,緊接著從從裝置中讀取資料;或者是主裝置從從裝置中讀資料,然後重啟起始條件,緊接著主裝置往從裝置中寫資料。

資料傳輸格式如下:

第三種操作在單個主裝置系統中,重複的開啟起始條件機制要比用stop終止傳輸後又再次開啟匯流排更有效率。

IIC匯流排協議

i2c匯流排進行資料傳送時,時鐘訊號為高電平期間,資料線上的資料必須保持穩定,只有在時鐘線上的訊號為低電平期間,資料線上的高電平或低電平狀態才允許變化。起始和終止訊號 scl線為高電平期間,sda線由高電平向低電平的變化表示起始訊號 scl線為高電平期間,sda線由低電平向高電平的變化表示終止訊號。...

IIC匯流排協議

iic匯流排狀態 讀寫時序時的匯流排狀態 iic 即inter integrated circuit 積體電路匯流排 這種匯流排型別是由飛利浦半導體公司在八十年代初設計出來的一種簡單 雙向 二線制 同步序列匯流排 兩根訊號線 sda,scl 其中sda為雙向的資料訊號線,scl為時鐘訊號線 主從裝置...

模擬IIC匯流排協議

模擬iic 簡單講iic匯流排通訊就像你在和你物件打 講道理,步驟幾乎完全一致。回憶一下自己打 的過程。你 撥號 你物件 喂?你 巴拉巴拉 你物件 哦 你 巴拉巴拉 你物件 哦 你 掛啦,麼麼噠 你物件 哦 你 掛 通話結束 iic匯流排時序 那現在來看一下iic匯流排通訊過程 對於你來說,你是打 ...