I2C通訊協議

2021-07-26 04:54:25 字數 809 閱讀 3766

i2c是一種個非常常見的序列通訊協議,由sda,scl兩根線組成,分別為資料訊號線和時鐘訊號線。直接從它的時序圖開始分析

起始訊號:scl高電平期間,sda由高電平到低電平表示為起始訊號。i2c裝置檢測到起始訊號知道要開始接受傳輸的裝置。

結束訊號:scl高電平期間,sda由低電平到高電平表示為結束訊號。i2c裝置檢測到結束訊號後知道對方已經結束資料傳輸。

資料傳遞:i2c裝置只在scl為高電平時讀取sda的狀態,也就是說sda的電平狀態必須在scl高電平時保持穩定,在scl低電平期間再產生變化。

響應訊號:cpu把資料發給i2c裝置,cpu怎麼知道i2c裝置接受到了資料呢?這就需要到這個響應訊號(ack)——在裝置接受完八位資料後,在第九個時鐘週期,sda引腳相對於cpu變為輸入模式,並拉低sda為低電平,在之後釋放sda資料線。

一條i2c(或者說兩條...)可以訪問多個裝置,是怎麼訪問的呢?

讀資料:傳送完裝置位址後先寫位址位置0選擇寫模式,為什麼要選擇』寫『?因為要先選擇你要讀儲存晶元內部哪一位址的資料,這裡的word adress就是你通過cpu寫下這個位址告訴儲存晶元我要讀訪問這位址的資料,寫完後對方回應。再寫一次裝置位址,這次選擇』讀『模式,把資料給讀回來。

i2c通訊協議

通訊協議 用來實現資料傳輸。i2c物理匯流排 scl 時鐘線 sda 資料線 i2c通訊協議是 序列 同步 半雙工 的通訊方式。i2c物理匯流排中,scl時鐘線只能由 mcu來控制。sda資料線可以收發資料。i2c通訊必須是 mcu和 i2c從裝置之間的雙方通訊。一條i2c匯流排上可以掛載多個 i2...

I2C匯流排通訊協議

i2c是inter integrated circuit的簡稱,讀作 i squared c。由飛利浦公司於1980年代提出,為了讓主機板 嵌入式系統或手機用以連線低速周邊外部裝置而發展。主要用途 soc和周邊外設間的通訊 如 eeprom,電容觸控晶元,各種sensor等 i2c匯流排只使用兩條雙...

i2c通訊協議及Linux讀寫函式

有的晶元提供的是帶讀寫位的位址,有的是7位裝置位址,注意分辨。如果是帶讀寫位的位址,需要右移一位得到7位裝置位址。讀寫位 0寫,1讀。應答訊號 0應答,1非應答。停止訊號 scl高電平,sda產生乙個上公升沿。int i2c write reg unsigned char regaddr,unsig...