CANNY 5.3 MDX. Драйвер CAN

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

Два специальных внешних вывода контроллера CANNY 5.3 MDX, контакт №3 (CAN-L) и контакт №4 (CAN-H) разъема X1, предназначены для подключения к цифровой информационной шине «CAN».

Драйвер CAN контроллера CANNY 5.3 MDX имеет 16 настраиваемых фильтров CAN-сообщений, позволяющий более рационально использовать ресурсы контроллера при работе с шиной CAN.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры

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

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

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

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

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

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

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

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

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

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

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

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

Пример №2 функциональной диаграммы отправки CAN-сообщения

Пример функциональной диаграммы отправки CAN-сообщения со стандартным идентификатором 0x001: 0xDE 0xAD 0xBE 0xEF 0x12 0x34 0x56 0x78 по появлению сигнала на восьмом канале контроллера.

Пример №2 функциональной диаграммы отправки CAN-сообщения.

Пример №3 функциональной диаграммы отправки CAN-сообщения

Пример функциональной диаграммы отправки CAN-сообщения с расширенным идентификатором 0x1f110001: 0xDE 0xAD 0xBE 0xEF 0x12 0x34 0x56 0x78 по появлению сигнала на восьмом канале контроллера.

Отличия в отправке расширенного сообщения от отправки стандартного: установить бит 15 регистра [Регистр сообщения передачи CAN ERL], старшую часть идентификатора записать в регистр [Регистр сообщения передачи CAN IDH].

Пример №3 функциональной диаграммы отправки CAN-сообщения.

Пример №4 функциональной диаграммы отправки CAN-сообщения

Пример функциональной диаграммы отправки CAN-сообщения со стандартным идентификатором 0x001: 0xDE 0xAD 0xBE 0xEF 0x12 0x34 0x56 0x78 по появлению сигнала на восьмом канале контроллера, а также отправка сообщения с тем же ID, но с нулевыми данными при пропадании сигнала восьмом канале контроллера.

Пример №4 функциональной диаграммы отправки CAN-сообщения.

Пример №5 функциональной диаграммы периодической отправки нескольких сообщений.

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

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

СМОТРИ ТАКЖЕ