CANNY 7. Драйвер CAN

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

Два специальных внешних вывода контроллера CANNY 7, расположенные на 4х контактном разъеме: CAN-H и CAN-L, предназначены для подключения к цифровой информационной шине CAN.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры отправки сообщений

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

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

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

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

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

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

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

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

Отличия в отправке расширенного сообщения от отправки стандартного: установить бит 15 регистра [Регистр сообщения передачи CAN ERL], старшую часть идентификатора записать в регистр [Регистр сообщения передачи CAN IDH].

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

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

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

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

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

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

Примеры получения сообщений

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

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

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

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

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

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

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

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

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

СМОТРИ ТАКЖЕ