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.
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.
For more information on repeated START, refer to Figure 18-12 on page 1294 and Figure
18-13 on page 1295.
18.3.1.6
Clock Low Timeout (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 Timeout 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.
The
CLKRIS
bit in the
I
2
C Master Raw Interrupt Status (I2CMRIS)
register is set when the clock
timeout period is reached, allowing the master to start corrective action to resolve the remote slave
state. In addition, the
CLKTO
bit in the
I
2
C Master Control/Status (I2CMCS)
register is set; this bit
is cleared when a STOP condition is sent or during the I
2
C master reset. The status of the raw SDA
and SCL signals are readable by software through the
SDA
and
SCL
bits in the
I
2
C Master Bus
Monitor (I2CMBMON)
register to help determine the state of the remote slave.
In the event of a CLTO condition, application software must choose how it intends to attempt bus
recovery. Most applications may attempt to manually toggle the I
2
C pins to force the slave to let go
of the clock signal (a common solution is to attempt to force a STOP on the bus). If a CLTO is
detected before the end of a burst transfer, and the bus is successfully recovered by the master,
the master hardware attempts to finish the pending burst operation. Depending on the state of the
1281
June 18, 2014
Texas Instruments-Production Data
Tiva
™
TM4C1294NCPDT Microcontroller