由於最近在學習iic的裝置驅動,所以在此寫一篇關於i2c的匯流排介紹來分享我對iic的理解。希望大家能學習到一些知識和指出我的錯誤。
iic:又稱i2c,即inter-integrated circuit(積體電路匯流排),由飛利浦公司開發的序列匯流排,用於控制微控制器及其他裝置。
iic特點
1.只有兩條匯流排線路:一條序列資料線(sda),一條序列時鐘線(scl)。
2.每個連線到匯流排的裝置的器件都可以使用軟體根據它的唯一位址來識別。
3.傳輸資料的裝置間是簡單的主/從關係(意即資料傳輸是從主機發起,從機接受,從機不可能主動引起資料傳輸)
4.它是乙個真正的多主機匯流排,兩個或多個主機同時發起資料傳輸時可以通過衝突檢測和仲裁來防止資料被破壞
5.序列的8位雙向資料傳輸
對於上圖,我們可以提出疑問,既然iic匯流排上連線多個裝置,那麼怎麼區分他們呢?怎麼在傳輸資料的時候選擇指定的裝置呢?
對於i2c裝置的讀寫,在讀寫資料之前都得發出乙個從機位址的7位位址,這個位址是i2c裝置特有的唯一位址。
i2c協議中的讀寫時序
比如我們要往i2c裝置寫入資料
對於上圖我們知道操作為
1.傳送乙個start起始訊號
scl線為高電平時期,sda線由高電平向低電平變化
2.傳送7位從機位址
sda上傳輸的資料必須在scl為高電平期間保持穩定,在低電平期間變化
3.再傳送以為讀/寫位即傳輸的方向(0表示寫操作,1表示讀操作)
4.若7位位址存在並且符合,那麼被選中的從機就會發出響應訊號。
響應訊號:即在傳送完7位從機位址和1位的讀寫位後,再第九個clk期間,主機釋放sda,由從機驅動sda,就是主機傳送7位從機位址後,從機被選中,這時被選中的從機把sda拉低,表示響應訊號。
5.傳輸一系列的位元組及其響應位。
6.主機發出p訊號結束本次傳輸(在scl為高電平期間 sda拉高)。
對於上述過程,有個地方需要注意,並不是每傳輸8位資料後都會有ack訊號,有三種情況例外
1.當從機不能響應從機位址時(例如它正忙於其他事而無法響應i2c匯流排的操作,或者這個位址沒有對應的從機),在第9個scl週期內sda線沒有被拉低,即沒有ack訊號,這時發出乙個p訊號終止傳輸或者重新傳送乙個s訊號開始傳輸。
2.如果主機接收器在傳輸的過程中不能接受更多的資料時,它也不會傳送ack訊號。
3.主機接收器在接收到最後乙個位元組後,也不會發出ack訊號。於是,從機傳送器釋放sda線,以允許主機發出p訊號結束傳輸。
i2c匯流排控制器暫存器
對於一些暫存器的了解可以查閱資料手冊得知
具體可以根據晶元手冊操作暫存器。
i2c大概就是這樣,下一次我會拿具體的**示例來說明怎麼實現i2c匯流排。
iic匯流排介紹
在i2c 匯流排中唯一出現的是被定義為起始s 和停止p 條件見圖5 的情況 其中一種情況是在scl 線是高電平時sda 線從高電平向低電平切換這個情況表示起始條件 當scl 是高電平時sda 線由低電平向高電平切換表示停止條件 起始和停止條件一般由主機產生匯流排在起始條件後被認為處於忙的狀態在停止條...
IIC匯流排詳細介紹
iic匯流排是由飛利浦公司推出的一種序列通訊匯流排,主要由資料線sda和時鐘線scl兩根線構成。iic匯流排支援多主和多從模式,接在iic匯流排上的裝置都乙個唯一的位址,通過該唯一的位址,主裝置可以指定與某個從裝置進行通訊,通訊內容主要包括開始條件 從機位址 資料 應答 停止條件等資料。iic匯流排...
IIC匯流排協議介紹
1 iic介紹 i2c匯流排用於連線微控制器及其外圍裝置。是微電子通訊控制領域廣泛採用的一種匯流排標準。它是同步通訊的一種特殊形式,具有介面線少,控制方式簡單,器件封裝形式小,通訊速率較高,系統的更改和擴充極為容易。i2c匯流排只有2根雙向訊號線,1根sda 資料線 1根sla 時鐘線 2 iic結...