CANNY 7.2 alfa. Драйвер CAN

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

Контроллеры CANNY 7.2 alfa имеют два независимых интерфейса CAN. Контакты №№8 и 9, использующиеся драйвером интерфейса CAN0 (CAN0-H и CAN0-L соответственно), и Контакты №№11 и 12, использующиеся драйвером интерфейса CAN1 (CAN1-H и CAN1-L соответственно), предназначены для подключения к цифровой информационной шине CAN.

Драйвер CAN контроллера CANNY 7.2 alfa имеет по 16 фильтров для каждого из CAN-интерфейсов.

Интерфейсы CAN0 и CAN1 имеют индивидуальные настройки и могут работать на разных скоростях обмена данными, что позволяет подключать контроллер CANNY 7.2 alfa одновременно к двум разным шинам CAN.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры

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

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

Скачать файл диаграммы примера.

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

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

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

Скачать файл диаграммы примера.

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

СМОТРИ ТАКЖЕ