CANNY 5 Nano. Драйвер CAN
Общее описание
Два специальных контакта контроллера CANNY 5 Nano, CAN-H и CAN-L, предназначены для подключения к цифровой информационной шине «CAN». Особенностью драйвера CAN контроллера CANNY 5 Nano является то, что у него количество фильтров принимаемых сообщений CAN равно 8, против 16 у CANNY 7.
Регистры драйвера
Ниже приведено описание допустимых значений регистров управления работой драйвера CAN.
Регистры конфигурации драйвера CAN позволяют установить параметры работы контроллера в качестве узла шины CAN:
Регистр | Ожидаемые значения |
---|---|
Регистр конфигурации CAN | 1…N = активизация драйвера и установка скорости приема / передачи CAN-сообщений (задается специальной константой из справочника констант); 0 = драйвер отключен. |
Регистр установки фильтра приема CAN IDL №0 … Регистр установки фильтра приема CAN IDL №7 |
0…0xFFFF = установить значение фильтра для младшей части идентификатора CAN-сообщения (биты 0…10 идентификатора стандартного формата или биты 0…15 идентификатора расширенного формата); |
Регистр установки фильтра приема CAN IDH №0 … Регистр установки фильтра приема CAN IDH №7 |
0…0x1FFF = установить значение фильтра для старшей части идентификатора CAN-сообщения (биты 16…28 идентификатора расширенного формата); |
Регистр установки режима пассивного приема сообщений CAN | ≥ 1 = включен режим пассивного приема (listen only) сообщений CAN; 0 = включен режим нормального приема-передачи (normal) сообщений CAN |
Регистр режима фильтрации приема данных CAN | ≥ 1 = режим фильтрации принимаемых сообщений CAN включен; 0 = режим фильтрации принимаемых сообщений CAN отключен. |
Регистр запрета автоматической повторной отправки сообщения CAN при ошибке | ≥ 1 = режим запрета автоматической повторной отправки сообщения CAN при ошибке включен, драйвером будет предприниматься только одна попытка отправить данные CAN; 0 = режим запрета автоматической повторной отправки сообщения CAN при ошибке отключен, отправка сообщений будет выполняться согласно стандарту СAN - до получения подтверждения о успешном приеме хотя бы от одного узла сети. |
Примечание: В режиме пассивного приема сообщений CAN (listen only) в отличие от нормального режима CAN (normal) драйвер выполняет прием данных из CAN-шины, но при этом не отправляет подтверждение их приема и не переводит сеть в состояние ошибки при обнаружении таковой. Таким образом контроллер остается незаметным для остальных устройств на шине, никак себя не проявляя. Для нормальной работы сети, в ней должны находится минимум два устройства работающие в режиме normal. При активированном пассивном режиме приема сообщений CAN, отправка пользователем сообщений в CAN-шину также невозможна.
Примечание: При включенном режиме фильтрации CAN драйвер будет принимать только те сообщения, идентификаторы которых совпадают с указанными в регистрах установки фильтра приема сообщений CAN значениями, игнорируя все остальные.
Примечание: В режиме запрета автоматической повторной отправки сообщения CAN при ошибке драйвер выполняет однократную попытку отправки данных в CAN-шину, не «засоряя» сеть неполученными сообщениями, избегая ее зависания. При этом доставка сообщения хотя бы одному получателю не гарантируется.
Конфигурация драйвера CAN, определяется константой, задающей скорость приема/передачи данных.
Параметр | Перечень допустимых значений |
---|---|
Скорость приема/передачи данных, кбит/с | 20; 33; 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 | 1 = буфер передачи данных драйвера CAN свободен и готов к загрузке новых сообщений; 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 используются для размещения в буфере передачи драйвера данных, подлежащих отправке.
Регистр | Ожидаемые значения |
---|---|
Регистр начала передачи CAN | ≥ 1 = загрузить данные из регистров передачи в буфер передачи драйвера CAN; 0 = не загружать данные в буфер передачи драйвера CAN. |
Регистр сообщения передачи CAN IDL | 0…0xFFFF = значение младшей части идентификатора передаваемого CAN-сообщения. |
Регистр сообщения передачи CAN IDH | 0…0x1FFF = значение старшей части идентификатора передаваемого CAN-сообщения. |
Регистр сообщения передачи CAN ERL | 0…0xC000 = значение, равное количеству байт данных в принятом сообщении, признаки XT и 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, содержащие один байт данных.
Пример функциональной диаграммы приема данных из шины CAN.
Выполняя диаграмму контроллер, получая по шине сообщения стандартного формата с идентификатором 0x0123, содержащие один байт данных, устанавливает на трех своих выходах состояние в соответствии с полученным значением.
Пример функциональной диаграммы приема данных из шины CAN с использованием фильтров.
В процессе работы контроллер, получая по шине сообщения в расширенном формате, сравнивает их идентификаторы со значениями, заданными в регистрах установки фильтров сообщения CAN и, если они совпадают, передает их содержимое в регистры приема CAN для обработки в функциональной диаграмме, сопровождая это включением своего контрольного светодиода (Канал №4) на 10мс. Сообщения, идентификаторы которых не совпадают с указанными в фильтрах, автоматически отбрасываются, сокращая расходование ресурсов контроллера и повышая возможности бесперебойного приема требуемых сообщений.