Each FIFO has a programmable threshold point which indicates when the FIFO service interrupt
should be generated. Additionally, a FIFO receive full and transmit empty interrupt can be enabled
in the Interrupt Mask
(I2CxIMR)
registers of both the master and slave. Note that if we clear the
TXFERIS
interrupt (by setting the
TXFEIC
bit) when the TX FIFO is empty, the
TXFERIS
interrupt
does not reassert even though the TX FIFO remains empty in this situation.
When a FIFO is not assigned to a master or a slave module, the FIFO interrupt and status signals
to the module are forced to a state that indicates the FIFO is empty. For example, if the TX FIFO is
assigned to the master module, the status signals to the slave transmit interface indicates that the
FIFO is empty.
Note:
The FIFOs must be empty when reassigning the FIFOs for proper functionality
18.3.5.1
Master Module Burst Mode
A BURST command is provided for the master module which allows a sequence of data transfers
using the µDMA (or software, if desired) to handle the data in the FIFO. The BURST command is
enabled by setting the BURST bit in the
Master Control/Status (I2CMCS)
register. The number of
bytes transferred by a BURST request is programmed in the
I2C Master Burst Length (I2CMBLEN)
register and a copy of this value is automatically written to the
I2C Master Burst Count (I2CMBCNT)
register to be used as a down-counter during the BURST transfer. The bytes written to the
I2C FIFO
Data (I2CFIFODATA)
register are transferred to the RX FIFO or TX FIFO depending on whether a
transmit or receive is being executed. If data is NACKed during a BURST and the
STOP
bit is set
in the
I2CMCS
register, the transfer terminates. If the STOP bit is not set, the software application
must issue a repeated STOP or START when a NACK interrupt is asserted. In the case of a NACK,
the
I2CMBCNT
register can be used to determine the amount of data that was transferred prior to
the BURST termination. If the Address is NACKed during a transfer, then a STOP is issued.
Master Module µDMA Functionality
When the
Master Control/Status (I2CMCS)
register is set to enable BURST and the master I
2
C
µDMA channel is enabled in the
DMA Channel Map Select n (DMACHMAPn)
registers in the
µDMA, the master control module will assert either the internal single µDMA request signal
(
dma_sreq
) or multiple µDMA request signal (
dma_req
) to the µDMA. Note that there are separate
dma_req
and
dma_sreq
signals for transmit and receive. A single µDMA request (dma_sreq) will
be asserted by the Master module when the Rx FIFO has at least one data byte present in the FIFO
and/or when the Tx FIFO has at least one space available to fill. The
dma_req
(or Burst) signal will
be asserted when Rx FIFO fill level is higher than trigger level and/or the Tx FIFO burst length
remaining is less than 4 bytes and the FIFO fill level is less than trigger level. If a single transfer or
BURST operation has completed, the µDMA sends a
dma_done
signal to the master module
represented by the
DMATX/DMARX
interrupts in the
I2CMIMR
/
I2CMRIS
/
I2CMMIS
/
I2CMICR
registers.
If the µDMA I
2
C channel is disabled and software is used to handle the
BURST
command, software
can read the
FIFO Status (I2CFIFOSTAT)
Register and the
Master Burst Count (I2CMBC)
register
to determine whether the FIFO needs servicing during the BURST transaction. A trigger value can
be programmed in the
I2CFIFOCTL
register to allow for interrupts at various fill levels of the FIFOs.
The
NACK
and
ARBLOST
bits in the interrupt status registers can be enabled to indicate no
acknowledgement of data transfer or an arbitration loss on the bus.
When the Master module is transmitting FIFO data, software can fill the Tx FIFO in advance of
setting the BURST bit in the
I2CMCS
register. If the FIFO is empty when the µDMA is enabled for
BURST mode, the
dma_req
and
dma_sreq
both assert (assuming the
I2CMBLEN
register is
programmed to at least 4 bytes and the Tx FIFO fill level is less than the trigger set). If the
I2CMBLEN
register value is less than 4 and the Tx FIFO is not full but more than trigger level, only
dma_sreq
will assert. Single requests will be generated as required to keep the FIFO full until the number of
June 18, 2014
1288
Texas Instruments-Production Data
Inter-Integrated Circuit (I
2
C) Interface