Functional Description
1325
SLAU723A – October 2017 – Revised October 2018
Copyright © 2017–2018, Texas Instruments Incorporated
Inter-Integrated Circuit (I
2
C) Interface
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 four
bytes and the Tx FIFO fill level is less than the trigger set). If the I2CMBLEN register value is less than
four and the Tx FIFO is not full but more than trigger level, only dma_sreq asserts. Single requests will be
generated as required to keep the FIFO full until the number of bytes specified in the I2CMBLEN register
has been transferred to the FIFO (and the I2CMBCOUNT register reaches 0x0). At this point, no further
requests are generated until the next BURST command is issued. If the µDMA is disabled, FIFOs will be
serviced based on the interrupts active in the master interrupt status registers, the FIFO trigger values
shown in the I2CFIFOSTATUS register and completion of a BURST transfer.
When the master module is receiving FIFO data, the Rx FIFO is initially empty and no requests are
asserted. If data is read from the slave and placed into the Rx FIFO, the dma_sreq signal to the µDMA is
asserted to indicate there is data to be transferred. If the Rx FIFO contains at least 4 bytes, the dma_req
signal is also asserted. The µDMA will continue to transfer data out of the Rx FIFO until it has reached the
amount of bytes programmed in the I2CMBLEN register.
NOTE:
The TXFEIM interrupt mask bit in the I2CMIMR register should be clear (masking the TXFE
interrupt) when the master is performing an RX Burst from the RXFIFO and should be
unmasked before starting a TX FIFO transfers.
19.3.5.2 Slave Module
The slave module also has the capability to use the µDMA in Rx and Tx FIFO data transfers. If the Tx
FIFO is assigned to the slave module and the TXFIFO bit is set in the I2CSCSR register, the slave module
will generate a single µDMA request, dma_sreq, if the master module requests the next byte transfer. If
the FIFO fill level is less than the trigger level, a µDMA multiple transfer request, dma_req, will be
asserted to continue data transfers from the µDMA.
If the Rx FIFO is assigned to the slave module and the RXFIFO bit is set in the I2CSCSR register, then
the slave module will generate a signal µDMA request, dma_sreq, if there is any data to be transferred.
The dma_req signal will be asserted when the Rx FIFO has more data than the trigger level programmed
by the RXTRIG bit in the I2CFIFOCTL register.
NOTE:
Best practice recommends that an application should not switch between the I2CSDR
register and TX FIFO or vice versa for successive transactions.