Шрифт:
Рис. 4.61. Аппаратные средства блока приемника в составе контроллера асинхронного обмена
Работа приемника разрешается установкой бита PE в регистре управления. Если приемник активирован, то соответствующая линия порта PORT S конфигурируется как вход RxD. Блок мажоритарной логики обрабатывает входной сигнал и формирует очередной младший бит сдвигового регистра приемника. В процессе приема каждый поступающий бит опрашивается три раза. Если все три выборки совпали (три 1 или три 0), то соответствующее значение передается в сдвиговый регистр. При несовпадении (два бита равны 1, третий — 0, или наоборот) значение бита формируется по логике «два из трех». Но одновременно устанавливается бит наличия шума на линии NF.
По завершении приема всех 10 или 11 бит кадра приемник автоматически переписывает принятую информацию в регистр данных контроллера SCI и устанавливает в 1 флаг RDRF, который информирует МК о необходимости считывания принятого байта в память МК.
4.18.3. Регистры контроллера SCI
Контроллер асинхронного обмена обслуживается несколькими группами регистров специальных функций:
• Регистры скорости обмена;
• Регистры управления;
• Регистры состояния;
• Регистры данных.
Далее мы рассмотрим формат и назначение битов каждого регистра модуля SCI.
Два 8-разрядных регистра SCxBDH и SCxBDL предназначены для управления скоростью обмена по последовательному интерфейсу SCI. Для назначения желаемой скорости используются разряды SBR12…SBR0 этих двух регистров (рис. 4.63). Число, которое следует записать в эти разряды может быть определено с использованием таблицы рис. 4.62 или рассчитано по формуле:
SBR = PCLOCK/(16xBAUD_RATE),
где SBR — десятичный эквивалент двоичного кода, который должен быть записан в разряды SBR12…SBR0 регистров SCxBDH и SCxBDL, PCLOCK — частота импульсной последовательности PCLK в Герцах, BAUD_RATE — частота обмена в бодах.
Желаемая скорость обмена (бод) | Значение коэффициента при частоте внутренней системной шины | |
---|---|---|
4 МГц | 8 МГц | |
110 | 2273 | 4545 |
300 | 833 | 1667 |
600 | 417 | 833 |
1200 | 208 | 417 |
2400 | 104 | 208 |
4800 | 52 | 104 |
9600 | 26 | 52 |
14400 | 17 | 35 |
19200 | 13 | 26 |
38400 | — | 13 |
Рис. 4.62. Выбор коэффициента деления модуля SCI
Рис. 4.63. Формат регистра скорости обмена SCxBDH/SCxBDL
Необходимо настроить первый контроллер асинхронного обмена (SCI0) на скорость 9600 бод. Если частота импульсной последовательности PCLK равна 8 МГц, то коэффициент деления, который должен быть записан в регистры SC0BDH и SC0BDL, равен:
SBR0 = 8000000/(16x9600) = 52 = $34
Следующий программный фрагмент реализует инициализацию скорости обмена:
Рис. 4.64. Формат регистра управления SCxCR1
Формат первого регистра управления контроллера SCI представлен на рис. 4.64. Биты этого регистра имеет следующее назначение:
LOOPS:
Бит разрешения «замкнутого» режима работы контроллера SCI. Установка в 1 бита LOOPS вызывает перекоммутацию входа приемника линии RxD, который внутренними средствами отсоединяется от вывода RxD и подсоединяется к выходу передатчика. В этом режиме возможен контроль передаваемой информации. Также режим может быть использован для тестирования работы программного обеспечения без использования устройства управления верхнего уровня. Для реализации «замкнутого» режима должна быть разрешена работа как передатчика, так и приемника.
1 — «замкнутый» режим работы разрешен;
0 — «замкнутый» режим работы запрещен.
WOMS:
Бит выбора режима открытого коллектора. Этот бит определяет состояние выходных буферов линий TxD и RxD.
1 — буферы переведены в режим открытого коллекторного выхода;
0 — буферы работают в режиме обычного двухстабильного логического выхода (TxD) и входа (RxD).
Перевод линий TxD и RxD в режим открытого коллектора позволяет соединить их по схеме «монтажное И», что делает возможным двусторонний обмен по одной линии. Кроме того, при такой конфигурации возможно создание системы с несколькими передающими устройствами.