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