I2C常見問題總結

2021-10-14 15:10:19 字數 781 閱讀 2999

先看這裡:引用乙個資深硬體工程師的經驗總結

7種常見 i2c 問題總結.

在進行i2c協議檢測時,必須要進行scl、sda的波形抓取,以便於對i2c協議進行詳細的分析和問題查詢定位。防止scl、sda兩根線交叉反掉,避免虛焊或者短路情況的出現。(1)檢查原理圖和pcb板是否有上拉的4.7k電阻

(2)因為上拉電阻影響scl邊界 rise和fall 的持續時間。在高速率通訊時,scl時鐘線的上公升沿和下降沿以及latch高電平鎖定時間,會隨著通訊速率的提高而越來越嚴苛。

(1)軟體模擬i2c:作為sda、scl兩個gpio必須配置為開漏高速輸出mode,注意不可配置為pp推挽模式。因為不配置為開漏輸出會出現導致scl和sda 電壓拉不到0v伏的情況,會導致輸出的資料出錯。

(2)無論是使用硬體i2c還是軟體i2c,都需要注意i2c通訊速率要和外設i2c速率相匹配。

(3)軟體**是否初始化gpio設定為開漏輸出open drain output,避免同一i2c匯流排掛在多個i2c外設時出現bus contention現象

通過第一步的波形抓取,確定從機位址是否需要移位操作

需要抓波形檢視ack,是否有clock stretch的情況出現

特別注意:模擬i2c讀寫操作時,都要考慮被系統中的其它中斷打斷導致i2c的讀取資料受到影響,導致讀寫都是0xff或者0。

解決方法:需要在i2c讀寫操作前遮蔽中斷,完成讀寫後開啟中斷。使用 basepri() 遮蔽可遮蔽中斷

i2c學習總結

i2c匯流排驅動框架詳解 i2c的驅動主要分為三個部分 裝置驅動層,核心驅動層和匯流排驅動層 裝置驅動層 i2c dev.c 是使用者的介面,主要作用就是定義資料傳輸的內容,但是不知道傳輸資料的機制 核心區動層 i2c core.c 是開發程式設計的介面,i2c核心提供了i2c匯流排驅動 介面卡 和...

I2C讀寫問題

a.完全不能進行讀寫 1 通訊協議不正確 有很多的i2c裝置,並不支援所有的i2c協議,同時也不是乙個比較標準的i2c裝置 軟體的通訊時序不正確。2 i2c裝置位址不正確 有很多的i2c裝置的位址是可以通過硬體設定的 也有器件資料提供的資料是錯誤的。3 i2c通訊線上沒有加上拉電阻 由於i2c的從裝...

I2C問題積累

a.完全不能進行讀寫 1 通訊協議不正確 有很多的i2c裝置,並不支援所有的i2c協議,同時也不是乙個比較標準的i2c裝置 軟體的通訊時序不正確。2 i2c裝置位址不正確 有很多的i2c裝置的位址是可以通過硬體設定的 也有器件資料提供的資料是錯誤的。3 i2c通訊線上沒有加上拉電阻 由於i2c的從裝...