1.1 i2c匯流排知識
1.1.1 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匯流排的操作實際就是主從裝置之間的讀寫操作。大致可分為以下三種操作情況:
第三種操作在單個主裝置系統中,重複的開啟起始條件機制要比用stop終止傳輸後又再次開啟匯流排更有效率。
I2C學習筆記
i2c簡介 i2c inter integrated circuit 匯流排是由philips公司開發的兩線式序列匯流排,用於連線微控制器及其外圍裝置。是微電子通訊控制領域廣泛採用的一種匯流排標準。它是同步通訊的一種特殊形式,具有介面線少,控制方式簡單,器件封裝形式小,通訊速率較高等優點。i2c匯流...
學習筆記 i2c驅動框架
i2c驅動框架 一一一一一一一一一一一一一一一一一一一一一一一一一 軟體層 open read write 一一一一一一一一一一一一一一一一一一一一 驅動 drv open drv read drv write i2c裝置驅動 知道資料含義 一一一一一一一一一一一一一一一一一一一一一一一一一一一一一...
I2C學習記錄
i2c inter integrated circuit 匯流排是由philips公司開發的兩線式序列匯流排,用於連線微控制器及其外圍裝置。是微電子通訊控制領域廣泛採用的一種匯流排標準。通過序列資料 sda 線和序列時鐘 scl 線在連線到匯流排的器件間傳遞資訊。通過序列資料 sda 線和序列時鐘 ...