CANNY 7.3 Echo. Драйвер CAN

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

Контроллеры CANNY 7.3 Echo имеет два независимых интерфейса CAN, поддерживающих работу как с CAN 2.0, так и с CAN-FD. Две пары контактов 8-контаткного разъема контроллера предназначены для подключения к двум цифровоым информационным шинам CAN или CAN-FD: конткты №1 и №7 используются драйвером интерфейса CAN0 (CAN0-L и CAN0-H), конткты №4 и №6 - драйвером интерфейса CAN1 (CAN1-L и CAN1-H).

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

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

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

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

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

Допустимые значения регистров конфигурации драйвера CAN.
Регистр Ожидаемые значения
Регистр включения режима Non-ISO CRC для сообщений CAN FD CANx ≥ 1 = включить режим Non-ISO CRC для сообщений CAN FD соответствующего интерфейса CAN;
0 = выключить режим Non-ISO CRC для сообщений CAN FD соответствующего интерфейса CAN.
Регистр установки номинальной скорости CANx 1…N = активизация драйвера и установка скорости приема / передачи CAN2.0-сообщений соответствующего интерфейса / номинальной скорости (скорости арбитража) CAN-FD-сообщений (задается специальной константой из справочника констант);
0 = драйвер отключен.
Регистр установки скорости передачи данных CANx (см.примечания) 1…N = установка скорости приема / передачи данных соответствующего интерфейса в режиме CAN FD, (задается специальной константой из справочника констант);
0 = ?? фактическая скорость приема / передачи данных CANx совпадает с установленной номинальной скоростью CANx ??.
Регистр установки режима работы CANx 0…2 = установить режим работы драйвера CANx (задается именованной константой из раздела «Конфигурация CAN / Режимы работы CAN»):
0 - «Режим приема и передачи сообщений только CAN 2.0 A/B» - включен по умолчанию;
1 - «Режим приема и передачи сообщений как CAN FD так и CAN 2.0 A/B»;
2 - «Режим только приема сообщений как CAN FD так и CAN 2.0 A/B (Listen Only)» - включить режим пассивного приема (listen only) сообщений CAN соответствующего интерфейса (смотри примечание).
Регистр установки ограничения попыток автоматической повторной передачи CANx ≥ 2 = для соответствующего интерфейса включен режим запрета автоматической повторной отправки сообщения при возникновении ошибки передачи;
1 = для соответствующего интерфейса включен режим трех попыток автоматической повторной отправки сообщения при возникновении ошибки;
0 = для соответствующего интерфейса режим запрета автоматической повторной отправки сообщения при возникновении ошибки передачи выключен;
Регистр режима фильтрации приема данных CANx ≥ 1 = режим фильтрации принимаемых сообщений CAN соответствующего интерфейса включен;
0 = режим фильтрации принимаемых сообщений CAN соответствующего интерфейса отключен.
Регистр установки фильтра
приема CANx IDL №0

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

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

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

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

Примечание: “Регистр установки скорости передачи CANx” актуален только в режиме CAN FD и в режиме CAN 2.0 игнорируется. При работе в режиме CAN FD данный регистр должен быть обязательно задан пользователем с помощью соответствующей именованной константы (см. таблицу 2).

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

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

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

Именованные константы, определяющие конфигурацию 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 не готов;
Регистр наличия неотправленных данных в буфере передачи CANx 1 = в буфере передачи соответствующего интерфейса драйвера CAN есть неотправленные данные;
0 = в буфере передачи соответствующего интерфейса драйвера CAN неотправленных данных нет; буфер свободен.

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

