SWRU543B January 2019 – June 2025 CC3230S , CC3230SF , CC3235MODS , CC3235MODSF , CC3235S , CC3235SF
When the Master Control/Status (I2CMCS) register is set to enable BURST, and the master I2C µDMA channel is enabled in the DMA Channel Map Select n (DMACHMAPn) registers in the µDMA, the master control module asserts either the internal single µDMA request signal (dma_sreq) or multiple µDMA request signal (dma_req) to the µDMA. There are separate dma_req and dma_sreq signals for transmit and receive. A single µDMA request (dma_sreq) is asserted by the master module when the RX FIFO has at least 1 data byte present in the FIFO or when the TX FIFO has at least one space available to fill. The dma_req (or BURST) signal is asserted when the RX FIFO fill level is higher than the trigger level or the TX FIFO burst length remaining is less than 4 bytes and the FIFO fill level is less than the trigger level. If a single transfer or BURST operation has completed, the µDMA sends a dma_done signal to the master module. The master module is represented by the DMATX/DMARX interrupts in the I2CMIMR, I2CMRIS, I2CMMIS, and I2CMICR registers.
If the µDMA I2C channel is disabled and software is handling 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 acknowledgment 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, both the dma_req and dma_sreq 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 the trigger level, only dma_sreq asserts. Single requests are generated as required to keep the FIFO full, until the number of bytes specified in the I2CMBLEN register is 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 are 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 are read from the slave and placed into the RX FIFO, the dma_sreq signal to the µDMA is asserted to indicate there are data to be transferred. If the RX FIFO contains at least 4 bytes, the dma_req signal is also asserted. The µDMA continues to transfer data out of the RX FIFO until it has reached the amount of bytes programmed in the I2CMBLEN register.
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 RX FIFO, and unmasked before starting a TX FIFO transfer.