Модуль Универсального Асинхронного Приёмо-передатчика (UART). Упрощённая блок схема модуля UART. Регистры управления, страница 7

Блок-схема приёмника приведена на рисунке 10. Основа приёмника – Принимающий (последовательный) сдвиговый регистр (UxRSR). Данные приходят на вывод UxRX, и посылаются в блок восстановления данных. Блок восстановления данных использует 16х baud rate, тогда как главный принимающий последовательный сдвиговый регистр работает в baud rate. После осуществления выборки с вывода UxRX  бита Stop, полученные данные в UxRSR перемещаются в FIFO (если он пустой).

Обратите внимание: регистр UxRSR не отображен в памяти данных, так что он не доступен пользовательскому приложению.

Данные с вывода UxRX выбраны множественными выборками схемой поиска большинства, чтобы определить какой уровень присутствует на выводе UxRX.

7.1 Буфер приёмника (UxRXREG)

Приёмник UART имеет 4-уровневый, шириной в 9 бит FIFO буфер данных. UxRXREG – это регистр с помощью которого обеспечивается доступ к выходу FIFO. Это возможно для четырех слов данных, которые будут получены и перемещены в FIFO, а пятое слово находится в регистре сдвига UxRSR.

7.2 Обработка ошибок Приёмника

Если FIFO полон (четыре символа), и пятый символ полностью получен в UxRSR регистр, то возникает ошибка переполнения и бит OERR (UxSTA <1>) будет установлена. Слово в UxRSR сохранится, но далее

Перемещение в FIFO запрещены, пока OERR бит установлен. Пользовательское приложение должно сбросить бит OERR  программно, чтобы позволить последующим данным быть полученными.

Если необходимо сохранить данные, полученные до переполнения, пользовательское приложение должно сначала прочитать все пять символов, затем очистите бит OERR. Если эти пять символов могут быть потеряны, пользовательское приложение может просто очистить бит OERR. Это фактически сбрасывает FIFO и все предшествующие полученные данные теряются.

Обратите внимание:данные в приёмном FIFO должны читаться до очистки бита OERR. FIFO сбрасывается, когда OERR сброшен, что приводит к потере всех данных в буфере.

Бит Ошибки кадровой синхронизации, FERR (UxSTA <2>), устанавливается, если Стоповый бит обнаружен в логическом низком уровне.

Флаг ошибки Четности, PERR (UxSTA <3>), будет установлен, если ошибка четности была обнаружена в информационном слове наверху буфера (то есть, текущее слово). Например, ошибка четности произошла бы если настроена проверка на ЧЁТНОСТЬ, но общее количество ‘1’ в данных было обнаружено нечётное количество. Бит PERR является несоответствующим в 9-ти битном режиме. Биты FERR и PERR буферизированы наряду с соответствующим словом и должно читаться перед чтением информационного слова.

Прерывание генерируется если происходит любая из ошибок (OERR, FERR и PERR). Пользователь в программе должен разрешить соответствующее Прерывание, активизируя служебный бит (IEC4 <UxERIE>) для перехода по соответствующему вектору прерывания.

7.3 Прерывание получателей

UART устанавливает флаг прерывания (UxRXIF), расположен в соответствующем регистре состоянии флагов прерывания (IFS). Служебные биты URXISEL <1:0> (UxSTA <7:6>) определяют ситуации, когда получатель UART генерирует прерывание.

a) Если URXISEL <1:0> = 00 или 01, прерывание генерируется каждый раз, когда перемещено одно информационное слово из принимающего сдвигового регистра (UxRSR) в буфер получателя. Может быть один или больше символов в буфере получателя.

b) Если URXISEL <1:0> = 10, прерывание генерируется, когда слово перемещено  из регистра UxRSR

в буфер приёмника, и буфер получателя уже содержит 3 или 4 символа.

c) Если URXISEL <1:0> = 11, прерывание генерируется, когда слово перемещено из регистра UxRSR

в буфер приёмника, и при этом буфер приёмника содержит 4 символа, т.е. является полным.

Разрешается переключаться между режимами прерывания во время работы.

В то время как биты URXDA и флаг UxRXIF указывают состояние регистра UxRXREG, бит RIDLE