CANNY 5.2 duo, Драйвер CAN

Материал из CANNY Wiki
Перейти к: навигация, поиск

Общее описание[править]

Контроллеры CANNY 5.2 duo имеют два независимых интерфейса CAN. Два специальных контакта разъема X1, использующиеся драйвером интерфейса CAN0 (CAN0-H и CAN0-L), и контакты разъема X2, использующиеся драйвером интерфейса CAN1 (CAN1-H и CAN1-L), предназначены для подключения к цифровой информационной шине CAN.

Особенностью драйвера CAN контроллера CANNY 5.2 duo является то, что количество фильтров принимаемых сообщений интерфейса CAN0, как и у CANNY 5.2, равно 8 (против 16 у CANNY 7), а у интерфейса CAN1 их всего 4.

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

Регистры драйвера[править]

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

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

Регистр Ожидаемые значения
Регистр установки конфигурации CANx
1...N = активизация драйвера и установка скорости приема/передачи CAN-сообщений соответствующего интерфейса. Задается специальной константой из справочника констант;
0 = драйвер отключен.
Регистр установки фильтра приема CANx IDL №0
...
Регистр установки фильтра приема CANx IDL №7
0...0xFFFF = установить значение фильтра для младшей части идентификатора CAN-сообщения (биты 0...10 идентификатора стандартного формата или биты 0...15 идентификатора расширенного формата);
Регистр установки фильтра приема CANx IDH №0
...
Регистр установки фильтра приема CANx IDH №7
0...0x1FFF = установить значение фильтра для старшей части идентификатора CAN-сообщения (биты 16...28 идентификатора расширенного формата);
Регистр установки режима пассивного приема сообщений CANx
≥ 1 = включен режим пассивного приема (listen only) сообщений CAN соответствующего интерфейса;
0 = включен режим нормального приема-передачи (normal) сообщений CAN соответствующего интерфейса;
Регистр режима фильтрации приема данных CANx
≥ 1 = режим фильтрации принимаемых сообщений CAN соответствующего интерфейса включен;
0 = режим фильтрации принимаемых сообщений CAN соответствующего интерфейса отключен.
Регистр запрета автоматической повторной отправки сообщения CAN0 при ошибке
≥ 1 = режим запрета автоматической повторной отправки сообщения через интерфейс CAN0 при ошибке включен, при передаче сообщений, драйвером будет предприниматься только одна попытка отправить каждое сообщение CAN; Для интерфейса CAN1 этот параметр всегда установлен.
0 = режим запрета автоматической повторной отправки сообщения через интерфейс CAN0 при ошибке отключен, отправка каждого сообщения будет автоматически повторяться до тех пор, пока интерфейсом не будет получено подтверждение приема сообщения хотя бы от одного узла сети.
Регистр конфигурации трансивера CAN1
0...2 = режим работы трансивера интерфейса CAN1, задается с помощью именованной константы из раздела "Конфигурация трансивера CAN":
0 - "Трансивер HS CAN" (High Speed CAN) - включен по умолчанию, обычная работа трансивера интерфейса (>100кБод);
1 - "Трансивер FT CAN" (Fault Tolerance CAN) - режим аппаратной совместимости трансивера интерфейса с FT CAN (обычно это 100кБод);
2 - "Трансивер SW CAN" (Single Wire CAN) - режим аппаратной совместимости трансивера интерфейса с однопроводными CAN, (обычно это 33кБод).
Примечание: В режиме пассивного приема сообщений CAN (listen only) в отличие от нормального режима CAN (normal) драйвер выполняет прием данных из CAN-шины, но при этом не отправляет подтверждение их приема и не переводит сеть в состояние ошибки при обнаружении таковой. Таким образом контроллер остается незаметным для остальных устройств на шине, никак себя не проявляя. Для нормальной работы сети, в ней должны находится минимум два устройства работающие в режиме normal. При активированном пассивном режиме приема сообщений CAN, отправка пользователем сообщений в CAN-шину также невозможна.
Примечание: При включенном режиме фильтрации CAN драйвер будет принимать только те сообщения, идентификаторы которых совпадают с указанными в регистрах установки фильтра приема сообщений CAN значениями, игнорируя все остальные.


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

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

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

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

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

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

Регистр Ожидаемые значения
Регистр начала передачи CANx
≥ 1 = загрузить данные из регистров передачи в буфер передачи соответствующего интерфейса драйвера CAN;
0 = не загружать данные в буфер передачи соответствующего интерфейса драйвера CAN.
Регистр сообщения передачи CANx IDL
0...0xFFFF = значение младшей части идентификатора передаваемого CAN-сообщения соответствующего интерфейса.
Регистр сообщения передачи CANx IDH
0...0x1FFF = значение старшей части идентификатора передаваемого CAN-сообщения соответствующего интерфейса.
Регистр сообщения передачи CANx ERL
0...0xC000 = значение, равное количеству байт данных в передаваемом сообщении соответствующего интерфейса драйвера CAN, признаки EXT и RTR (см. примечание).
Регистр сообщения передачи CANx D1:D0
...
Регистр сообщения передачи CANx D7:D6
0...0xFFFF = значения соответствующих байт данных передаваемого сообщения CAN соответствующего интерфейса драйвера, по два байта на регистр.
Примечание: Регистр сообщения передачи CAN ERL, помимо числа байт в передаваемом сообщении 0...8 в младших битах, содержит в своих старших битах информацию о специальных признаках сообщения: бит 15 - признак EXT и бит 14 признак RTR. Где EXT = 1 при передаче сообщения в расширенном формате, EXT = 0 при стандартном формате сообщения; RTR = 1 при передаче удаленного запроса данных, EXT = 0 при передаче обычного сообщения.

Примеры[править]

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

14 7 2 1.png

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

14 7 2 2.png


Смотри также[править]

CANNY 5.2 duo

CANNY 5.2 duo, Драйвер шлюза CAN