CANNY 7, Драйвер CAN

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

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

Два специальных внешних вывода контроллера CANNY 7, расположенные на 4х контактном разъеме: CAN-H и CAN-L, предназначены для подключения к цифровой информационной шине 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 = включен режим пассивного приема (listen only) сообщений CAN;
0 = включен режим нормального приема-передачи (normal) сообщений CAN;
Регистр режима фильтрации приема данных CAN
≥ 1 = режим фильтрации принимаемых сообщений CAN включен;
0 = режим фильтрации принимаемых сообщений CAN отключен;
Регистр запрета автоматической повторной отправки сообщения CAN при ошибке передачи
≥ 1 = автоматическая повторная отправка сообщений CAN при ошибке передачи выключена (запрещена);
0 = автоматическая повторная отправка сообщений CAN при ошибке передачи включена (разрешена).
Примечание: В режиме пассивного приема сообщений CAN (listen only) в отличие от нормального режима CAN (normal) драйвер выполняет прием данных из CAN-шины, но при этом не отправляет подтверждение их приема и не переводит сеть в состояние ошибки при обнаружении таковой. Таким образом контроллер остается незаметным для остальных устройств на шине, никак себя не проявляя. Для нормальной работы сети, в ней должны находится минимум два устройства работающие в режиме normal.
Примечание: При включенном режиме фильтрации CAN драйвер будет принимать только те сообщения, идентификаторы которых совпадают с указанными в регистрах установки фильтра приема сообщений CAN значениями, игнорируя все остальные.
Примечание: При включенном режиме запрета автоматической повторной отправки сообщения CAN при ошибке передачи, драйвер будет предпринимать только однократные попытки отправки сообщения CAN, вне зависимости от успешности его получения приемником, предотвращая, таким образом, возникновение ошибки приема (зависания) шины в случае отсутствия в сети приемника данного сообщения, иначе, в соответствии со стандартом CAN, сообщение будет отправляться до получения подтверждения его успешного приема хотя бы одним приемником.

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

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

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

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

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

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

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

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

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

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

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

6 9 2 1.png

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

6 9 2 2.png

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

6 9 2 3.png

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

CANNY 7

CANNY 7, Драйвер LIN