MT6739 Android 8.1 I2C口電平轉換低電平無法到0V的解決辦法

MT6739 Android 8.1 I2C口電平轉換低電平無法到0V的解決辦法

項目使用MOS管做I2C的電平轉換,I2C有內部上拉電阻,如下圖:
在這裏插入圖片描述
同樣的電路在其他平臺已經驗證過了,到了MT6739這個平臺發現,當I2C爲master,向salve發送數據時,S1點(藍色)和D1點(黃色)的低電平如下:
在這裏插入圖片描述
可以看到S1點沒有完全到0V,導致MOS管沒有完全導通,所以D1點也沒有降爲0V;
感覺像是GPIO口內部,低電平時候,先經過一個等效電阻R之後,纔到GND,如圖:
在這裏插入圖片描述
爲了驗證上面的猜測,將電平轉換電路的R2電阻,改爲47K,減小MOS管的DS電流之後,S1點(藍色)和D1點(黃色)的低電平如下:
在這裏插入圖片描述
可以看到此時S1和D1的低電平都接近0V,推測原因,可能是因爲,DS的電流減小之後,流過內部等效電阻R的電流減小,R上的壓降也減小,S1點電壓接近0V,MOS管導通,D1點也可以被拉到接近0V;

猜測內部電阻產生的原因是因爲IO口內部有電流限制,當限制的電流比較小的時候,內部等效電阻R的阻值就比較大
在這裏插入圖片描述
將電平轉換電路的R2電阻,恢復爲4.7K,然後修改IO口的驅動電流到最大值,下面DRV_CFG寄存器:
在這裏插入圖片描述
再測S1點(藍色)和D1點(黃色)的低電平如下:
在這裏插入圖片描述
可以看到此時S1和D1的低電平都接近0V,放大看如下圖:
在這裏插入圖片描述
但最低還是沒有完全到0V,推測原因,可能是因爲,增大IO驅動電流之後,內部等效電阻R的阻值確實減小,但是還有一定的阻值;

所以,確實是因爲電流限制的原因,導致內部形成等效電阻,哪如何能不限制電流?
詢問MTK後,修改如下寄存器:
在這裏插入圖片描述
EH_CFG寄存器設置爲0,GPIO mode,測試如下:
在這裏插入圖片描述
可以明顯看到,低電平幾乎是0V,並且低電平下降速率也更快了,和其他平臺的表現一致,回頭再修改DRV_CFG寄存器,基本上對波形沒有什麼影響了!

所以,應該是EH_CFG寄存器爲1,I2C mode的時候,IO口對電流的限制比較小,導致內部等效電阻R阻值比較大;當EH_CFG寄存器爲0,GPIO mode的時候,IO口對電流的限制比較寬,或者幾乎沒有限制,內部等效電阻R阻值非常小!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章