一、實際應用開發中遇到的“坑”
??(1)不要使用邏輯分析儀的自動分析功能,這款軟件BUG太多,波形的分析還是需要自己根據時序來,不要依賴工具;
![572bfa14-da9f-11ed-a826-dac502259ad0.png](https://file1.elecfans.com//web2/M00/99/CE/wKgZomTni_KAPsFfAAEF6khn2yI940.png)
??(2)在I2C的時序通信過程中,從機必然是要有ACK信號回復的,不然整個通信是不可能進行下去。之前以為ACK并非從機發送的,即使沒有從機也可以在GM5的引腳上觀察到完整的I2C時序圖,卡在這里很久。如果沒有從機,邏輯分析儀只能抓取到主機兩次尋址的波形。
![574dce64-da9f-11ed-a826-dac502259ad0.png](https://file1.elecfans.com//web2/M00/99/CE/wKgZomTni_KAAub8AAKuLZxxBMQ050.png)
??(3)關于I2C從設備地址的問題,之前在開發中是直接把從設備地址寫上去,后面發現無論使用任何方法都無法啟動設備,一度卡了很久,后面在問題的分析過程中發現原廠的驅動會把地址左移一位。
![57730b98-da9f-11ed-a826-dac502259ad0.png](https://file1.elecfans.com//web2/M00/99/CE/wKgZomTni_KATbLNAAEBFC_ugvo334.png)
??所以我們需要把設備地址右移一位后再使用:
![577ce6b8-da9f-11ed-a826-dac502259ad0.png](https://file1.elecfans.com//web2/M00/99/CE/wKgZomTni_KAMR5MAABh7nNNgz0039.png)
??(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文章
1489瀏覽量
123938 -
邏輯分析儀
+關注
關注
3文章
214瀏覽量
23196 -
RTC
+關注
關注
2文章
539瀏覽量
66673 -
I2C通信
+關注
關注
0文章
22瀏覽量
8864
發布評論請先 登錄
相關推薦
I2C讀寫時序分析和實現思路
![<b class='flag-5'>I2C</b>讀寫時序分析和實現思路](https://file1.elecfans.com/web2/M00/A5/EC/wKgaomUP-DqAKpoyAAKWOiywwFM460.jpg)
I2C Guid I2C指南
MCU實現I2C通信
![MCU實現<b class='flag-5'>I2C</b><b class='flag-5'>通信</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
硬件I2C與模擬I2C
![硬件<b class='flag-5'>I2C</b>與模擬<b class='flag-5'>I2C</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
I2C通信協議及其工作原理
I2C通信協議:了解I2C Primer、 PMBus和SMBus
![<b class='flag-5'>I2C</b><b class='flag-5'>通信</b>協議:了解<b class='flag-5'>I2C</b> Primer、 PMBus和SMBus](https://file1.elecfans.com/web2/M00/89/C6/wKgZomSKvsWAdY77AAA276SHfaM213.png)
評論