Поясню: DMA можно запускать при неготовности периферии. Всего
делов-то - DMA будет стоять на первой транзакции, не выполняя её,
сохраняя исходное значение счётчика транзакций. Как только ранее
положенный в буфер самого UARTа символ протолкнётся в
освободившийся сдвиговый регистр, сразу же, по флагу transmit
empty, DMA положит первый символ следующей транзакции. Так что, если в буфере уже несколько сообщений - не проблема. DMA начинает передачу в UART следующего трансфера с началом передачи последнего символа предыдущего трансфера. То есть, последний символ трансфера ещё не успел начать передаваться, только попал в сдвиговый буфер и только начался стартовый бит, а DMA уже положил в буфер UART первый символ следующего трансфера.