SPRUJD3A July 2025 – October 2025 F28E120SB , F28E120SC
The UART provides an interface to the DMA controller with separate channels for transmit and receive. The DMA operation of the UART is enabled through the UART DMA Control (UARTDMACTL) register. When DMA operation is enabled, the UART asserts a DMA request on the receive or transmit channel when the associated FIFO can transfer data. To trigger the DMA with the UART trigger sources, the UART FIFOs on the corresponding channel must be enabled. DMA operation with UART does not work in non-FIFO mode.
The UARTx_TX and UARTx_RX DMA settings will trigger the DMA on the FIFO level condition. For the receive channel, a burst request is asserted whenever the amount of data in the receive FIFO is at or above the FIFO trigger level configured in the UARTIFLS register. For the transmit channel, a burst request is asserted whenever the transmit FIFO contains equal or fewer characters than the FIFO trigger level. The UARTx_TX_SREQ and UARTx_RX_SREQ settings will trigger the DMA on a single request, meaning there is at least one element empty in the TX FIFO or at least one element full in the RX FIFO. The burst DMA transfer requests are handled automatically by the DMA controller depending on how the DMA channel is configured. When using the DMA to transfer 16-bit or 32-bit data to UARTDR for a transmit, only the 8 least-significant bits are transmitted.
To enable DMA operation for the receive channel, set the RXDMAE bit of the DMA Control (UARTDMACTL) register. To enable DMA operation for the transmit channel, set the TXDMAE bit of the UARTDMACTL register. The UART can also be configured to stop using DMA for the receive channel if a receive error occurs. If the DMAERR bit of the UARTDMACR register is set and a receive error occurs, the DMA receive requests are automatically disabled. This error condition can be cleared by clearing the appropriate UART error interrupt.
When the DMA controller is finished transferring data to the TX FIFO or from the RX FIFO, a dma_done signal is sent to the UART to indicate completion. The dma_done status is indicated through the DMATXRIS and DMARXIS bits of the UARTRIS register. An interrupt can be generated from these status bits by setting the DMATXIM and DMARXIM bits in the UARTIM register.
See the Direct Memory Access (DMA) chapter for more details about programming the DMA controller.