SWRU626 December 2025 CC3501E , CC3551E
The SPI module provides an interface to the Host DMA controller with separate channels for transmit and receive. The SPI DMA Control register (SPI.DMACR) allows the μDMA to operate with the SPI. When Host DMA operation is enabled, the SPI asserts a Host DMA request on the receive or transmit channel when the associated FIFO can transfer data. For the receive channel, a single transfer request is asserted whenever any data is in the RX FIFO. Whenever data in the RX FIFO reaches the configured level set in the SPI.IFLS[10:8] RXSEL bit field, a burst transfer request is asserted. The supported settings for RX FIFO are: ¼, ½ (default), ¾, full, and at least one location is available in the FIFO. For the transmit channel, a single transfer request is asserted whenever at least one empty location is in the TX FIFO. Whenever the TX FIFO reaches the configured level set via SPI.IFLS[2:0] TXSEL, the burst request is asserted. The supported settings for TX FIFO are: ¼, ½ (default), ¾, empty, at least one location is available in the FIFO. The Host DMA controller handles the single and burst Host DMA transfer requests automatically depending on how the Host DMA channel is configured.
Software must avoid ¾ threshold selection for Host DMA operation.
To enable Host DMA operation for the receive channel, set the SPI.DMACR[0] RXEN bit. To enable Host DMA operation for the transmit channel, set the SPI.DMACR[8] TXEN register bit. If the Host DMA is enabled and appropriate bits are cleared in the DMA Done Mask register (DMA.DONEMASK) the Host DMA controller triggers an interrupt when a transfer completes. This interrupt can be chosen as one of the sources of the combined SPI interrupt. If interrupts are used for SPI operation and the Host DMA is enabled, the SPI interrupt handler must be designed to handle the Host DMA completion interrupt. The status of TX and RX DMA done interrupts can be read from the Channel Request Done register (DMA.REQDONE). They can also be read from SPI.RIS[8] DMATX bit and the SPI.RIS[7] DMARX bit. For clearing the TX and RX DMA done interrupts, the corresponding bits in the DMA.REQDONE register must be set to 1.
For more details about programming the Host DMA controller, see Chapter 11.