關於I2C通訊BUG小積累之通訊頻率

2021-09-09 06:55:24 字數 572 閱讀 9551

i2c的協議網上有很多講解的非常好,可以參考其他人的總結複習一下協議內容 如: 。

前些日子遇到了乙個i2c通訊的問題,耗了不少精力和時間才解決,特地記錄一下:

場景: rk3288 android7.1 主機板 和 乙個普通的i2c外設小板。當外設小板中的資訊更新時,會給3288主機板傳送中斷訊號,3288主機板通過i2c匯流排讀取外設小板暫存器資訊。

問題: 寫完驅動程式後,發現主機板讀取的i2c外設小板的暫存器數值與預期不符,所以用 i2c-tools 工具測試了一下,發現用 i2c-tools 工具所讀取到的數值與我寫的驅動所讀取的數值是一樣的,反正現象就是,i2c外設小板能夠掛載,並且可以讀取資料,但是資料不正確,但是具有一定的規律性。並且用兩個相同的外設小板微控制器互作主從機通訊有效,和3288主機板通訊無效。測試波形,發現兩個相同的外設小板通訊的時候測的波形,頻率只有不到10hz, 而3288主機板預設的i2c通訊頻率是 100~400khz,兩者相差甚遠,微控制器外設小板的io翻轉速度跟不上主機的100khz的速率。最終解決辦法是如果微控制器外設小板的頻率可以提高到100khz 則改動微控制器頻率。否則只能3288主機板放棄原來的i2c,自己用io就模擬i2c通訊 降低頻率即可。

I2C問題積累

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

I2C通訊技術

對於嵌入式開發的朋友來說,i2c協議實在是再熟悉不過了,有太多的器件,採用的都是通過i2c來進行相應的設定。今天,我們就隨便聊聊這個i2c協議。i2c協議中最重要的一點是i2c位址。這個位址有7位和10位兩種形式。7位能夠表示127個位址,而在實際使用中基本上不會掛載如此多的設定,所以很多裝置的位址...

I2C匯流排通訊

uart 屬於非同步通訊,比如電腦傳送給微控制器,電腦只負責把資料通過txd 傳送出來即可,接收資料是微控制器自己的事情。而 i2c 屬於同步通訊,scl 時鐘線負責收發雙方的時鐘節拍,sda 資料線負責傳輸資料。i2c 的傳送方和接收方都以 scl 這個時鐘節拍為基準進行資料的傳送和接收。i2c匯...