ZHCUB80C August 2004 – July 2023 PGA309
每當 PGA309 需要與外部 EEPROM 進行通信時,PGA309 必須作為兩線制接口總線上的主器件。為了以可靠且有序的方式完成此過程,PGA309 包含了故障診斷功能,以便釋放阻塞的總線。有多個監測器和算法可以檢查總線可用性,并在其他器件與外部 EEPROM 并聯時防止總線爭用。
如果 PGA309 在其兩線制或單線制接口上被尋址,并提供成功確認,則 PGA309 將停止所有作為兩線制總線上主器件的事務,并放棄控制權 1.3 秒。每次在兩線制總線上對 PGA309 尋址時,1.3 秒超時后都會復位,如圖 4-13 所示。
圖 4-13 PGA309 在主模式下放棄兩線制總線圖 4-14 詳細說明了當 PGA309 必須成為兩線制總線上的主器件時使用的算法。一個 33ms 計時器會啟動。現在監測 SCL 是否為低電平。如果 SCL 不是低電平,PGA309 會檢查兩線制總線上的通信是否處于 START 和 STOP 之間。如果總線通信處于 START 和 STOP 之間,PGA309 會等待 33ms 計時器超時,然后檢查 SDA 是否為低電平。如果 SDA 不是低電平并且 SCL 為高電平,PGA309 將成為總線主器件。如果在 33ms 間隔內有任何 SCL 活動,33ms 計時器將重新啟動。
圖 4-14 兩線制總線主器件算法如果 SCL 在整個 33ms 計時器倒計時期間均保持低電平,則 PGA309 會等待 33ms,然后再次啟動 33ms 計時器以開始檢查總線是否處于空閑狀態(SDA = SCL =“1”)。
如果 SDA 在 33ms 計時器倒計時后為低電平,PGA309 會將此情況解釋為總線阻塞情況。PGA309 嘗試通過發送最多十個 SCL 時鐘來釋放 SDA,從而釋放阻塞的總線。如果成功使 SDA 變為高電平,則 PGA309 會發送一個 START 和 STOP 序列,以確保對導致總線阻塞的任何器件進行完全復位。現在總線應該處于空閑狀態(SDA = SCL =“1”),并且 PGA309 可以成為總線上的主器件。
如果 PGA309 在總線上作為主器件進行通信并發現爭用,則 PGA309 會釋放總線并在 33ms 后重試。爭用是指 PGA309 希望 SCL 為高電平但 SCL 為低電平,或希望 SDA 為高電平但 SDA 為低電平。