Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Шрифт:
Рис. 9.28. Формат регистра направления передачи DDRCAN
Рис. 9.29. Формат регистра управления PCTLCAN
И наконец, регистр PORTCAN содержит фактические данные (логические уровни) посылаемые или
Процедура полной установки. Далее мы приведем процедуру полной установки, позволяющей конфигурировать модуль msCAN12 для связи на сетью CAN. Мы обсудим также использование прерываний, связанных модулем CAN.
Два физических внешних вывода, RxCAN и TxCAN, используются для связи с сетью. Выводы RxCAN и TxCAN соответствуют битам 0 и 1 регистра PORTCAN. Приемопередатчик CAN, который используется, чтобы управлять логическими состояниями на сетевой шине, должен быть связан с двумя выводами и должен в свою очередь быть подключен к сети CAN. Типичными примерами таких приемопередатчиков являются микросхема MC33388 или PCA82C250.
После того, как 68HC12 будет правильно подключен к сети CAN, необходимо обеспечить правильную процедуру инициализации, позволяющую установить модуль msCAN12. Обсудим эту процедуру. Прежде, чем предпринять любые шаги по инициализации, модуль msCAN12 должен быть помещен в состояние мягкого сброса, путем установки в состояние логической 1 бита SFTRES (бит 0 регистра CMCR0). Как только бит SFTRES установлен, ЦП может задать рабочую конфигурацию msCAN12, с помощью следующих регистров, связанных с CAN:
• При сбросе значение по умолчанию в регистре CMCR0 равно $21, при этом устанавливаются биты CSWAI и SFTRES. По умолчанию также очищаются биты TLNKEN и SLPRQ. Модуль msCAN12 находится в состоянии мягкого сброса и готов к работе в нормальном режиме. Вход таймера связан с портом и модуль конфигурирован таким образом, чтобы в режиме ожидания отсутствовали импульсы синхронизации.
• Значение по умолчанию в регистре CMCR1 равно $00. Если не используется внешний генератор синхронизации, то бит CLKSRC должен быть переведен в состояние логической 1. Если применяется низкочастотный фильтр для подавления помех, которые могут восприниматься как фронты, должен быть установлен бит WUPM (бит1). Для самопроверки должен быть установлен бит LOOPB (бит2).
• Значение по умолчанию в регистре CBTR0 равно $00. Биты, устанавливающие скорость передачи в бодах и биты ширины скачка ресинхронизации должны программироваться согласно требованиям конкретного применения.
• Наряду с регистром CBTR0, должны быть запрограммированы биты регистра CBTR1, чтобы удовлетворять требования к соответствующим сегментам времени.
• Если используется прерывание, то должны быть установлены соответствующие биты прерывания в регистре CRIER или в регистре CTCR и написаны соответствующая программы обработки прерываний.
• Конфигурация фильтров
• Соответствующие значения фильтров идентификаторов должны быть запрограммированы с помощью регистров CIDAR0–CIDAR7 и CIDMR0–CIDMR7.
Сразу после окончания процесса инициализации msCAN12 будет готов к связи. Если все прерывания запрещены, то один, два или все три буфера передатчиков должны быть заполнены перед тем, как начать передачу сообщения в сеть. Перед тем, как передать в сеть дополнительные сообщения должны быть проверены флаги TXE2, TXE1 и TXE0. Флаг RxF в регистре CRFLG должен быть опрошен, чтобы узнать, не получено ли допустимое сообщение.
В большинстве случаев, используется большое число прерываний CAN. Как минимум, для связи в сетях CAN должно использоваться прерывание передачи и прерывание приема. Чтобы разрешить прерывание передачи, должны быть установлены биты TXEIE2, TXEIE1, TXEIE0 в регистре CTCR, а соответствующие сервисные программы должны снова наполнить передающие буферы и очистить биты TXE2, TXE1, и TXE0 в регистре CTFLG. Прерывание приема разрешается при установке бита RXFIE (Receiver Full Interrupt Enable) в регистре CRIER. Соответствующая сервисная программа должна очистить бит RxF в регистре CRFLG и обработать полученные данные. Еще раз повторим, что для осуществления любого допустимого прерывания бит I в регистре CCR должен быть очищен.
9.4. Различия между контроллерами msCAN в составе 68HC12 и HCS12
Одним из наиболее популярных вариантов микроконтроллеров семейства HCS12 является MC9S12DP256. В этом разделе мы опишем дополнительные свойства модуля контроллера msCAN12 в составе MC9S12DP256.
Основные изменения обсуждаемого модуля по сравнению с ранее рассмотренным состоят в следующем:
• число буферов в приемном модуле увеличивается с двух до пяти;
• осуществляется более жесткое программное управление передачей из трех передающих буферов;
• увеличивается число управляющих регистров;
• добавлен режим «только прослушивание»;
• добавлена возможность установки временных меток для сообщений;
• удалена функция совмещения линий универсального порта с линиями входа/выхода контроллера CAN;
• уменьшено пространство памяти, используемое модулем msCAN (от 128 до 64 однобайтовых ячеек памяти).
Рассмотрим кратко каждое из перечисленных изменений. Двухбуферная структура контроллера CAN в HC12 часто вызывает запаздывание реакции сетевых узлов, когда от шины поступают несколько сообщений. Чтобы исправить этот недостаток, модуль msCAN12 в составе MC9S12DP256 дополнили пятью структурами данных типа очереди (FIFO — «первым пришел, первым вышел»).
Число передающих буферов (3), не изменилось, но появилась дополнительная управляющая структура. В новых контроллерах msCAN12 один передающий буфер из трех выбирается посредством установки бита передачи TXi в регистре выбора передающего буфера (i — номер желательного буфера). Напомним, что ранее рассмотренном контроллере msCAN12 передающий буфер выбирается на основе информации о приоритете. Это изменение уменьшило физическое адресное пространство, выделенное для передающего буфера и упростило доступ к буферам передач.