Я решил эту проблему использованием UART с двумя стоп-битами. Каждый старт обнуляет таймер байта, своего рода байтовая ФАПЧ. Благодаря двум стопам проскок бит обнаруживается довольно быстро. Экспериментально проверял - посылки нужной мне длины вполне себе пересылаются с FSK. Использую и преамбулу, и CRC32. Преамбула проверяется на длину и допуск по битовой скорости. Работает надёжно, на шум не срабатывает.
Просто не понравилась помехоустойчивость моего некогерентного FSK-приёмника. Там полосовой фильтр на IIR и подсчёт переходов через 0 с интегрированием по длительности бита. Работает чётко, но слишком много помех пролазит в широкую полосу. Сузить не могу - крутизна фильтров на имеющейся вычислительной "мощности" и допуск по частоте несущей не позволяют. С этой точки зрения декодер PSK мне понравился больше - его получается сделать ближе к оптимальному приёмнику. Или даже совсем оптимальным приёмником для случая DBPSK.