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

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

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

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

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

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

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

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

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

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

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

Регистр Ожидаемые значения
Регистр начала передачи 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. Выполняя диаграмму контроллер, с периодичностью 1 раз в 100мс, передает в шину на скорости 125 кБод данные о состоянии трех своих входов, используя сообщения стандартного формата с идентификатором 0x123, содержащие один байт данных.

17 9 2 1.PNG

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

17 9 2 2.PNG


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

CANNY 7.2 duo