DMA on Cortex M4 for continuous UART transfer
Generally DMA and FIFO are two independent solutions to address the same problem - deal with asynchronously transmitted data (store it in some memory) until the cpu has time to process it. FIFO is limited by it's size, so if some data is written to it while there is not enough space, something would be lost. On the other side, DMA is capable of dealing with streams limited by it's counter size only (and the source/destination memory size, of course). The DMA transmission in for UART (and generally) can be configured to be triggered by specific interrupts. For example when the FIFO count is reaching some level. Your second question is not directly related to DMA/FIFO thing. The control flow signals are only affecting the transmitter itself. If it is configure to wait for CTS before sending anything, it will wait. Even if configured with DMA, unless the flow control is implemented in the software, of course..