ZHCAE64 July 2024 TCA4307
I2C 總線阻塞是指在 SCL 線路為高電平時 SDA 線路無限期保持低電平。這種情況會帶來問題,因為通常總線上有多個 I2C 器件,如果 SDA 線路一直處于低電平,則無法再進行 I2C 通信。在這種情況下,I2C 控制器無法控制 SDA 線路,因此無法發出啟動和停止條件。在最壞的情況下,甚至處理器也可能會一直處于等待 SDA 線路變為高電平的狀態。由于處理器處于無限期等待狀態,不再執行任何其他代碼行,因此可能導致整個系統或終端設備卡住。本文重點介紹這種特定類型的 I2C 總線阻塞問題,并提供嘗試解決此類總線阻塞問題的一些方法。
還有另一種類型的 I2C 總線阻塞事件,即 SCL 線路可能一直處于低電平。通常,I2C 總線上唯一可以控制 SCL 線路的器件是會發出 SCL 脈沖的 I2C 控制器。不過,有一些 I2C 目標器件可以執行時鐘延展,在極少數情況下,可能會導致時鐘一直處于低電平。在這些情況下,唯一的恢復方法可能是對使總線一直處于低電平的器件進行復位或下電上電。