CANNY 5 Nano. Драйвер CAN

Общее описание

Два специальных контакта контроллера CANNY 5 Nano, CAN-H и CAN-L, предназначены для подключения к цифровой информационной шине «CAN». Особенностью драйвера CAN контроллера CANNY 5 Nano является то, что у него количество фильтров принимаемых сообщений CAN равно 8, против 16 у CANNY 7.

Регистры драйвера

Ниже приведено описание допустимых значений регистров управления работой драйвера CAN.

Регистры конфигурации драйвера CAN позволяют установить параметры работы контроллера в качестве узла шины CAN:

Допустимые значения регистров управления работой драйвера CAN.
Регистр Ожидаемые значения
Регистр конфигурации CAN 1…N = активизация драйвера и установка скорости приема / передачи CAN-сообщений (задается специальной константой из справочника констант);
0 = драйвер отключен.
Регистр установки фильтра
приема CAN IDL №0

Регистр установки фильтра приема CAN IDL №7
0…0xFFFF = установить значение фильтра для младшей части идентификатора CAN-сообщения (биты 0…10 идентификатора стандартного формата или биты 0…15 идентификатора расширенного формата);
Регистр установки фильтра
приема CAN IDH №0

Регистр установки фильтра приема CAN IDH №7
0…0x1FFF = установить значение фильтра для старшей части идентификатора CAN-сообщения (биты 16…28 идентификатора расширенного формата);
Регистр установки режима пассивного приема сообщений CAN ≥ 1 = включен режим пассивного приема (listen only) сообщений CAN;
0 = включен режим нормального приема-передачи (normal) сообщений CAN
Регистр режима фильтрации приема данных CAN ≥ 1 = режим фильтрации принимаемых сообщений CAN включен;
0 = режим фильтрации принимаемых сообщений CAN отключен.
Регистр запрета автоматической повторной отправки сообщения CAN при ошибке ≥ 1 = режим запрета автоматической повторной отправки сообщения CAN при ошибке включен, драйвером будет предприниматься только одна попытка отправить данные CAN;
0 = режим запрета автоматической повторной отправки сообщения CAN при ошибке отключен, отправка сообщений будет выполняться согласно стандарту СAN - до получения подтверждения о успешном приеме хотя бы от одного узла сети.

Примечание: В режиме пассивного приема сообщений CAN (listen only) в отличие от нормального режима CAN (normal) драйвер выполняет прием данных из CAN-шины, но при этом не отправляет подтверждение их приема и не переводит сеть в состояние ошибки при обнаружении таковой. Таким образом контроллер остается незаметным для остальных устройств на шине, никак себя не проявляя. Для нормальной работы сети, в ней должны находится минимум два устройства работающие в режиме normal. При активированном пассивном режиме приема сообщений CAN, отправка пользователем сообщений в CAN-шину также невозможна.

Примечание: При включенном режиме фильтрации CAN драйвер будет принимать только те сообщения, идентификаторы которых совпадают с указанными в регистрах установки фильтра приема сообщений CAN значениями, игнорируя все остальные.

Примечание: В режиме запрета автоматической повторной отправки сообщения CAN при ошибке драйвер выполняет однократную попытку отправки данных в CAN-шину, не «засоряя» сеть неполученными сообщениями, избегая ее зависания. При этом доставка сообщения хотя бы одному получателю не гарантируется.

Конфигурация драйвера CAN, определяется константой, задающей скорость приема/передачи данных.

Значения константы скорости приема/передачи данных.
Параметр Перечень допустимых значений
Скорость приема/передачи данных, кбит/с 20; 33; 50; 83; 95.2; 100; 125; 250; 500; 1000

Именованные константы, определяющие конфигурацию CAN-драйвера, содержатся в разделе «Конфигурация CAN» справочника констант CannyLab, доступ к которому осуществляется через контекстное меню входа функционального блока, имеющего тип «Константа».

Регистры диагностики драйвера CAN позволяют пользователю определить состояние драйвера в тот или иной момент выполнения диаграммы.

Регистры диагностики драйвера CAN.
Регистр Возвращаемые значения
Регистр отсутствия активности драйвера CAN 1 = активность драйвера CAN отсутствует, шина бездействует, прием данных не осуществляется;
0 = регистрируется активность CAN.
Регистр переполнения буфера приема CAN 1 = ошибка, буфер CAN переполнен;
0 = переполнение буфера приема отсутствует.
Регистр ошибки приема / передачи CAN 1 = уровень ошибок приема / передачи CAN превысил допустимый порог;
0 = уровень ошибок приема / передачи ниже допустимого порога.
Регистр готовности буфера передачи данных CAN 1 = буфер передачи данных драйвера CAN свободен и готов к загрузке новых сообщений;
0 = буфер передачи данных драйвера не готов.

