I2C總線死鎖原因及解決方法
導致復位芯片動作,手動按鈕復位等等)有可能導致I2C總線死鎖產生。下面詳細說明一下總線死鎖產生的原因。
方法
SCL時鐘線產生9個時鐘脈沖(針對8位數據的情況),這樣I2C從設備就可以完成被掛起的讀操作,從死鎖狀態在正常情況下,I2C總線協議能夠保證總線正常的讀寫操作。但是,當I2C主設備異常復位時(看門狗動作,板上電源異常
導致復位芯片動作,手動按鈕復位等等)有可能導致I2C總線死鎖產生。下面詳細說明一下總線死鎖產生的原因。
方法
SCL時鐘線產生9個時鐘脈沖(針對8位數據的情況),這樣I2C從設備就可以完成被掛起的讀操作,從死鎖狀態中恢復過來。
這種方法有很大的局限性,因為大部分主設備的I2C模塊由內置的硬件電路來實現,軟件并不能夠直接控制SCL信號模擬
產生需要時鐘脈沖。
時,就在SCL總線上產生9個時鐘脈沖,使I2C從設備完成讀操作,從死鎖狀態上恢復出來。總線恢復設備需要有具有編程
功能,一般可以用單片機或CPLD實現這一功能。

總線緩沖器,并且具有I2C總線死鎖恢復的功能。LTC4307總線輸人側連接主設備,總線輸出側連接所有從設備。當LTC4307
檢測到輸出側SDA或SCL信號被拉低30ms時,就自動斷開I2C總線輸人側與輸出側的連接.并且在輸出側SCL信號上產生16個時鐘脈沖來釋放總線。當總線成功恢復后,LTC4307會再次連接輸人輸出側,使總線能夠正常工作。中恢復過來。
這種方法有很大的局限性,因為大部分主設備的I2C模塊由內置的硬件電路來實現,軟件并不能夠直接控制SCL信號模擬
產生需要時鐘脈沖。
時,就在SCL總線上產生9個時鐘脈沖,使I2C從設備完成讀操作,從死鎖狀態上恢復出來。總線恢復設備需要有具有編程
功能,一般可以用單片機或CPLD實現這一功能。

總線緩沖器,并且具有I2C總線死鎖恢復的功能。LTC4307總線輸人側連接主設備,總線輸出側連接所有從設備。當LTC4307
檢測到輸出側SDA或SCL信號被拉低30ms時,就自動斷開I2C總線輸人側與輸出側的連接.并且在輸出側SCL信號上產生16個時鐘脈沖來釋放總線。當總線成功恢復后,LTC4307會再次連接輸人輸出側,使總線能夠正常工作。
評論