SPRUJ17H March 2022 – October 2024 AM2631 , AM2631-Q1 , AM2632 , AM2632-Q1 , AM2634 , AM2634-Q1
In this mode, the I2C module is a controller and receives data from a target. This mode can only be entered from the controller transmitter mode (the I2C module must first transmit a command to the target). In any of the addressing formats shown in Section 13.1.2.2.2.4.1, Section 13.1.2.2.2.4.2, or Section 13.1.2.2.2.4.3, the controller receiver mode is entered after the target address byte and the R/ W bit have been transmitted (if the R/ W bit is 1). Serial data bits received on the SDA pin are shifted in with the self-generated clock pulses on the SCL pin. The clock pulses are inhibited and the SCL is held low when the intervention of the device is required (RSFULL = 1) after a byte has been received. At the end of the transfer, the controller-receiver signals the end of data to the target-transmitter by not generating an acknowledge on the last byte that was clocked out of the target. The target-transmitter then releases the data line allowing the controller-receiver to generate a STOP condition or a repeated START condition.
In many applications, the size of the message is in the initial bytes of the message itself. Since the size of the message is not known to the controller before the transmission/reception starts, the controller must use the repeat mode in order to force the stop condition when the reception is completed. The repeat mode is enabled by setting the RM bit to 1. Due to the double buffer implementation on the receive side, the controller must generate the stop condition (STP =1) after reading the (message size - 1)th data.