37.3.12.1 Auto-Load I2CxCNT
The I2CxCNTL
register can be automatically loaded. Auto-loading of the I2CxCNTL register is enabled
when the Auto-Load I2C Count Register Enable (ACNT) bit is set (ACNT =
1
).In Host Transmit mode, the first byte following either the 7-bit or 10-bit client address is transferred from I2CxTXB into both I2CxCNTL and the transmit shift register.
In Host Reception mode, the first byte received from the client are loaded into both
I2CxCNTL
and I2CxRXB.
The value of the Acknowledge Data (ACKDT) bit is used as the host’s acknowledgement response to prevent a false
NACK from being generated before the I2CxCNTL register is updated with the new count
value.
In Client Reception mode, the first byte received after receiving a matching 7-bit or
10-bit address is loaded into both I2CxCNTL and
I2CxRXB,
and the value of the ACKDT bit is used as the client’s acknowledgement response.
In Client Transmit mode, the first byte loaded into I2CxTXB following the reception of a matching 7-bit or 10-bit address is transferred into both I2CxCNTL and the transmit shift register.
Important: It is not necessary to
preload the I2CxCNT register when using the auto-load feature. If no value is loaded by
the 9th falling SCL edge following an address transmission or reception, the Byte Count
Interrupt Flag (CNTIF) will be set by module hardware and must be cleared by software to
prevent an interrupt event before I2CxCNTL is updated. Alternatively, I2CxCNTL can be
preloaded with a nonzero value to prevent the CNTIF from being set. In this case, the
preloaded value will be overwritten once the new count value has been loaded into
I2CxCNTL.