ZHCUB80C August 2004 – July 2023 PGA309
每当 PGA309 需要与外部 EEPROM 进行通信时,PGA309 必须作为两线制接口总线上的主器件。为了以可靠且有序的方式完成此过程,PGA309 包含了故障诊断功能,以便释放阻塞的总线。有多个监测器和算法可以检查总线可用性,并在其他器件与外部 EEPROM 并联时防止总线争用。
如果 PGA309 在其两线制或单线制接口上被寻址,并提供成功确认,则 PGA309 将停止所有作为两线制总线上主器件的事务,并放弃控制权 1.3 秒。每次在两线制总线上对 PGA309 寻址时,1.3 秒超时后都会复位,如图 4-13 所示。
图 4-14 详细说明了当 PGA309 必须成为两线制总线上的主器件时使用的算法。一个 33ms 计时器会启动。现在监测 SCL 是否为低电平。如果 SCL 不是低电平,PGA309 会检查两线制总线上的通信是否处于 START 和 STOP 之间。如果总线通信处于 START 和 STOP 之间,PGA309 会等待 33ms 计时器超时,然后检查 SDA 是否为低电平。如果 SDA 不是低电平并且 SCL 为高电平,PGA309 将成为总线主器件。如果在 33ms 间隔内有任何 SCL 活动,33ms 计时器将重新启动。
如果 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 为低电平。