21.7. Получение данных приемником USART
После разрешения работы приемника, вывод RxD функционирует, как вход приемника USART. Данный вывод необходимо настроить как вход (настройка по умолчанию).
21.7.1. Прием посылок
Приемник начинает прием данных после обнаружения действительного старт-бита. Вслед за старт-битом происходит выборка каждого бита данных на частоте генератора скорости или частоте на выводе XCK и помещение их в сдвиговый регистр. Так происходит вплоть до приема первого стоп-бита посылки. Второй стоп-бит игнорируется приемником. После приема первого стоп-бита, когда в сдвиговый регистр приемника полностью принята посылка, содержимое этого сдвигового регистра перемещается в буфер приемника. Устанавливается флаг прерывания по завершению приема (RXCIF) и генерируется опциональное прерывание.
Опрос буфера приемника можно выполнить чтением регистра данных (DATA). Чтение регистра DATA нельзя выполнять, если флаг прерывания по завершению приема равен нулю. При работе с посылками с числом бит меньше 8, неиспользуемые старшие биты будут считываться с нулевыми значениями. При работе с 9-битными данных, девятый бит необходимо считать из бита RXB8 перед чтением принятых данных из регистра DATA.
21.7.2. Флаги ошибок приемника
Приемник USART имеет три флага ошибок. Флаги ошибки в посылке (FERR), переполнения буфера (BUFOVF) и ошибки паритета (PERR) доступны в регистре статуса. Флаги ошибок расположены в приемном буфере FIFO вместе с соответствующей им посылкой. Как следствие буферизации флагов ошибок, чтение регистра статуса необходимо выполнить перед чтением буфера (DATA), т.к. чтение регистра DATA приводит к изменению буфера FIFO.
21.7.3. Проверка паритета
После разрешения функции проверки паритета для каждой принятой посылки вычисляется паритет её бит данных, а результат вычислений сравнивается с принятым в соответствующей посылке битом паритета. Если обнаруживается несовпадение, устанавливается флаг ошибки паритета.
21.7.4. Отключение приемника
Отключение приемника происходит незамедлительно. Буфер приемника опустошается, а выполняющийся прием прерывается с потерей всех данных.
21.7.5. Очистка буфера приемника
При необходимости очистки буфера приемника в ходе нормальной работы приемника, необходимо выполнить чтение регистра DATA, когда флаг прерывания по завершению приема равен нулю.
21.8. Асинхронный прием данных
Модуль USART оснащен блоком восстановления синхронизации и данных, который используется во время асинхронного приема данных. Логика восстановления синхронизации используется для синхронизации принимаемых асинхронных посылок на выводе RxD с сигналом синхронизации, который сформирован генератором скорости. Логика восстановления данных выполняет выборку и фильтрацию низких частот каждого принятого бита и, как следствие, улучшает помехоустойчивость приемника. Рабочий диапазон асинхронного приемника зависит от точности внутреннего генератора скорости, скорости передачи принимаемых посылок и размера посылки в битах.
21.8.1. Восстановление синхронизации
Логика восстановления синхронизации предназначена для синхронизации внутреннего источника синхронизации с входящими последовательными посылками. На рисунке 21.6 показан процесс выборки старт-бита входящей посылки. Частота выборок в 16 раз (8 раз) больше частоты генератора скорости в нормальном режиме работы (в режиме с удвоенной скоростью). Горизонтальные стрелки показывают диапазон отклонения синхронизации в процессе выборки. Обратите внимание, что в режиме с удвоенной скоростью отклонение более существенно. Выборки, обозначенные цифрой 0, выполняются, когда линия RxD находится в состоянии IDLE, т.е. когда по ней не выполняется передача данных.
Рисунок 21.6. Выборка старт-бита
Когда логика восстановления синхронизации обнаруживает на линии RxD переход из высокого (IDLE) в низкое состояние инициируется последовательность обнаружения старт-бита. На рисунке 21.6 выборка первого низкого уровня отмечена номером 1. Далее, по выборкам 8, 9 и 10 в нормальном режиме и выборкам 4, 5 и 6 (указанные выборки обведены прямоугольной рамкой) в режиме с удвоенной скоростью логика восстановления синхронизации принимает решение о действительности принятого старт-бита. Если две или более выборок равны нулю (принцип мажоритарного голосования), то принятый старт-бит считается действительным, логика восстановления синхронизации считается засинхронизированной и начинается процедура восстановления данных. Если же обнаруживается, что две или более выборок имеют высокий уровень, то старт-бит считается ложным, а приемник возвращается к поиску очередного перехода из высокого в низкое состояние. Процесс синхронизации повторно применяется к каждому старт-биту.
21.8.2. Восстановление данных
Блок восстановления данных выполняет 16 (8) выборок каждого бита данных в нормальном режиме (в режиме с удвоенной скоростью). Процесс выборки бит данных и бита паритета показан на рисунке 21.7.
Рисунок 21.7. Выборка данных и бита паритета
Так же как и при обнаружении старт-бита, для определения уровня принятого бита данных используется принцип мажоритарного голосования, который применяется к трем центральным выборкам (выделены прямоугольной рамкой). Механизм мажоритарного голосования действует как фильтр низких частот по отношению к принимаемому на выводе RxD сигналу. Аналогичным образом, процесс определения уровня применяется к каждому биту вплоть до завершения приема посылки, в т.ч. первый стоп-бит (остальные стоп-биты в расчет не берутся). Если обнаруживается, что стоп-бит равен нулю, устанавливается флаг ошибки в посылке (FERR).
На рисунке 21.8 показаны выборка стоп-бита, а также ближайший момент, в который допустимо появление старт-бита следующей посылки.
Рисунок 21.8. Выборка стоп-бита и выборка следующего старт-бита
Появление нового перехода из высокого состояния в низкое, указывающее на старт-бит новой посылки, считается допустимым после выполнения последней выборки первого стоп-бита, участвующей в мажоритарном голосовании. В режиме нормальной скорости, выборка первого низкого уровня в серии выборок стоп-бита может быть в точке (A), а в режиме двойной скорости - несколько позже: в точке (B). Точка (C) оказывает на полную длительность стоп-бита на номинальной скорости. Преждевременное обнаружение стоп-бита влияет на рабочий диапазон приемника.
21.8.3. Рабочий диапазон асинхронного приемника
Рабочий диапазон приемника зависит от расхождения скорости принимаемого битового потока и частоты внутреннего генератора скорости. Если окажется, что скорость отправки данных передатчиком слишком медленная или слишком большая или частота генератора скорости существенно отличается от базовой частоты внешнего источника, приемник не сможет засинхронизировать посылку к старт-биту.
Ниже приведены выражения, позволяющие вычислить соотношения скорости входящих данных и частоты генератора скорости.
RSLOW = (D + 1) · S/(S - 1 + D · S + SF)
RFAST = (D + 2) · S/((D + 1) · S + SM)
D |
Общее количество бит данных и бита паритета (D = 5…10 бит). |
S |
Количество выборок каждого бита. S = 16 в режиме нормальной скорости и S = 8 в режиме удвоенной скорости. |
SF |
Номер первой выборки, участвующей в мажоритарном голосовании. SF = 8 в режиме нормальной скорости и SF = 4 в режиме удвоенной скорости. |
SM |
Номер центральной выборки, участвующей в мажоритарном голосовании. SM = 9 в режиме нормальной скорости и SM = 5 в режиме удвоенной скорости. |
RSLOW |
Отношение наименьшей скорости входящего битового потока к частоте генератора скорости приемника |
RFAST |
Отношение наибольшей скорости входящего битового потока к частоте генератора скорости приемника |
В таблицах 21.3 и 21.4 приведены значения максимально-допустимых значений разброса скорости в приемнике. В нормальном режиме работе допускается более широкий разброс скорости.
Таблица 21.3. Рекомендованный максимальный разброс скорости приемника в режиме нормальной скорости (CLK2X = 0)
D (количество принимаемых бит: данные + паритет) |
RSLOW [%] |
RFAST [%] |
Общий разброс скорости [%] |
Рекомендованный максимальный разброс скорости приемника [%] |
5 |
93.20 |
106.67 |
+6.67/-6.80 |
±3.0 |
6 |
94.12 |
105.79 |
+5.79/-5.88 |
±2.5 |
7 |
94.81 |
105.11 |
+5.11/-5.19 |
±2.0 |
8 |
95.36 |
104.58 |
+4.58/-4.54 |
±2.0 |
9 |
95.81 |
104.14 |
+4.14/-4.19 |
±1.5 |
10 |
96.17 |
103.78 |
+3.78/-3.83 |
±1.5 |
Таблица 21.3. Рекомендованный максимальный разброс скорости приемника в режиме удвоенной скорости (CLK2X = 1)
D (количество принимаемых бит: данные + паритет) |
RSLOW [%] |
RFAST [%] |
Общий разброс скорости [%] |
Рекомендованный максимальный разброс скорости приемника [%] |
5 |
94.12 |
105.66 |
+5.56/-5.88 |
±2.5 |
6 |
94.92 |
104.92 |
+4.92/-5.08 |
±2.0 |
7 |
95.52 |
104.35 |
+4.35/-4.48 |
±1.5 |
8 |
96.00 |
103.90 |
+3.90/-4.00 |
±1.5 |
9 |
96.39 |
103.53 |
+3.53/-3.61 |
±1.5 |
10 |
96.70 |
103.23 |
+3.23/-3.30 |
±1.0 |
Рекомендованные значения определены из расчета, что приемник и передатчик равным образом делят общий разброс скорости. Сформировать разброс скорости у приемника могут два источника. Во-первых, частота синхронизации приемника всегда имеет некоторую нестабильность. Во-вторых, генератор скорости не всегда обеспечивает требуемую точность деления точности и, в результате, итоговая частота несколько отличается от желаемой. Таким образом, при выборе значений BSEL и BSCALE необходимо стремится к достижению как можно более меньших значений разброса.
|