![Texas Instruments SimpleLink Ethernet MSP432E401Y Technical Reference Manual Download Page 1318](http://html1.mh-extra.com/html/texas-instruments/simplelink-ethernet-msp432e401y/simplelink-ethernet-msp432e401y_technical-reference-manual_10955781318.webp)
Functional Description
1318
SLAU723A – October 2017 – Revised October 2018
Copyright © 2017–2018, Texas Instruments Incorporated
Inter-Integrated Circuit (I
2
C) Interface
If the slave is required to provide a manual ACK or NACK, the I
2
C Slave ACK Control (I2CSACKCTL)
register allows the slave to NACK for invalid data or command or ACK for valid data or command. When
this operation is enabled, the MCU slave module I
2
C clock is pulled low after the last data bit until this
register is written with the indicated response.
19.3.1.5 Repeated START
The I
2
C master module can execute a repeated START (transmit or receive) after an initial transfer has
occurred.
NOTE:
When reading the I2CMCS register to check the BUSY bit, also read the ADRACK and
DATACK bits, because these are cleared on register read, and status may be lost if they are
not checked on every read of the register.
Alternatively, the NACKRIS bit of the I2CMRIS register can be used to monitor NACK status.
For more information on repeated START, see
and
.
19.3.1.5.1 Repeated Start For Master Transmit
A repeated start sequence for a master transmit is as follows:
1. When the device is in the idle state, the master writes the slave address to the I2CMSA register and
configures the R/S bit for the desired transfer type.
2. Data is written to the I2CMDR register.
3. When the BUSY bit in the I2CMCS register is 0, the master writes 0x3 to the I2CMCS register to
initiate a transfer.
4. The master does not generate a STOP condition but instead writes another slave address to the
I2CMSA register and then writes 0x3 to initiate the repeated START.
19.3.1.5.2 Repeated Start For Master Receive
A repeated start sequence for a master receive is similar:
1. When the device is in idle, the master writes the slave address to the I2CMSA register and configures
the R/S bit for the desired transfer type.
2. The master reads data from the I2CMDR register.
3. When the BUSY bit in the I2CMCS register is 0, the master writes 0x3 to the I2CMCS register to
initiate a transfer.
4. The master does not generate a STOP condition but instead writes another slave address to the
I2CMSA register and then writes 0x3 to initiate the repeated START.
19.3.1.6 Clock Low Time-out (CLTO)
The I
2
C slave can extend the transaction by pulling the clock low periodically to create a slow bit transfer
rate. The I
2
C module has a 12-bit programmable counter that is used to track how long the clock has been
held low. The upper 8 bits of the count value are software programmable through the I
2
C Master Clock
Low Time-out Count (I2CMCLKOCNT) register. The lower four bits are not user visible and are 0x0. The
CNTL value programmed in the I2CMCLKOCNT register has to be greater than 0x01. The application can
program the eight most significant bits of the counter to reflect the acceptable cumulative low period in
transaction. The count is loaded at the START condition and counts down on each falling edge of the
internal bus clock of the master. Note that the internal bus clock generated for this counter keeps running
at the programmed I
2
C speed even if SCL is held low on the bus. Upon reaching terminal count, the
master state machine forces ABORT on the bus by issuing a STOP condition at the instance of SCL and
SDA release.
As an example, if an I
2
C module was operating at 100-kHz speed, programming the I2CMCLKOCNT
register to 0xDA would translate to the value 0xDA0 since the lower four bits are set to 0x0. This would
translate to a decimal value of 3488 clocks or a cumulative clock low period of 34.88 ms at 100 kHz.