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