Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт
Шрифт:
Интервал:
Закладка:
3. RDRF — бит завершения приема байта данных. Устанавливается в момент, когда принятые по линии RxD данные автоматически переписываются в буферный регистр данных приемника.
4. IDLE — бит неактивного состояния линии связи. Устанавливается в 1, если на линии RxD диагностируются 10 или 11 (в зависимости от формата кадра) последовательных единиц.
• Аппаратные средства приемника диагностируют три типа ошибок:
1. Наличие шума на линии RxD. Диагностируется в случае, если при выборке очередного бита информационного кадра, включая стартовый и стоповый биты, не все три детектированные значения бита оказались равными. При обнаружении этого типа ошибки в регистре состояния устанавливается бит NF.
2. Нарушение формата принимаемого кадра. Диагностируется, если поступающая на вход RxD последовательность битов не соответствует меткам синхронизации, формируемым внутренним счетчиком приемника. Аппаратные средства приемника распознают состояние нарушения синхронизации по признаку наличия на линии нулевого логического уровня в то время, когда должен присутствовать стоповый бит с высоким логическим уровнем сигнала. При обнаружении этого типа ошибки в регистре состояния устанавливается бит FE.
3. Нарушение логики паритета кадра. Диагностируется, если функция паритета при обмене разрешена, и в принятом кадре значение бита паритета не удовлетворяет принятой логике формирования паритета: при назначенном нечетном паритете число единиц в слове четное, и наоборот. При обнаружении этого типа ошибки в регистре состояния устанавливается бит PF.
Теперь, когда Вы познакомились с общими характеристиками контроллера асинхронного обмена SCI, следует перейти к изучению его аппаратных средств и программно-логической модели. Это позволит Вам разрабатывать программы управления для контроллера SCI. А пока несколько вопросов.
Вопросы для самопроверки1. Каково назначение бита паритета?
Ответ: Бит паритета используется для обнаружения ошибок передачи данных. При использовании всего одного бита паритета может быть обнаружена только однократная ошибка. Причем исправить эту ошибку на стороне принимающего устройства при помощи бита паритета невозможно. Однако существуют такие способы кодирования, при которых с помощью некоторого дополнительного числа бит возможно как обнаружить ошибку, так и исправить ее.
2. По какому правилу определяется значения бита паритета? Поясните разницу между четным и нечетным паритетом.
Ответ: Существенной разницы нет. Правило формирования бита паритета:
• В передаваемом слове данных подсчитывается число единиц;
• Если это число четное (при четном паритете) или нечетное (при нечетном паритете), то бит паритета устанавливается равным 0;
• Наоборот, если число нечетное (при четном паритете) или четное (при нечетном паритете), то бит паритета устанавливается равным 1.
4.18.1. Передатчик контроллера SCI
Функциональная схема передатчика в составе контроллера SCI представлена на рис. 4.60. Основным ее элементом является 11-разрядный сдвиговый регистр. Ранее, рассматривая временные диаграммы обмена, Вы могли заметить, что код символа ASCII содержит всего 7 бит. Зачем тогда передатчик использует 11-разрядный регистр? Дело в том, что в разряды этого регистра аппаратными средствами вписывается стартовый и стоповый биты. Кроме того, предусмотрена возможность обмена и 8-разрядными словами данных. В этом случае бит паритета уже невозможно будет поместить на место разряда D7, и для него предусмотрели разряд D8 сдвигового регистра. Аппаратные средства передатчика предусматривают возможность формирования как 10-разрядного кадра обмена (8 бит данных, старт и стоп-биты), так и 11-разрядного (9 бит данных, старт и стоп-биты). Выбор формата кадра обмена определяет бит M в регистре управления.
Рис. 4.60. Аппаратные средства блока передатчика в составе контроллера асинхронного обмена
Аппаратные средства передатчика модуля SCI в составе МК 68HC12 предусматривают возможность автоматического (без специальных команд программы) формирования бита паритета по содержимому передаваемого слова данных.
Блок управления формирует все необходимые сигналы для корректной работы аппаратных средств передатчика. Работа передатчика разрешается независимо от состояния приемника в составе этого же контроллера SCI. Если бит TE в регистре управления установлен, то работа передатчика активизируется, и соответствующий вывод порта PORT S конфигурируется как выход TxD. Блок управления также генерирует все запросы на прерывания, связанные с работой передатчика.
Скорость передачи данных определяется программируемым делителем, на вход которого поступает импульсная последовательность P_CLOCK системы тактирования МК. Коэффициент деления назначается битами SBR12…SBR0 регистра скорости обмена.
Байт данных, подлежащий передаче, должен быть записан с использованием любой команды пересылки в регистр данных контроллера SCI. Если сдвиговый регистр в момент записи не занят, то байт данных будет автоматически перемещен из регистра данных в сдвиговый регистр. При этом бит паритета, стартовый и стоповый биты будут подставлены автоматически. Далее без дополнительных команд программы управления начнется передача сформированного в сдвиговом регистре кадра обмена на выход TxD.
4.18.2. Приемник контроллера SCI
Функциональная схема приемника в составе контроллера SCI представлена на рис. 4.61. Так же, как и в приемнике, основным ее элементом является 11-разрядный сдвиговый регистр. Однако это уже собственный регистр приемника, поскольку контроллер SCI обеспечивает возможность обмена в двух направлениях одновременно. Напротив, программируемый делитель является общим для приемника и передатчика. Поэтому скорость приема и передачи данных для одного и того же контроллера SCI всегда одинакова.
Рис. 4.61. Аппаратные средства блока приемника в составе контроллера асинхронного обмена
Работа приемника разрешается установкой бита PE в регистре управления. Если приемник активирован, то соответствующая линия порта PORT S конфигурируется как вход RxD. Блок мажоритарной логики обрабатывает входной сигнал и формирует очередной младший бит сдвигового регистра приемника. В процессе приема каждый поступающий бит опрашивается три раза. Если все три выборки совпали (три 1 или три 0), то соответствующее значение передается в сдвиговый регистр. При несовпадении (два бита равны 1, третий — 0, или наоборот) значение бита формируется по логике «два из трех». Но одновременно устанавливается бит наличия шума на линии NF.
По завершении приема всех 10 или 11 бит кадра приемник автоматически переписывает принятую информацию в регистр данных контроллера SCI и устанавливает в 1 флаг RDRF, который информирует МК о необходимости считывания принятого байта в память МК.
4.18.3. Регистры контроллера SCI
Контроллер асинхронного обмена обслуживается несколькими группами регистров специальных функций:
• Регистры скорости обмена;
• Регистры управления;
• Регистры состояния;
• Регистры данных.
Далее мы рассмотрим формат и назначение битов каждого регистра модуля SCI.
Регистры скорости обмена SCxBDH и SCxBDLДва 8-разрядных регистра SCxBDH и SCxBDL предназначены для управления скоростью обмена по последовательному интерфейсу SCI. Для назначения желаемой скорости используются разряды SBR12…SBR0 этих двух регистров (рис. 4.63). Число, которое следует записать в эти разряды может быть определено с использованием таблицы рис. 4.62 или рассчитано по формуле:
SBR = PCLOCK/(16×BAUD_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