Никто не мешает в коде анализировать не только DataReady, но и вспомогательные статусы - FrameError, DataOverrun/Underrun и т.д., и принудительно реинициализировать логику UART в таких ситуациях - тогда синхронизация непременно наступит. А протокол бессилен до того, как ему скормят миску данных, нет данных - нет и протокола, вот и приплыли
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)