當有掛起的 I2C 中斷等待處理時,MCF8316D 中的 I2C 外設在特定條件下實施時鐘延展。在時鐘延展期間,MCF8316D 將 SCL 拉為低電平,I2C 總線不可供其他器件使用。下面列出了可能發生時鐘延展的條件:
- 啟動中斷掛起:在兩種情況下,啟動中斷可能導致時鐘延展,
- 當目標 ID 匹配時,MCF8316D 中的 I2C 外設發出啟動中斷請求。在處理該啟動中斷請求之前,時鐘將延展。在處理此請求時,將釋放時鐘,并向控制器發送 ACK(在圖 7-65 和圖 7-66 中標記為黃色或灰色)以繼續事務。
- 如果在尚要處理來自前一個事務的接收中斷時接收到新事務的開始(后跟目標 ID 匹配),則時鐘將延展,直到按時間順序處理接收中斷和啟動中斷。該過程可確保在啟動下一個事務之前正確執行前一個事務。
- 接收中斷掛起:如果接收中斷等待處理并且接收寄存器已滿,當 MCF8316D 接收到兩個連續的字節(數據或控制)(由一個 ACK 分隔,如圖 7-65 和圖 7-66 中的藍色框所示),而沒有處理由第一個字節生成的接收中斷時,就會發生這種情況。接收到第二個字節后,時鐘延展,直到處理由第一個字節生成的接收中斷。
- 發送緩沖器為空:在發送中斷掛起(將數據發送回控制器)的情況下,如果發送緩沖器正在等待填充要讀回控制器的數據,則將執行時鐘延展,直到發送緩沖器填充了所請求的數據。填充緩沖器后,釋放時鐘并將數據發送到控制器。
注: MCF8316D 在 5ms 后使 I2C 時鐘延展超時,以允許同一總線上的其他器件訪問 I2C 總線。