SWRU626 December 2025 CC3501E , CC3551E
The Clock Stretching can be disabled if no Targets on the bus support clock stretching, allowing the Controller to reach the maximum speed on the bus. Otherwise the clock may be slowed by a Target keeping the clock Low or due to the clock status detection delay within the I2C module.
To ensure compliance to the I2C specification, clock stretching needs to be enabled. Clock stretching is activated when either the RX FIFO full or TX FIFO empty is set.
Clock stretching support can be enabled or disabled by configuring the CLKSTRETCH bit within the I2C ControllerConfiguration Register (I2CCCR). In the Target, Clock stretching is signaled by the TREQ and RREQ bits of the I2C Target Status Register (I2CTSR).
Some I2C devices do not support clock stretching. So, it is important for IP to not clock stretch if it is on a bus with non-clock stretch devices. This is to avoid complications inside such devices and breaking the communication.
Add TCTR.SCLKSTRETCH field at bit position TCTR[2] to enable or disable clock stretching in Target mode. Below is the expected behavior when clock stretching is disabled:
The above behavior requires Target FSM to never go in WAIT states.