Регистры приёма драйвера CAN.
Регистр Возвращаемые значения
Регистр наличия принятых данных CANx 1 = в буфере приема соответствующего драйвера CAN находится полученное сообщение, данное значение появляется в регистре на один цикл выполнения диаграммы сообщая об актуальности данных, находящихся в буфере приема;
0 = в буфере приема соответствующего интерфейса драйвера CAN нет актуальных данных.
Регистр принятого сообщения CANx IDL 0…0xFFFF = значение младшей части идентификатора полученного CAN-сообщения соответствующего интерфейса.
Регистр принятого сообщения CANx IDH 0…0x1FFF = значение старшей части идентификатора полученного CAN-сообщения соответствующего интерфейса.
Регистр принятого сообщения CANx IEFBRL 0…0xXX40 = значение, равное количеству байт данных в принятом сообщении CAN соответствующего интерфейса (см.таблицу 5) со служебными битами информации о специальных признаках сообщения, где:
- бит 15 - IDE - признак расширенного формата ID сообщения;
- бит 14 - ESI - флаг переполнения счетчика ошибок;
- бит 13 - FDF - признак сообщения CAN-FD;
- бит 12 - BRS - признак использования переключения скорости обмена CAN-FD;
- бит 11 - RRS - признак удаленного запроса данных.
Регистр принятого сообщения
CANx D1:D0

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

Примечание: Максимальная длина сообщения CAN составляет 64 байта (в режиме CAN FD), что в шестнадцатеричной формате соответствет 0x40.

Значения количества байт данных в сообщении CAN FD.
Параметр Перечень допустимых значений
Количество байт данных в сообщении CAN FD 0; 1; 2; 3; 4; 5; 6; 7; 8; 12; 16; 20; 24; 32; 48; 64.

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

Регистры передачи сообщений CAN.
Регистр Ожидаемые значения
Регистр начала передачи CANx ≥ 1 = загрузить данные из регистров передачи в буфер передачи соответствующего интерфейса драйвера CAN;
0 = не загружать данные в буфер передачи соответствующего интерфейса драйвера CAN..
Регистр сообщения передачи CANx IDL 0…0xFFFF = значение младшей части идентификатора передаваемого CAN-сообщения соответствующего интерфейса.
Регистр сообщения передачи CANx IDH 0…0x1FFF = значение старшей части идентификатора передаваемого CAN-сообщения соответствующего интерфейса.
Регистр сообщения передачи CANx IEFBRL 0…0xXX40 = значение, равное количеству байт данных в передаваемом сообщении CAN соответствующего интерфейса (см.таблицу 5) со служебными битами информации о специальных признаках сообщения, где:
- бит 15 - IDE - признак расширенного формата ID сообщения;
- бит 14 - ESI - флаг переполнения счетчика ошибок;
- бит 13 - FDF - признак сообщения CAN FD;
- бит 12 - BRS - признак использования переключения скорости обмена CAN-FD;
- бит 11 - RRS - признак удаленного запроса данных.
Регистр сообщения передачи
CANx D1:D0

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

Примечание: Максимальная длина сообщения CAN составляет 64 байта (в режиме CAN FD), что в шестнадцатеричной формате соответствет 0x40.

Примеры

Пример №1 функциональной диаграммы приема данных из шины CAN0 в режиме CAN 2.0 A/B.

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

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

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

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

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

Примечание: В регистре чтения CAN0 IEFBRL дополнительно проверяются служебные биты признаков полученного сообщения, т.е. что получено сообщение CAN FD переданное с изменением скорости передачи.

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

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

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

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

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

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

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

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

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

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

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

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

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

Для отправки CAN-сообщения в режиме CAN FD, длиной 16 байт, с расширенным идентификатором необходимо задать идентификатор CAN-сообщения, включая его старшую часть [Регистр сообщения передачи CAN0 IDH]; установить биты 15, 13 и 12 регистра [Регистр сообщения передачи CAN0 IEFBRL]; задать количество байт передаваемого сообщения в регистре [Регистр сообщения передачи CAN0 IEFBRL].

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

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

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

Выполняя диаграмму контроллер последовательно, отправляет группу из 8 сообщений с интервалом 1 секунда между ними, при этом 7 сообщений отправляются в режиме CAN 2.0 A/B, а сообщение с ID=0x008 (индекс=3) и длиной 12 байт - в формате CAN FD.

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

СМОТРИ ТАКЖЕ