Модули msCAN в составе разных МК полностью идентичны, работают в соответствии с протоколом CAN версии 2.0 A/B. Далее мы подробно рассмотрим, как работает один из них, в составе МК MC9S12DP256.
Каждый модуль msCAN связывается с внешним миром, используя выход TxCAN, подключенный к передатчику, и вход RxCAN, связанный с приемником. Названные входы/выходы МК через схему преобразования уровней, называемую трансивером CAN, подключены к CAN шине. Каждый модуль msCAN состоит трех подсистем: блока передатчика, блока приемника и блока прерывания. Мы опишем каждую из этих подсистем в следующих разделах.
Режимы работы CAN.Прежде, чем перейти к рассмотрению каждой из подсистем, входящих в состав модуля контроллера msCAN, сравним нормальный режим работы контроллера msCAN12 с его работой в режиме энергосбережения. Когда модуль CAN неактивен (т.е. не производит обмена с другим устройством по CAN шине), пользователь заинтересован в том, чтобы уменьшить мощность потребления самого модуля msCAN12. Для этого необходимо перевести модуль msCAN12 в энергосберегающий режим. Каждый модуль msCAN12 может работать не только в нормальном, но и в трех энергосберегающих режимах: спящем режиме, режиме программного сброса и режиме отключения.
Выбор одного из трех энергосберегающих режимов выполняется путем соответствующей конфигурации msCAN12 посредством изменения состояния регистра управления CMCR0, формат которого показан на рис. 9.7.
Рис. 9.7.Формат регистра управления CMCR0
Пятый бит этого регистра CSWAI (CAN-Stops-in-Wait) представляет собой бит выбора режима останова или режима ожидания. Если этот бит очищен, модуль переходит в режим ожидания. Если бит CSWAI =1, модуль не получает сигналов синхронизации, т.е останавливается. Четвертый бит — бит синхронизации SYNCH — указывает, готов ли модуль CAN к связи с другими узлами сети. Когда этот бит очищен, msCAN12 не синхронизирован с шиной CAN, когда же бит установлен, то msCAN12 и шина CAN синхронизированы. Третий бит TLNKEN представляет собой бит состояния входа таймера. Когда этот бит очищен, то вход таймера связан с соответствующим портом. Если же установлен, это указывает, что на вход таймера подается выходной сигнал msCAN12.
Второй бит SLPAK является флагом спящего режима. Он показывает, находится или нет контроллер msCAN12 в спящем режиме: логический 0 указывает, что msCAN12 не находится в спящем режиме, в то время, как логическая 1, показывает что этот режим установлен. Бит запроса спящего режима SLPRQ используется, чтобы запросить перевод модуля msCAN12 в спящий режим: установка этого бита заставляет модуль функционировать в рабочем режиме, очистка — переводит модуль в спящий режим.
И наконец, бит SFTRES используется центральным процессором, чтобы немедленно перевести модуль msCAN12 в состояние сброса. Когда этот бит установлен, любая текущая передача информации прерывается и прекращается синхронизация контроллера CAN с шиной CAN. Когда этот бит очищен, msCAN12 работает в нормальном режиме.
Флаги SFTRES, SLPAK и CSWAI регистра CMCR0 используются, чтобы выбрать один из четырех режимов работы msCAN12 (нормальный, программного сброса, спящий и выключения). Мы обсудим эти режимы в следующих трех разделах. Поскольку ЦП микроконтроллера 68HC12 может работать в трех режимах (рабочем, ожидания и останова), имеются 12 возможных комбинаций режимов функционирования ЦП и модуля msCAN12. Четыре из этих 12 комбинаций не могут быть реализованы.
Когда ЦП функционирует в рабочем режиме, модуль msCAN12 может функционировать в спящем режиме, режиме программного сброса или в нормальном режиме. Режим выключения не допускается. ЦП может выбрать один из режимов msCAN12, конфигурируя три бита регистра CMCR0 следующим образом:
• Спящий режим: CSWAI = 0 или 1, SLPAK = 1 и SFTRES = 0;
• Режим программного сброса: CSWAI = 0 или 1, SLPAK = 0 и SFTRES = 1;
• Нормальный режим: CSWAI = 0 или 1, SLPAK = 0 и SFTRES = 0.
Обратите внимание, что бит SLPAK предназначен только для чтения и не может быть изменен под управлением программы. Чтобы установить или очистить бит SLPAK, Вы должны установить или очистить бит SLPRQ (бит 1) регистра CMCR0.
Когда ЦП функционирует в режиме ожидания, модуль msCAN12 может функционировать в любом из четырех режимов. Следующие конфигурации из трех битов в регистре CMCR0 используются, чтобы назначить один из нижеперечисленных режимов:
• Режим выключения: CSWAI = 1, SLPAK = 0 или 1 и SFTRES = 0 или 1,
• Спящий режим: CSWAI = 0, SLPAK = 1 и SFTRES = 0,
Читать дальше