Я опыты, описанные здесь не проверял, но если там действительно
привязка к внутреннему счетчику, можно сделать несколько
предположений. У UART есть свой делитель, причем разделенный на
целую и дробную части. Возможно, проверка наличия данных в регистре
синхронна либо со счетчиком в целом, либо с его целой частью. Факт записи из DATAR в сдвиговый регистр сопровождается сбросом флага TXE. Соответственно, можно тупо его дождаться перед стартом DMA, для которого триггером является этот же бит. Если гонку поймать сложно даже специально, вряд ли на ожидание уйдет много тактов.
Для проверки, как вариант, можно максимально снизить частоту APBx, чтобы замедлить саму периферию. И поиграться с делителями UART, чтобы узнать влияют ли они и если да, то как именно.