引言:I2C作為使用最為廣泛的通訊接口,調試各類I2C器件,大家應該都很輕車熟路。一般對于外掛電阻配置器件的I2C地址,例如電阻上拉之后,器件的地址就會固定下來不再變動,但是今天給大家分享一個自己的調試案例,即I2C地址跳變問題。
1.問題背景
該器件對外一起只有四個引腳:SDA、SCL、INT、RESET,其中對外輸出中斷引腳INT兼具器件地址設定功能,將INT上拉至VDDIO,地址為0X8A,INT無上拉,地址為0X88。
圖3-1:控制線部分原理圖
在上電啟動之后,連續運行Linux地址查詢命令,如圖3-2所示,查詢地址為0X45(7位地址,按8位即0X8A)。
圖3-2:讀取地址為0X45
斷電再重啟,然后運行查詢命令,如圖3-3所示,會偶發檢測到地址跳變為0X44(0X88)。
圖3-3:重新下電上電后讀取地址
此時正確地址應該是0X45,所以偶發檢測地址跳變為0X44說明器件上電初始對INT處的配置發生了誤判。
2.懷疑點和排除過程
前端設備的高低電平影響
因為INT引腳是兼具I2C地址配置,如果INT存在初始拉低等情況,就會影響器件判斷地址,在Application里面講到:TP2912A通過在復位期間捆扎INT引腳來提供兩個設備地址,0x88或0x8A。引腳上的上拉電阻器使設備地址為0x8A,如果電阻器不存在,則內部下拉電阻器的設備地址將為0x88。在選擇設備地址時要注意,在判斷復位期間,一些前端芯片可以強制驅動INT信號的邏輯低或高。在這種情況下,設備地址的檢測可能是錯誤的,因為前端芯片驅動的邏輯電平與上拉或下拉電阻器無關,如果無法避免這些情況,則如果設備地址選擇正確,則可以通過讀取寄存器0xfe中的設備ID來實現軟件工作。
圖3-4:推薦INT Mode下讀取地址程序
最開始測量INT點的電平,大約1.4V,所以其實INT引腳一直是高電平沒有問題,然后斷開INT與SOC的連接,繼續上下電讀地址,依然有I2C地址跳變問題存在,并且斷開后單獨測量SOC端的INT,為低電平0V,說明SOC沒有配置這個引腳,沒有使用到INT功能(軟件端也確認過),所以排除前端設備影響INT的配置。
引腳耦合
引腳耦合這個理論上存在,但是實際中很難遇到,并且高達1.8V和0V的壓差,耦合能量達到這么多幾乎不可能,所以理論上排除引腳耦合問題。
上拉閾值臨界
手冊上的VDDIO是3.3V,并沒有標注1.8V可以使用,使用1.8V是FAE的建議,也為了和前端SOC電平適配,所以是否1.8V處于一個臨界上拉閾值導致器件判斷失真。為了驗證這一疑點,將INT上拉電阻取消,此時INT處于懸空(同時斷開前級),地址應該固定為0X44,但依然存在地址跳變,說明也不是上拉閾值臨界,注意這里的INT懸空并不等同于下拉到GND。
時序排查
考慮到是上下電過程中觸發地址誤判,不斷電情況下地址不會變動,所以會不會存在這樣一種時序情況:在VDDIO還在上電的過程中,器件就開始讀INT的配置,此時電壓臨界。測量器件上電時序如下圖3-5 ,其中C1是DVDD(1.2V),C2是RESET,C3是1.8V,C4是XTI(27MHz晶振輸入)。
圖3-5:關鍵信號上電時序
從圖中可以看到,在XTI還在起振時,DVDD還處于上升階段,此時芯片邏輯核心可能還沒有開始工作,邏輯核心影響了器件讀I2C地址。Application里面也提到了這一時序要求:由于POC(上電序列)功能在上電/斷電事件期間在芯片內部操作,因此對每個電源樹的上電和斷電序列沒有要求,復位應在晶體振蕩器穩定后至少10個周期保持低電平,如圖3-6所示:
圖3-6:Application推薦Reset操作
為了驗證這一猜想,首先觸發一次0X44地址,然后不斷電,給RESET一個復位拉低,然后再讀地址,看地址是否會恢復到0X45,當然這里也可以使用手動復位,將RESET引腳手動接一下GND。
圖3-7:不斷電驗證地址恢復
如圖3-7所示,觸發之后0X44變為0X45,驗證有效,說明和猜想一致,最終確定是時序的問題。
3.如何修正
修正也很簡單,如圖3-8所示,前端SOC在上電之后10ms將Reset拉低,拉低時間≥10us。
圖3-8:復位時間預估
4.總結
I2C地址跳變的問題比較難遇到,因為大多數器件是獨立配置地址,如果是GND配置,自然不會考慮時序問題,但如果是上拉配置,就需要注意電壓時序問題,在系統起來之前,配置電壓就應該完全到位,如果有類似的情況或者電壓無法調整,此時Reset不失為一種可靠的方法,不斷電的情況下復位系統邏輯,器件就會重新去讀地址然后寫入寄存器,另外這一步需要放置主程序運行之前,否側運行中地址變化會發生通訊中斷。
-
調試
+關注
關注
7文章
589瀏覽量
34062 -
引腳
+關注
關注
16文章
1220瀏覽量
50898 -
通訊接口
+關注
關注
2文章
80瀏覽量
16239 -
I2C器件
+關注
關注
0文章
2瀏覽量
6584
發布評論請先 登錄
相關推薦
評論