在I2C、SPI等總線的設計中,由于平臺SOC總線接口數量的限制,一組總線接口通常會連接多個外設器件。
但有些時候,由于某些場景下,總線上掛載的器件會處于不同的狀態,此時可能會因為某些器件內部架構問題,導致總線異常。
以之前碰到的一個問題為例,同一組I2C總線接口上掛載SmartPA、背光IC、顯示驅動IC三顆器件。
由于早期BSP bringup的時候,分開對音頻和顯示模塊進行調試,此時兩個模塊均能正常打通,功能正常。
但是硬件整合模塊測試的時候發現,系統無法正常開機,log上報一直卡在Audio初始化。只要拔掉顯示屏,Audio就能初始化成功,系統就能正常跑下去。
通過測量I2C信號波形發現,此時總線被一直被拉低到0.3V。因為Audio的初始化是在顯示屏之前的,且顯示屏的VDDIO電源是獨立的,因此猜測是顯示屏內部與上拉電阻一起產生了回路,導致總線被拉死。
最終和供應商確認到,顯示驅動IC的所有IO接口都留有單向TVS管,如下圖所示。
當VDDIO還未上電時,紅色箭頭的回路得以產生,最終總線被TVS的正向導通電壓所鉗位。
初步解決對策,就是先對顯示模塊做初始化,即讓VDDIO先上電,此時總線恢復正常。但由于存在滅屏播放音樂的場景,所以Audio和顯示模塊的I2C必須加以隔離。
隔離的方案一種是選擇集成的level-shift,這種方案設計簡單、布局面積小,只需要注意VCCA和VCCB的電壓關系就行。(截圖未展示上拉電阻)
如果成本是關鍵,布局面積樂觀的話,可以采用分立器件去搭建,具體分析步驟這里不再贅述,需要注意的點是肖特基二極管的選擇。由于MOS管內部的體二極管正向導通壓降通常較大,因此需要外部并聯一顆導通壓降更低的二極管,保證I2C總線上的低電平盡可能逼近0V。
以上是對于總線并聯設計過程中碰到的一點小問題,希望對大家后續的設計和調試起到一點幫助。
以上就是本期分享的所有內容啦,歡迎大家持續關注,更多干貨正在快馬加鞭地趕來。