当有挂起的 I2C 中断等待处理时,MCF8315C-Q1 中的 I2C 外设在特定条件下实施时钟延展。在时钟延展期间,MCF8315C-Q1 将 SCL 拉为低电平,I2C 总线不可供其他器件使用。下面列出了可能发生时钟延展的条件:
- 启动中断挂起:在两种情况下,启动中断可能导致时钟延展,
- 当目标 ID 匹配时,MCF8315C-Q1 中的 I2C 外设发出启动中断请求。在处理该启动中断请求之前,时钟将延展。在处理此请求时,将释放时钟,并向控制器发送 ACK(在图 6-55 和图 6-56 中标记为黄色或灰色)以继续事务。
- 如果在尚要处理来自前一个事务的接收中断时接收到新事务的开始(后跟目标 ID 匹配),则时钟将延展,直到按时间顺序处理接收中断和启动中断。该过程可确保在启动下一个事务之前正确执行前一个事务。
- 接收中断挂起:如果接收中断等待处理并且接收寄存器已满,当 MCF8315C-Q1 接收到两个连续的字节(数据或控制)(由一个 ACK 分隔,如图 6-55 和图 6-56 中的蓝色框所示),而没有处理由第一个字节生成的接收中断时,就会发生这种情况。接收到第二个字节后,时钟延展,直到处理由第一个字节生成的接收中断。
- 发送缓冲器为空:在发送中断挂起(将数据发送回控制器)的情况下,如果发送缓冲器正在等待填充要读回控制器的数据,则将执行时钟延展,直到发送缓冲器填充了所请求的数据。填充缓冲器后,释放时钟并将数据发送到控制器。
注: MCF8315C-Q1 在 5ms 后使 I2C 时钟延展超时,以允许同一总线上的其他器件访问 I2C 总线。