ZHCAE64 July 2024 TCA4307
當需要讀取信息或需要通過總線傳輸數(shù)據(jù)時,SDA 一直處于低電平會導(dǎo)致問題。有幾種可能的方法可以釋放總線。如果總線的系統(tǒng)設(shè)計人員能夠修改或構(gòu)建總線上處理器或主機的軟件,他們可以為處理器或主機編寫代碼,以便尋找潛在的總線阻塞問題,并做出反應(yīng)以嘗試解決該問題。對于 I2C 總線,為了實現(xiàn)此目的,可以將串行時鐘線路 (SCL) 切換八到十六次,然后發(fā)出停止條件。這樣可以推進在整個處理流程中使串行數(shù)據(jù)線路 (SDA) 保持低電平的 I2C 器件狀態(tài)機,將狀態(tài)機復(fù)位為空閑狀態(tài)以釋放總線。對于 SMBus,SCL 線路保持低電平的時間可能超過 t_timeout,這可能強制所有 SMBus 器件全部復(fù)位并解決總線阻塞問題。如果 I2C 目標器件有一個專用的復(fù)位引腳,則總線上的處理器可以啟動復(fù)位以釋放總線。但是,如果存在大量 I2C 目標器件,這種設(shè)計的效率很低??梢詮娭铺幚砥鲗B接到該復(fù)位引腳的所有目標器件進行復(fù)位,從而使總線上的所有 I2C 目標器件重新初始化(盡管最初只有一個器件導(dǎo)致總線阻塞問題)。
從硬件角度來看,使用具有熱插入保護功能的 I2C 緩沖器器件可以解決因熱插入事件導(dǎo)致的總線阻塞問題。TCA9511A 和 TCA4307 具有專用邏輯可用于將未通電的 I2C 總線(子卡)與通電的 I2C 總線(背板)分離,直到兩側(cè)都準備好連接,從而防止總線上出現(xiàn)干擾。面向熱插拔應(yīng)用的 I2C 解決方案 應(yīng)用手冊中詳細介紹了這種安全連接機制。
為了解決由串擾、EMI 或不良的上電復(fù)位引起的總線阻塞問題,可將 TCA4307 設(shè)計用于 I2C 總線,因為其具有一種稱為總線阻塞恢復(fù)的附加功能??偩€阻塞恢復(fù)功能可以檢測 SDA 線路是否一直處于低電平。如果器件一直處于低電平的時間超過 40ms (t_stuckbus),則會將下游 I2C 總線與上游 I2C 總線斷開,并將 RDY 引腳驅(qū)動為低電平。這樣會讓處理器知道下游通道已從總線斷開。因此,可以防止 I2C 控制器/處理器通常所在的上游總線發(fā)生阻塞,并允許繼續(xù)與上游總線段上的其他 I2C 器件通信。TCA4307 隨后可生成多達 16 個時鐘脈沖,直至 SDA 線路釋放。然后,TCA4307 可發(fā)出一個停止條件來嘗試將 I2C 器件的狀態(tài)機復(fù)位為空閑狀態(tài)。如果總線阻塞問題得到解決,TCA4307 可以自動重新連接下游總線和上游總線。
從下圖可以看到這一點。通道 1(藍色)是 SCL 線路,通道 4(綠色)是 SDA 線路,通道 3(紫色)是 RDY 引腳,這表示下游總線和上游總線再次連接在一起。在圖 6-1 所示的示例中,在 6 個時鐘脈沖過后,TCA4307 會控制 SDA 線路以發(fā)出停止條件,總線即由 TCA4307 解除阻塞。
圖 6-1 總線阻塞恢復(fù)功能的波形示例