本文為系列文件第二篇(暫定)
spi匯流排協議
2. i2c匯流排協議
3. mipi協議
狀態:更新ing
i2c匯流排簡介
i2c匯流排的硬體設定
i2c匯流排特點
i2c匯流排的協議內容與資料傳輸
i2c匯流排常用場景
電子通訊等硬體相關,基帶與電效能領域;計算機硬體相關,系統介面等。
i2c是一種常見的序列匯流排(serial bus),分別有一條資料線sda與一條時鐘線scl組成。
由philips公司發布,主要用於連線和傳輸主從器件直接的資訊傳輸。
由於i2c介面採用開漏極輸出,器件本身只能輸出低電平,所以只能通過外部上拉電阻將訊號線拉到高電平。
i2c硬體設定
此處 最小值:
由於i2c規定低於vil或者低於0.3vdd的電壓為邏輯低電平,將高於vih或者高於0.7vdd的電壓定義為邏輯高電平。
所以電源電壓限制了可允許匯流排拉低的最小值
。最大值:
具體計算可看:
i2c上拉電阻 - raymon_tec - www.cnblogs.com
ps: i2c通訊協議中包含從機的位址,從機都不主動傳送資料,主機傳送資料,資料報中包含有從機位址,主機傳送的資料,所有從機都接收,主機傳送完後,轉為接收狀態。從機接收到資料報後,檢測位址與自己的位址一致,就做應答傳送資料。位址不一致,就不處理。所以i2c匯流排中的從機位址不能重複。(在後面的協議內容中會詳細說明i2c為半雙工通訊的原因)
個人角度分析i2c的優缺點:
優點:資料線僅兩根,但可以支援多個裝置進行通訊,速率可選擇。(大多數電子裝置的io使用的頻率在380khz左右。)
主從轉換與應答
資料幀格式
匯流排衝突仲裁
空閒狀態:
sda與scl兩條訊號線同時處於高電平狀態。
起始位與停止位:
起始位與停止位
起始位:當scl為高時,sda由高到低。
停止位:當scl為高時,sda由低到高。
ps:啟動訊號與停止訊號都表示的為電平的跳變狀態,而不是電平訊號。
系統中的所有外圍器件都有乙個7位的「從器件專用位址碼」,其中高4位為器件型別,這由具體的器件廠家制定,低3位為器件的引腳定義位址,由使用者定義。主控制器通過位址碼建立多機通訊的機制。
讀位址位的方法,取前七位,轉換為16進製制時,首位補零。位址位後緊跟著一位讀寫位,1表示讀(read),0表示寫(write)。
ack位:
傳送方每傳送乙個位元組,就在時鐘脈衝第9次期間釋放資料,由接收方反饋乙個應答訊號。
如果應答訊號為低電平時,規定有效應答(ack),表示接收方已經成功接收到該位元組。
如果應答訊號為高電平時,規定為非應答(nack),表示接收方接收該位元組沒有成功。
當在scl第9個時鐘高電平時,sda拉低代表ack響應。
當在scl第9位時鐘高電平訊號器件,sda仍然保持高電平,這種情況定義為nack。此時主機(master)可以直接產生stop條件終止傳輸,或者重新start開始乙個新的傳輸。
nack情況終止傳輸
i2c的訊號取樣為時鐘高電平有效,所以要保證一定的建立時間(setup time)和保持時間(hold time)來確定訊號被有效拾取。
下面詳細說明一下資料的有效拾取:
i2c匯流排進行資料傳送時,時鐘訊號為高電平期間,資料線上的資料必須保持未定,在低電平時,sda上的高低電平狀態發生改變。理想的狀態是:
而實際的情況為:
實際的有效取樣
所以為了保證系統的穩定性就必須要規定建立與保持時間。
建立時間(tsu:set up):時鐘上公升沿到來之前,輸入端資料已經來到並穩定持續的時間。
保持時間(thd:hold):時鐘上公升沿到來之後,傳輸端資料保持 穩定並持續的時間。
tsu與thd應該滿足的需求。
資料幀格式:
在起始訊號後必須傳輸從機的位址(7位),第8位規定傳輸方向(r/t)
資料幀格式
sda資料線上的每個位元組必須為8位,每次傳輸的位元組數量沒有限制。每個位元組後必須跟乙個ack位。第乙個位元組一般前7位為位址address,第8位讀寫位,第九位ack。
匯流排衝突仲裁
在多裝置的通訊系統中,每個裝置都會有自己的定址位址。但如果同時有兩台或兩台以上的裝置都向匯流排傳送通訊請求,這樣就會形成對匯流排資源的占用衝突。
scl仲裁(scl同步)
scl同步是由於匯流排具有「與」邏輯功能,即只要有乙個裝置傳送低電平時,匯流排上就表現為低電平。當所有裝置都傳送高電平時,匯流排才表現為高電平。
所以當多個裝置同時傳送時鐘訊號時,在匯流排上表現的是統一的時鐘訊號。
scl同步
scl同步原理可以很快篩選出不同頻率的時鐘,但是這種方式存在乙個缺點:當低頻率占用匯流排時,高頻率的裝置總是占用不到匯流排。即對於使用i2c時鐘頻率高的裝置,通過scl仲裁與使用i2c時鐘頻率低的裝置相比永遠也不會勝出。
2. sda仲裁
sda仲裁也是建立在匯流排具有「與」邏輯功能一樣。裝置在傳送1位資料後,比較匯流排上的資料是否與自己傳送的一致。若一致,繼續傳送,否則退出競爭。
sda仲裁
如圖,當裝置1與裝置2同時傳送起始訊號時,他們在第乙個週期時都是高電平,即兩個裝置都檢測到匯流排上的訊號與自己傳送的訊號相同,沒有一方退出競爭。在第二個週期時,裝置同樣如此。直到第三個週期,裝置1傳送高電平訊號,而匯流排與裝置2相同為低電平訊號。此時裝置1退出競爭,裝置2搶得匯流排資源。
在電子產品中,大部分的camera和部分簡單的sensor(如:als, g sensor,m sensor等)的指令可以使用時鐘速率在380khz左右的i2c協議進行傳輸。
I2C匯流排協議詳解
1.1 i2c匯流排知識 1.1.1 i2c匯流排物理拓撲結構 i2c 匯流排在物理連線上非常簡單,分別由sda 序列資料線 和scl 序列時鐘線 及上拉電阻組成。通訊原理是通過對scl和sda線高低電平時序的控制,來 產生i2c匯流排協議所需要的訊號進行資料的傳遞。在匯流排空閒狀態時,這兩根線一般...
I2C匯流排協議詳解
1.1 i2c匯流排知識 1.1.1 i2c匯流排物理拓撲結構 i2c 匯流排在物理連線上非常簡單,分別由sda 序列資料線 和scl 序列時鐘線 及上拉電阻組成。通訊原理是通過對scl和sda線高低電平時序的控制,來 產生i2c匯流排協議所需要的訊號進行資料的傳遞。在匯流排空閒狀態時,這兩根線一般...
I2C匯流排協議詳解
1.1 i2c匯流排知識 1.1.1 i2c匯流排物理拓撲結構 i2c 匯流排在物理連線上非常簡單,分別由sda 序列資料線 和scl 序列時鐘線 及上拉電阻組成。通訊原理是通過對scl和sda線高低電平時序的控制,來 產生i2c匯流排協議所需要的訊號進行資料的傳遞。在匯流排空閒狀態時,這兩根線一般...