29.4.1 Clock Stretching

When a client device has not completed processing data, it can delay the transfer of more data through the process of clock stretching. An addressed client device may hold the SCL clock line low after receiving or sending a bit, indicating that it is not yet ready to continue. The host that is communicating with the client will attempt to raise the SCL line to transfer the next bit, but will detect that the clock line has not yet been released. Because the SCL connection is open-drain, the client has the ability to hold that line low until it is ready to continue communicating.

Clock stretching allows receivers that cannot keep up with a transmitter to control the flow of incoming data.