一、實際應用開發中遇到的“坑”
??(1)不要使用邏輯分析儀的自動分析功能,這款軟件BUG太多,波形的分析還是需要自己根據時序來,不要依賴工具;

??(2)在I2C的時序通信過程中,從機必然是要有ACK信號回復的,不然整個通信是不可能進行下去。之前以為ACK并非從機發送的,即使沒有從機也可以在GM5的引腳上觀察到完整的I2C時序圖,卡在這里很久。如果沒有從機,邏輯分析儀只能抓取到主機兩次尋址的波形。

??(3)關于I2C從設備地址的問題,之前在開發中是直接把從設備地址寫上去,后面發現無論使用任何方法都無法啟動設備,一度卡了很久,后面在問題的分析過程中發現原廠的驅動會把地址左移一位。

??所以我們需要把設備地址右移一位后再使用:

??(4)關于外設的電源供電問題,一定要嚴格按照說明來,比如RTC module的供電是5V,OLED屏幕的供電是3.3V,那么就不能使用GM5的3.8V VDD引腳進行供電,會提高bug出現的幾率或者無法啟動外設。可以借用DC POWER SUPPLY進行供電。
??(5)由于我拿到手的RTC和OLED只是外設,沒有芯片手冊和說明書,所以在確定外設的從設備地址這件事情上耽誤了很長時間。但是同一類型的外設的從設備地址也是有規律的,比如時鐘RTC的地址一般是0X68,OLED的地址一般是0X3C或者0X3D,紅外傳感器的地址是0X60。具體的常見I2C從設備地址可以參考文章https://www.arduino.cn/thread-84222-1-1.html,一篇非常完整的總結。
二、I2C開發總結
??如果遇到了故障,一般而言排故的方法遵循以下步驟:
??(1)首先檢查硬件本身,如果主設(GM5)或者外設(OLED屏幕和RTC時鐘模塊)本身就有問題,模塊本身燒掉了肯定無法實驗成功,所以要確保硬件本身沒有問題,對外設的檢查可以使用替換法或者讀寄存器的地址。
??(2)第二步就是檢查線路的連接,線路是否正確連接。一般先連線GND,在連接數據線(I2C、SPI通信數據線),確認無誤后最后再連線VCC進行供電。同時請確保杜邦線的良好。
??(3)最后才是軟件層次的檢查。先要確保你的參數是正確,比如設備地址;然后是對空間的申請釋放、野指針的不當操作、一級指針二級指針的錯誤使用;對故障的定位需要使用大量log信息打印來鎖定故障點在哪里,也可以使用ResearchDownload的DBG功能進行調試。
原文標題:二、I2C開發總結
文章出處:【微信公眾號:愛搞研究的阿燦】歡迎添加關注!文章轉載請注明出處。
-
I2C
+關注
關注
28文章
1510瀏覽量
126245 -
邏輯分析儀
+關注
關注
3文章
216瀏覽量
23516 -
RTC
+關注
關注
2文章
602瀏覽量
67956 -
I2C通信
+關注
關注
0文章
22瀏覽量
9052
發布評論請先 登錄
相關推薦
I2C讀寫時序分析和實現思路

MCU實現I2C通信

硬件I2C與模擬I2C

I2C通信協議及其工作原理
I2C通信協議:了解I2C Primer、 PMBus和SMBus

評論