Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт
Шрифт:
Интервал:
Закладка:
Рис. 4.62. Выбор коэффициента деления модуля SCI
Рис. 4.63. Формат регистра скорости обмена SCxBDH/SCxBDL
ПримерНеобходимо настроить первый контроллер асинхронного обмена (SCI0) на скорость 9600 бод. Если частота импульсной последовательности PCLK равна 8 МГц, то коэффициент деления, который должен быть записан в регистры SC0BDH и SC0BDL, равен:
SBR0 = 8000000/(16×9600) = 52 = $34
Следующий программный фрагмент реализует инициализацию скорости обмена:
/*----------------------*/
/* filename: ini_SCI0.c */
/*----------------------*/
#include <912b32.h>
void main(void) {
SC0BDH = 0х00;
SC0BDL = 0х34;
}
/*----------------------*/
Регистры управления SCxCR1 и SCxCR2Рис. 4.64. Формат регистра управления SCxCR1
Формат первого регистра управления контроллера SCI представлен на рис. 4.64. Биты этого регистра имеет следующее назначение:
LOOPS:
Бит разрешения «замкнутого» режима работы контроллера SCI. Установка в 1 бита LOOPS вызывает перекоммутацию входа приемника линии RxD, который внутренними средствами отсоединяется от вывода RxD и подсоединяется к выходу передатчика. В этом режиме возможен контроль передаваемой информации. Также режим может быть использован для тестирования работы программного обеспечения без использования устройства управления верхнего уровня. Для реализации «замкнутого» режима должна быть разрешена работа как передатчика, так и приемника.
1 — «замкнутый» режим работы разрешен;
0 — «замкнутый» режим работы запрещен.
WOMS:
Бит выбора режима открытого коллектора. Этот бит определяет состояние выходных буферов линий TxD и RxD.
1 — буферы переведены в режим открытого коллекторного выхода;
0 — буферы работают в режиме обычного двухстабильного логического выхода (TxD) и входа (RxD).
Перевод линий TxD и RxD в режим открытого коллектора позволяет соединить их по схеме «монтажное И», что делает возможным двусторонний обмен по одной линии. Кроме того, при такой конфигурации возможно создание системы с несколькими передающими устройствами.
RSRC:
Бит выбора внутренней схемотехники в «замкнутом» режиме работы. Если бит LOOPS = 1 и бит RSRC = 1 то вход приемника коммутируется непосредственно к выводу TxD микроконтроллера. При RSRC = 0 вход приемника подсоединяется к выходу передатчика внутри МК.
M:
Бит выбора формата кадра асинхронного обмена.
1 — 11-битовый формат кадра: 1 стартовый бит, 9 бит слова данных, 1 стоповый бит;
0 — 10-битовый формат кадра: 1 стартовый бит, 8 бит слова данных, 1 стоповый бит.
WAKE:
Бит выбора способа выхода приемника из неактивного состояния:
1 — установка маркера адреса (бит D7 при M=0 или бит D8 при M=1) ) переводит приемник в активный режим работы;
0 — состояние IDLE на линии переводит приемник в активное состояние.
После сброса МК бит устанавливается в 0.
ILT:
Бит выбора режима распознавания неактивного состояния линии RxD. Этот бит определяет момент начала отсчета для определения неактивного состояния линии RxD:
1 — отсчет начинается после идентификации стоп-бита;
0 — отсчет начинается после идентификации старт-бита.
После сброса МК бит устанавливается в 0.
PE:
Бит разрешения работы логики паритета.
1 — формирование бита паритета передатчиком и его анализ приемником реализуются;
0 — функция паритета отключена.
PT:
Бит выбора четного или нечетного паритета (Parity Bit)
1 — бит паритета формируется из условия нечетного числа 1 в слове;
0 — бит паритета формируется из условия четного числа 1 в слове.
Рис. 4.65. Формат регистра управления SCxCR2
Формат второго регистра управления контроллера SCI приведен на рис. 4.65. Четыре старших бита этого регистра (TIE, TCIE, RIE, ILIE) разрешают генерацию запросов на прерывания по разным событиям контроллера SCI. Назначение отдельных битов регистра SCxCR2 следующее:
TIE:
Бит разрешения прерывания от передатчика контроллера SCI. Этот бит разрешает генерацию запроса на прерывание при установке в 1 флага готовности буфера данных передатчика к приему от программы нового байта (бит TDRE).
1 — прерывания от передатчика по флагу SCDE разрешены;
0 — прерывания от передатчика по флагу SCDE запрещены.
TCIE:
Бит разрешения прерывания от передатчика контроллера SCI. Этот бит разрешает генерацию запроса на прерывание при установке в 1 флага завершения работы передатчика TC.
1 — прерывания от передатчика по флагу TC разрешены;
0 — прерывания от передатчика по флагу TC запрещены.
RIE:
Бит разрешения прерывания от приемника контроллера SCI. Этот бит разрешает генерацию запроса на прерывание при установке в 1 флага завершения приема очередного байта RDRF.
1 — прерывания от приемника по флагу SCRF разрешены;
0 — прерывания от приемника по флагу SCRF запрещены.
ILIE:
Бит разрешения прерывания от приемника по флагу IDLE. Этот бит разрешает генерацию запроса на прерывание при установке в 1 флага неактивного состояния линии RxD.
1 — прерывания при установленном флаге IDLE разрешены;
0 — прерывания по флагу IDLE запрещены.
TE:
Бит разрешения работы передатчика контроллера SCI. Если бит TE будет сброшен в процессе передачи, то передача текущего байта будет завершена.
1 — передача разрешена;
0 — передача запрещена.
RE:
Бит разрешения работы приемника контроллера SCI.
1 — прием разрешен;
0 — прием запрещен.
RWU:
Бит управления режимом ожидания приемника контроллера SCI. Установка бита RWU под управлением программы в 1 переводит приемник контроллера SCI в режим ожидания. Пока приемник находится в этом режиме, ни один из флагов, которые связаны с работой приемника (RDRF, IDLE, OR, NF, FE, PE), не может быть установлен. Однако те флаги, которые уже были установлены к моменту перевода приемника в режим ожидания, не сбрасываются в момент записи 1 в бит RWU. Способ перевода приемника в активный режим работы определяет бит WAKE в регистре SCxCR1.
SBK:
Бит управления сообщением «конец сеанса обмена». Если бит SBK установить под управлением программы в 1, то передатчик контроллера SCI генерирует в линию TxD последовательность из 10 (бит M=0) или 11 (бит M=1) нулевых битов и одного единичного бита.
Регистры состояния SCxSR1 и SCxSR2Рис. 4.66. Формат регистра состояния SCxSR1
Формат первого регистра состояния контроллера SCI представлен на рис. 4.66. Старшие четыре бита регистра SCxSR1 содержат флаги событий, которые используются в штатных режимах работы приемника и передатчика. Младшие четыре бита отражают тип зафиксированной ошибки приема. Все флаги, связанные с работой приемника сбрасываются после выполнения операции чтения младшего байта регистра данных приемника. Назначение отдельных битов регистра SCxSR1 следующее:
TDRE:
Бит готовности буфера передатчика к приему новых данных. Устанавливается в момент, когда предварительно загруженные в регистр буфера передатчика данные автоматически переписываются в сдвиговый регистр передатчика.
TC:
Бит завершения передачи данных. Устанавливается, если данные для передачи в сдвиговом и буферном регистре данных передатчика отсутствуют, а также, если не реализуется режим передачи сообщения «конец сеанса обмена». Бит TC информирует МК об отсутствии процесса передачи данных в текущий момент времени. В это время на линии TxD установлен высокий логический уровень сигнала (состояние IDLE). Бит TC вызывает генерацию запроса на прерывание, если бит TCIE в регистре SCxCR2 установлен.
RDRF:
Бит завершения приема байта данных. Устанавливается в момент, когда принятые по линии RxD данные автоматически переписываются в буферный регистр данных приемника. Бит RDRF вызывает генерацию запроса на прерывание, если бит RIE в регистре SCxCR2 установлен.
IDLE:
Бит неактивного состояния линии RxD. Устанавливается в 1, если на линии RxD диагностируются 10 или 11 (в зависимости от формата кадра) последовательных единиц. Бит IDLE вызывает генерацию запроса на прерывание, если бит ILIE в регистре SCxCR2 установлен.
OR:
Бит ошибки приема. Устанавливается при попытке записи аппаратными средствами приемника очередного принятого байта из сдвигового регистра в буферный регистр данных в то время, как предыдущие данные из буферного регистра еще не считаны (бит RDRF установлен).