Вернемся теперь к битам 7 и 6 регистра CBTR0. При синхронизации битов на шине, используются биты скачка ресинхронизации (SJW1:SJW0), позволяющие уменьшить или увеличить ширину скачка ресинхронизации (число квантов времени). Таблица 9.4 показывает ширину скачка ресинхронизации, соответствующую различным значениям SJW1:SJW0.
SJW1 | SJW0 | Ширина скачка ресинхронизации |
---|---|---|
0 | 0 | 1 квант времени |
0 | 1 | 2 кванта времени |
1 | 0 | 3 кванта времени |
1 | 1 | 4 кванта времени |
Таблица 9.4. Выбор ширины скачка ресинхронизации
В заключение покажем дополнительную аппаратную возможность контроллера msCAN12 контроллера. Когда контроллер принял или передал корректное сообщение, генерируется импульс с длительностью, равной времени передачи одного бита. Этот импульс может быть послан на встроенный модуль таймерного интерфейса (TIM). Чтобы установить эту внутреннюю связь, используется бит TLNKEN в регистре CMCR0. Такое решение обеспечивает программисту необходимую гибкость. Модуль таймерного интерфейса может быть запрограммирован на определенное действие при появлении любого кадра приема или передачи, например, для каждого кадра может создаваться своя собственная метка времени.
9.3.4. Конфигурирование модуля msCAN12 для работы в сети
В этом разделе мы объединим три подсистемы контроллера msCAN12 в единое целое и покажем последовательность действий по его инициализации.
До начала нашего обсуждения конфигурации сети, отметим, что шесть из восьми выводов физического порта CAN могут использоваться как универсальные входы/выходы порта общего назначения PORTCAN. На рис. 9.27 показано использование порта CAN для таких целей. Когда выводы со 2 по 7 находятся в режиме универсальных линий ввода/вывода, следующие три регистра используются для записи и чтения данных с порта PORTCAN: регистр данных PORTCAN, регистр направления передачи DDRCAN, регистр управления PCTLCAN.
Рис. 9.27. CAN портовая конфигурация
Регистр DDRCAN используется, чтобы программировать соответствующие выводы как входные или выходные. На рис. 9.28 показано назначение каждого бита регистра. Обратите внимание, что биты 0 и 1 зарезервированы как биты передачи и приема контроллера CAN и не могут быть использованы как универсальные выводы входов/выходов. Установка бита направления передачи данных в состояние логической 1 конфигурирует соответствующий вывод как выходной; установка его в состояние логического нуля — как входной. Регистр PCTLCAN, формат которого представлен на рис. 9.29, используется, чтобы разрешать или запрещать перевод выводов от 2 до 7 порта CAN в режим драйверов высокого или низкого уровня. Бит PUECAN используется, разрешать (при переводе в состояние логической 1) или запрещать (при переводе в состояние логического 0) режим драйвера высокого уровня. Бит RDPCAN выбирает конфигурацию, разрешающую (при переводе в состояние логической 1) или запрещающую (при переводе в состояние логического 0) режим драйвера низкого уровня.
Рис. 9.28. Формат регистра направления передачи DDRCAN
Рис. 9.29. Формат регистра управления PCTLCAN
И наконец, регистр PORTCAN содержит фактические данные (логические уровни) посылаемые или получаемые физическими выводами порта CAN. На рис. 9.30 показано содержимое регистра. В соответствии с установками в регистре DDRCAN, каждый бит используется передачи или приема данных из внешней среды. Обратите внимание, что, даже если модуль CAN конфигурирован для связи с сетью CAN, этот регистр будет передавать или принимать данные, в зависимости от состояния битов 1 и 0 этого регистра.
Процедура полной установки. Далее мы приведем процедуру полной установки, позволяющей конфигурировать модуль 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: