37.3.11 Clock Stretching
Clock stretching occurs when a client device holds the SCL line low to pause bus
communication. A client device may stretch the clock to allow more time to process
incoming data, prepare a response for the host device, or to prevent Receive Overflow or
Transmit Underflow conditions. Clock stretching is enabled by clearing the Clock Stretch
Disable (CSD)
bit and is only available in Client and Multi-Host modes.
When clock stretching is enabled (CSD =
0
), the Client Clock Stretching (CSTR) bit can be used to determine if the clock is currently being
stretched. While the client is actively stretching the clock, CSTR is set by hardware
(CSTR = 1
). Once the client has completed its current transaction and
clock stretching is no longer required, either module hardware or user software must
clear CSTR to release the clock and resume communication.