R Max Не очень понял, это был вопрос или просто размышления на тему

?
Конкретно на 1986ВЕ9х эту задачу не решал, но на STM-ках не раз приходилось делать. Поэтому изложу некоторые мысли.
Проблема при приеме по UART через DMA заключается не столько в выявлении факта потери связи посреди приема пакета, сколько в определении момента начала приема пакета. Т.е., надо узнать, когда к нам поступил первый байт пакета. Если этот момент удастся определить, то всегда можно поставить аппаратный или программный таймер, отсчитывающий время, необходимое на прием полного пакета (с небольшим запасом, разумеется). Если таймер сработал, то пакет считается испорченным.
В чем сложность определения момента приема первого байта? Если мы настроем UART RX на работу с DMA, то нельзя будет использовать прерывания по UART RX, и никто не скажет нам, что первый байт принят. В STM-ках я решал эту проблему очень просто: использовал для приема сразу два UART: UART1, основной, работал с DMA, а UART2, вспомогательный,- с прерываниями. Как только приходил первый байт пакета, срабатывало прерывание по UART2 RX, в обработчике которого запускался таймер. Одновременно UART1 начинал работать с DMA. По окончанию приема пакета возникало прерывание от канала DMA, в обработчике которого таймер останавливался.
Если посреди приема пакета возникал обрыв связи, то срабатывал таймер, процесс приема прерывался и всё возвращалось в исходное состояние. При этом протокол обмена должен быть построен так, чтобы паузы между передачей двух пакетов мастером немного превышали время передачи одного пакета. Это даст гарантию, что слейв правильно примет пакеты. Иначе, если слейв после включения попадет на середину пакета, последующие пакеты также будут испорчены.
Если в вашем случае не жалко двух UARTов, то можно пойти по этому пути. При этом для обоих UART надо будет обязательно отключить аппаратные буферы для RX.
Есть и другие варианты, но они более сложные, в том числе и на стороне мастера.