i2c(inter-integrated circuit)匯流排是由philips公司開發的兩線式序列匯流排,用於連線微控制器及其外圍裝置。是微電子通訊控制領域廣泛採用的一種匯流排標準。
通過序列資料(sda)線和序列時鐘 (scl)線在連線到匯流排的器件間傳遞資訊。通過序列資料(sda)線和序列時鐘 (scl)線在連線到匯流排的器件間傳遞資訊。每個器件都有乙個唯一的位址識別(無論是微控制器——mcu、lcd 驅動器、儲存器或鍵盤介面),而且都可以作為乙個傳送器或接收器(由器件的功能決定)。除了傳送器和接收器外,器件在執行資料傳輸時也可以被看作是主機或從機(見表1)。主機是初始化匯流排的資料傳輸並產生允許傳輸的時鐘訊號 的器件。此時,任何被定址的器件都被認為是從機。
2條雙向序列線,一條資料線sda,一條時鐘線scl。
sda傳輸資料是大端傳輸,每次傳輸8bit,即一位元組。
支援多主控(multimastering),任何時間點只能有乙個主控。
匯流排上每個裝置都有自己的乙個addr,共7個bit,廣播位址全0.
系統中可能有多個同種晶元,為此addr分為固定部分和可程式設計部份,細節視晶元而定,看datasheet。
傳送/接收乙個資料:資料的傳送和接收都是在scl為低電平的時候發生,因為scl為高電平時已給了開始和結束訊號。傳送資料時,當資料準備讀入時,將scl線暫時拉高(scl為高時,sda無法改變狀態),保持一段時間然後拉低(同你圖中的tdh,資料輸出保持時間),這時資料則傳送完畢到sda上。接收則與之大同小異。當sda線上有資料過來時,先將scl拉高,建立好時間,然後拉低,資料則被讀入。(關於如何被發出以及如何被讀入則是晶元做的事,我們不用管,只需記住scl拉低,資料發出/讀入)
傳送/接收乙個資料:資料的傳送和接收都是在scl為低電平的時候發生,因為scl為高電平時已給了開始和結束訊號。傳送資料時,當資料準備讀入時,將scl線暫時拉高(scl為高時,sda無法改變狀態),保持一段時間然後拉低(同你圖中的tdh,資料輸出保持時間),這時資料則傳送完畢到sda上。接收則與之大同小異。當sda線上有資料過來時,先將scl拉高,建立好時間,然後拉低,資料則被讀入。(關於如何被發出以及如何被讀入則是晶元做的事,我們不用管,只需記住scl拉低,資料發出/讀入)
i2c除錯記錄
i2c簡單時序關係 平時clk sda都為高電平 當clk為高,sda發生一次下降沿,觸發開始訊號 然後由clk的高電平期間取樣 sda資料,在clk高時候需要保持sda 先傳送7位位址和一位讀寫標誌 所以i2c位址一般是7位的 然後接收端回乙個ack 然後傳送8位reg位址,回乙個ack 然後就是...
匯流排全記錄 I2C
i2c 是很常見的一種匯流排協議,i2c 是 nxp 公司設計的,i2c 使用兩條線在主控制器和從機之間進行資料通訊。一條是 scl 序列時鐘線 另外一條是 sda 序列資料線 這兩條資料線需要接上拉電阻,匯流排空閒的時候 scl 和 sda 處於高電平。i2c 匯流排標準模式下速度可以達到 100...
I2C匯流排學習
i2c的時序圖,如下所示 匯流排應當時序圖 i2c時序要求 空閒狀態 scl和sda都是處於高電平。起始訊號 在scl時鐘線為高電平期間,sda輸出下降沿。停止訊號 在scl時鐘線為高電平期間,sda輸出上公升沿。應答訊號 傳送器每傳送乙個位元組,就在時鐘scl第9個脈衝釋放資料線,由接收器反饋乙個...