In the FIFO mode, the PRUSS_UART0 generates the following two DMA events:
- Receive event (URXEVT): The trigger level for the receiver FIFO (1, 4, 8, or 14 characters) is set with the FIFO control PRUSS_UART_INTERRUPT_IDENTIFICATION_REGISTER_FIFO_CONTROL_REGISTER [7:6] FIFOEN_RXFIFTL bitfield. Every time the trigger level is reached or a receiver time-out occurs, the PRUSS_UART0 sends a receive event to the EDMA controller. In response, the EDMA controller reads the data from the receiver FIFO by way of the receiver buffer register PRUSS_UART_RBR_THR_REGISTERS [7:0] DATA. Note that the receive event is not asserted if the data at the top of the receiver FIFO is erroneous even if the trigger level has been reached.
- Transmit event (UTXEVT): When the transmitter FIFO is empty (when the last byte in the transmitter FIFO has been copied to the transmitter shift register), the PRUSS_UART0 sends an UTXEVT signal to the EDMA controller. In response, the EDMA controller refills the transmitter FIFO by way of the transmitter holding register (THR) - PRUSS_UART_RBR_THR_REGISTERS [7:0] DATA. The UTXEVT signal is also sent to the DMA controller when the PRUSS_UART0 is taken out of reset using the UTRST bit in the power and emulation management register (PRUSS_UART_POWERMANAGEMENT_AND_EMULATION_REGISTER).
Activity in DMA channels can be synchronized to these events. In the non-FIFO mode, the PRUSS_UART0 generates no DMA events. Any DMA channel synchronized to either of these events must be enabled at the time the PRUSS_UART0 event is generated. Otherwise, the DMA channel will miss the event and, unless the PRUSS_UART0 generates a new event, no data transfer will occur.