MCF8315C-Q1 の I2C ペリフェラルは、処理待ちで保留中の I2C 割り込みが存在する特定の条件において、クロック ストレッチングを実行します。クロック ストレッチング中、MCF8315C-Q1 は SCL を Low にプルし、I2C バスは他のデバイスでは使用できなくなります。クロック ストレッチングが発生する可能性がある条件を以下に示します。
- 開始割り込み保留中:開始割り込みによってクロック ストレッチングが発生する場合には、2 つのシナリオがあります。
- ターゲット ID が一致すると、MCF8315C-Q1 の I2C ペリフェラルが開始割り込み要求を出します。この開始割り込み要求が処理されるまで、クロック ストレッチングが行われます。この要求が処理されると、クロックが解放され、ACK (図 6-54 と 図 6-55 では黄色または灰色) がコントローラに送信されて、トランザクションを続行します。
- 前のトランザクションからの受信割り込みが未処理の状態で、新しいトランザクションの Start (ターゲット ID の一致) を受信した場合、受信割り込みと開始割り込みの両方が時系列順に処理されるまで、クロック ストレッチングが行われます。この処理により、次のトランザクションを開始する前に、前のトランザクションが正しく実行されます。
- 受信割り込み保留中:受信割り込みの処理待ち状態で、受信レジスタがフルになると、処理対象の 1 バイト目によって生成された受信割り込みが処理されないまま、MCF8315C-Q1 が 2 バイト (データまたはコントロール) を連続して受信します (図 6-54 と 図 6-55 の青枠で示されている ACK を 1 回挟んで)。2 バイト目を受信すると、1 バイト目によって生成された受信割り込みが処理されるまで、クロック ストレッチングが行われます。
- 送信バッファ空:送信割り込み保留中 (データをコントローラに送り返すため) の場合、送信バッファがコントローラに読み戻すデータの入力待機状態であるとき、要求されたデータが送信バッファに入力されるまでクロック ストレッチングが行われます。データがバッファに入力された後、クロックは解放され、データがコントローラに送信されます。
注: I2C クロック ストレッチングは、MCF8315C-Q1 によって 5ms 後にタイムアウトし、同じバス上の他のデバイスが I2C バスにアクセスできるようになります。