Регистры приема драйвера CAN позволяют получить доступ к значениям, полученным по шине.

Регистры приёма драйвера CAN.
Регистр Возвращаемые значения
Регистр наличия принятых данных CAN 1 = в буфере приема драйвера CAN находится полученное сообщение, данное значение появляется в регистре на один цикл выполнения диаграммы сообщая об актуальности данных, находящихся в буфере приема;
0 = в буфере приема драйвера CAN нет актуальных данных.
Регистр принятого сообщения CAN IDL 0…0xFFFF = значение младшей части идентификатора полученного CAN-сообщения
Регистр принятого сообщения CAN IDH 0…0x1FFF = значение старшей части идентификатора полученного CAN-сообщения.
Регистр принятого сообщения CAN ERL 0…0xC000 = значение, равное количеству байт данных в принятом сообщении, признаки EXT и RTR (см. примечание).
Регистр принятого сообщения
CAN D1:D0

CAN D7:D6
0…0xFFFF = значения соответствующих байт данных принятого сообщения CAN, по два байта на регистр.

Примечание: Регистр принятого сообщения CAN ERL, помимо числа байт в принятом сообщении 0…8 в младших битах, содержит в своих старших битах информацию о специальных признаках сообщения: бит 15 - признак EXT и бит 14 признак RTR. Где EXT = 1 при приеме сообщения в расширенном формате, EXT = 0 при стандартном формате сообщения; RTR = 1 при приеме удаленного запроса данных, EXT = 0 при приеме обычного сообщения.

Регистры передачи сообщений CAN используются для размещения в буфере передачи драйвера данных, подлежащих отправке.

Регистры передачи сообщений CAN.
Регистр Ожидаемые значения
Регистр начала передачи CAN ≥ 1 = загрузить данные из регистров передачи в буфер передачи драйвера CAN;
0 = не загружать данные в буфер передачи драйвера CAN.
Регистр сообщения передачи CAN IDL 0…0xFFFF = значение младшей части идентификатора передаваемого CAN-сообщения.
Регистр сообщения передачи CAN IDH 0…0x1FFF = значение старшей части идентификатора передаваемого CAN-сообщения.
Регистр сообщения передачи CAN ERL 0…0xC000 = значение, равное количеству байт данных в принятом сообщении, признаки XT и RTR (см. примечание).
Регистр сообщения передачи
CAN D1:D0

CAN D7:D6
0…0xFFFF = значения соответствующих байт данных принятого сообщения CAN, по два байта на регистр.

Примечание: Регистр сообщения передачи CAN ERL, помимо числа байт в передаваемом сообщении 0…8 в младших битах, содержит в своих старших битах информацию о специальных признаках сообщения: бит 15 - признак EXT и бит 14 признак RTR. Где EXT = 1 при передаче сообщения в расширенном формате, EXT = 0 при стандартном формате сообщения; RTR = 1 при передаче удаленного запроса данных, EXT = 0 при передаче обычного сообщения.

Примеры

Пример функциональной диаграммы отправки данных в шину CAN.

Пример функциональной диаграммы отправки данных в шину CAN.

Выполняя диаграмму контроллер, с периодичностью 1 раз в 100мс, передает в шину на скорости 125 кБод данные о состоянии трех своих входов, используя сообщения стандартного формата с идентификатором 0x123, содержащие один байт данных.

Пример функциональной диаграммы приема данных из шины CAN.

Пример функциональной диаграммы приема данных из шины CAN.

Выполняя диаграмму контроллер, получая по шине сообщения стандартного формата с идентификатором 0x0123, содержащие один байт данных, устанавливает на трех своих выходах состояние в соответствии с полученным значением.

Пример функциональной диаграммы приема данных из шины CAN с использованием фильтров.

В процессе работы контроллер, получая по шине сообщения в расширенном формате, сравнивает их идентификаторы со значениями, заданными в регистрах установки фильтров сообщения CAN и, если они совпадают, передает их содержимое в регистры приема CAN для обработки в функциональной диаграмме, сопровождая это включением своего контрольного светодиода (Канал №4) на 10мс. Сообщения, идентификаторы которых не совпадают с указанными в фильтрах, автоматически отбрасываются, сокращая расходование ресурсов контроллера и повышая возможности бесперебойного приема требуемых сообщений.

Пример функциональной диаграммы приема данных из шины CAN с использованием фильтров.

СМОТРИ ТАКЖЕ