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