Ошибки кадрирования могут быть вызваны тем, что упоминает @jippie - приемник обнаружил стартовый бит и там, где он ожидает стоповый бит, данные инвертируются. Это также может быть связано с повреждением данных, вызванным помехами в линии, возникающими в стоп-бите. Вы всегда должны проверять это для каждого полученного байта.
Ошибки четности возникают, когда четность реализована в канале данных, и существует повреждение, которое вызывает несоответствие четности в полученных данных. Вы всегда должны проверять это для каждого полученного байта.
Прерывание приема также рассматривается как ошибка, хотя на самом деле это признак того, что входящие данные упали до логического нуля для данных длиннее 1 байта. Обычно логическое 1 - это «окружающее» состояние между последовательными байтами данных, и оно остается таким. Я думаю, это возврат к старым телеграфным системам. Я бы не стал проверять это, если бы вы не использовали эту «функцию», чтобы указать (скажем) команду сброса для получателя.
Ошибка переполнения - это когда новый байт получен до того, как процессор прочитал предыдущий байт. Немного отличается, когда задействован FIFO, но это одно и то же - действительные полученные данные теряются из-за медленной работы процессора. Всегда проверяйте это перед чтением байта, и если байт является частью более длинного сообщения (или команды), отбросьте все сообщение / команду и каким-то образом попросите передатчик повторно отправить все сообщение / команду.
Недостаточное выполнение на самом деле не является ошибкой, но указывает отправляющему UART, что его буфер передачи пуст, т.е. он запрашивает новый байт для передачи. Вам не нужно проверять это.