SPRUJ79 November 2024 F29H850TU , F29H859TU-Q1
The UART provides an interface to the RTDMA controller with separate channels for transmit and receive. The RTDMA operation of the UART is enabled through the UART RTDMA Control (UARTDMACTL) register. When RTDMA operation is enabled, the UART asserts a RTDMA request on the receive or transmit channel when the associated FIFO can transfer data. To trigger the RTDMA with the UART trigger sources, the UART FIFOs on the corresponding channel must be enabled. RTDMA operation does not work in non-FIFO mode.
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 burst RTDMA transfer requests are handled automatically by the RTDMA controller depending on how the RTDMA channel is configured. When using the RTDMA to transfer 16-bit or 32-bit data to UARTDR for a transmit, only the 8 least-significant bits are transmitted.
To enable RTDMA operation for the receive channel, set the RXDMAE bit of the RTDMA Control (UARTDMACTL) register. To enable RTDMA operation for the transmit channel, set the TXDMAE bit of the UARTDMACTL register. The UART can also be configured to stop using RTDMA 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 RTDMA receive requests are automatically disabled. This error condition can be cleared by clearing the appropriate UART error interrupt.
When the RTDMA 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 Real-Time Direct Memory Access (RTDMA) chapter for more details about programming the RTDMA controller.