Цитата(evgen2 @ Feb 8 2016, 15:53)

Нашел.
Всё дело в волшебных пузырьках битиках. 1 << 11
Это transfer type. Если 0 - то memory to memory, если 1 - memory to peripheral. Если поставить 0, то всё работает до размера 16 байт (или, возможно, длины FIFO?, FIFO у меня 16 байт)
1 - как я понимаю говорит DMA-контроллеру обращать внимание на сигнал UART.THRE от UART. Это директива - использовать флов-контроль от периферии.
Если стоит 0 - DMA-контроллер не обращая внимания на UART.THRE, зафигачивает весь пакет в FIFO. Так как для mem->mem флов-контроль не нужен. Естественно в этом случае всё после 16-го байта теряется.
Читать юзермануал надо внимательнее.