Лучше интервалы сделать. Так как ограничения не заданы, предложу:
Вычисляете корреляцию потока с 9-м битом на интервале нескольких пакетов. По пику взаимокорреляционной функции, определяете фазу появления 9-го бита. Относительно этой фазы, вычисляете момент, когда нужно разрешить работу приём UART так, чтобы приёмник UART начал выборки со стоп-бита потока.
Разумеется, можно просто считать биты и сдвигать фазу счёта до тех пор, пока не начнёте стабильно попадать на 9-е биты в единичке, перед тем, как разрешить UART. И включаете UART сразу после расчётного начала стопа.
P.S. можно ещё ловить 9-е биты - нули, чтобы поймать синхронизацию байт внутри пакета. А уже от синхронизации байт, стартовать приёмник.
Но если пакеты - разной длины, а поток - непрерывный, то так не заработает, в зависимости от данных в комбинации с вариацией длин пакетов. Нужны перерывы, хотя бы между пакетами, если не между байтами. В противном случае придётся менять формат пакета, включая в него синхро-символ, дающий длинный стоп для синхронизации UART перед стартом.