Camera2 camera i2c总线协议介绍
一、I2C總線的拓撲結構:
I2C 總線在物理連接上非常簡單,分別由SDA(串行數據線)和SCL(串行時鐘線)及上拉電阻組成。通信原理
是通過對SCL和SDA線高低電平時序的控制,來產生I2C總線協議所需要的信號進行數據的傳遞。在總線空閑狀
態時,這兩根線一般被上面所接的上拉電阻拉高,保持著高電平。I2C通信方式為半雙工,只有一根SDA線,同
一時間只可以單向通信,485也為半雙工,SPI和uart為雙工。
二、I2C總線特征:
??? I2C總線上的每一個設備都可以作為主設備或者從設備,而且每一個設備都會對應一個唯一的地址(地址通過物理
接地或者拉高,主從設備之間就通過這個地址來確定與哪個器件進行通信,在通常的應用中,我們把CPU帶I2C總
線接口的模塊作為主設備,把掛接在總線上的其他設備都作為從設備。
? ? I2C總線上可掛接的設備數量受總線的最大電容400pF 限制,如果所掛接的是相同型號的器件,則還受器件地址位的限制。
? ? I2C總線數據傳輸速率在標準模式下可達100kbit/s,快速模式下可達400kbit/s,高速模式下可達3.4Mbit/s。一般通過I2C總線接口可編程時鐘來實現傳輸速率的調整,同時也跟所接的上拉電阻的阻值有關。
? ? I2C總線上的主設備與從設備之間以字節(8位)為單位進行雙向的數據傳輸。
三、I2C總線協議
I2C協議規定,總線上數據的傳輸必須以一個起始信號作為開始條件,以一個結束信號作為傳輸的停止條件。起始和
結束信號總是由主設備產生(意味著從設備不可以主動通信?所有的通信都是主設備發起的,主可以發出詢問的command,
然后等待從設備的通信)。
起始和結束信號產生條件:總線在空閑狀態時,SCL和SDA都保持著高電平:
當SCL為高電平而SDA由高到低的跳變,表示產生一個起始條件;
當SCL為高而SDA由低到高的跳變,表示產生一個停止條件。
在起始條件產生后,總線處于忙狀態,由本次數據傳輸的主從設備獨占,其他I2C器件無法訪問總線;而在停止
條件產生后,本次數據傳輸的主從設備將釋放總線,總線再次處于空閑狀態。起始和結束如圖所示:
再來看看在這個過程中數據的傳輸是如何進行的。前面我們已經提到過,數據傳輸以字節為單位(8bit位)。主設備在
SCL線上產生每個時鐘脈沖的過程中將在SDA線上傳輸一個數據位,當一個字節按數據位從高位到低位的順序傳輸完后,
緊接著從設備將拉低SDA線,回傳給主設備一個應答位, 此時才認為一個字節真正的被傳輸完成。當然,并不是所有的
字節傳輸都必須有一個應答位,比如:當從設備不能再接收主設備發送的數據時,從設備將回傳一個否 定應答位。數據
傳輸的過程如圖所示:
在前面我們還提到過,I2C總線上的每一個設備都對應一個唯一的地址,主從設備之間的數據傳輸是建立在地址的基
礎上,也就是說,主設備在傳輸有效數據之前要先指定從設備的地址,地址指定的過程和上面數據傳輸的過程一樣,只不
過大多數從設備的地址是7位的,然后協議規定再給地址添加一個最低位用來表示接下來數據傳輸的方向,0表示主設備向
從設備寫數據,1表示主設備向從設備讀數據。向指定設備發送數據的格式如圖所示:(每一最小包數據由9bit組成,8bit內
容+1bit ACK, 如果是地址數據,則8bit包含1bit方向):
下圖是完整的一幀I2C數據:
四、I2C總線操作:
?對I2C總線的操作實際就是主從設備之間的讀寫操作。大致可分為以下三種操作情況:
1、主設備往從設備中寫數據。數據傳輸格式如下:
2、主設備從從設備中讀數據。數據傳輸格式如下:
3、主設備往從設備中寫數據,然后重啟起始條件,緊接著從從設備中讀取數據;或者是主設備從從設備中讀數據,
然后重啟起始條件,緊接著主設備往從設備中寫數據。數據傳輸格式如下:
第三種操作在單個主設備系統中,重復的開啟起始條件機制要比用STOP終止傳輸后又再次開啟總線更有效率。
?
i2c 不通的原因有兩種:
(1)一種是device端(sensor device)本身就沒有回ACK,表現為I2C_ACKERR,大多是slave(從設備)問題,
從設備上電是否符合SPEC等;
(2)一種就是問題出在在master端(我們的CPU),表現為I2C_TIMEOUT,每2S timeout一次,
? ? 出現I2C_TIMEOUT典型之一,在I2C bus沒有上電的情況下去操作I2C,如:camera powerOff -> Write/Read I2C
?
作者:frank_zyp
您的支持是對博主最大的鼓勵,感謝您的認真閱讀。
本文無所謂版權,歡迎轉載。
總結
以上是生活随笔為你收集整理的Camera2 camera i2c总线协议介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OGRE分析之设计模式
- 下一篇: 上传文件夹