CANNY 7.2 MGX. Драйвер CAN
Общее описание
Контроллеры CANNY 7.2 MGX могут иметь либо два независимых интерфейса CAN, либо один интерфейс CAN и один интерфейс RS-485. В случае наличия двух интерфейсов CAN контакты №№3 и 4 разъема 1, использующиеся драйвером интерфейса CAN0 (CAN0-L и CAN0-H соответственно), и контакты №№1 и 2 разъема 1, использующиеся драйвером интерфейса CAN1 (CAN1-L и CAN1-H соответственно), контроллера предназначены для подключения к цифровой информационной шине CAN.
Драйвер CAN контроллера CANNY 7.2 MGX имеет по 16 фильтров для каждого из CAN-интерфейсов.
Интерфейсы CAN0 и CAN1 имеют индивидуальные настройки и могут работать на разных скоростях обмена данными, что позволяет подключать контроллер CANNY 7.2 MGX одновременно к двум разным шинам 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 = для соответствующего интерфейса включен режим запрета автоматической повторной отправки сообщения при возникновении ошибки передачи; 0 = для соответствующего интерфейса режим запрета автоматической повторной отправки сообщения при возникновении ошибки передачи выключен; |
Регистр установки режима пассивного приема сообщений CANx | ≥ 1 = включен режим пассивного приема (listen only) сообщений CAN; соответствующего интерфейса (смотри примечание); 0 = включен режим нормального приема-передачи (normal) сообщений CAN соответствующего интерфейса; |
Регистр режима фильтрации приема данных CANx | ≥ 1 = режим фильтрации принимаемых сообщений CAN соответствующего интерфейса включен; 0 = режим фильтрации принимаемых сообщений CAN соответствующего интерфейса отключен. |
Примечание: В режиме пассивного приема сообщений CAN (listen only) в отличие от нормального режима CAN (normal) драйвер выполняет прием данных из CAN-шины, но при этом не отправляет подтверждение их приема и не переводит сеть в состояние ошибки при обнаружении таковой. Таким образом контроллер остается незаметным для остальных устройств на шине, никак себя не проявляя. Для нормальной работы сети, в ней должны находится минимум два устройства работающие в режиме normal.
Примечание: При включенном режиме фильтрации CAN драйвер будет принимать только те сообщения, идентификаторы которых совпадают с указанными в регистрах установки фильтра приема сообщений CAN значениями, игнорируя все остальные.
Параметр | Перечень допустимых значений |
---|---|
Скорость приема/передачи данных, кбит/с | 20; 25; 33.3; 50; 62.5; 83.3; 95.2; 100; 125; 250; 500; 666.6; 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 не готов |
Регистр наличия неотправленных данных в буфере передачи 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 при передаче обычного сообщения.
Примеры
Пример №1 функциональной диаграммы приема данных из шины CAN0.
Выполняя диаграмму контроллер, получая по шине сообщения стандартного формата с идентификатором 0x0123, содержащие один байт данных, устанавливает на трех своих выходах состояние в соответствии с полученным значением.
Пример №2 функциональной диаграммы приема данных из шины CAN0.
Выполняя диаграмму контроллер, получая по шине сообщения стандартного формата с идентификатором 0x01F3, анализирует содержащееся в одном из байтов сообщения значение и устанавливает на своих выходах соответствующие состояния. Если полученное значение находится вне допустимого диапазона, включается встроенный зеленый светодиод.
Пример №3 функциональной диаграммы приема данных из шины CAN0 с использованием фильтров.
В процессе работы контроллер, получая по шине сообщения в расширенном формате, сравнивает их идентификаторы со значениями, заданными в регистрах установки фильтров сообщения CAN0 и, если они совпадают, передает их содержимое в регистры приема CAN0 для обработки в функциональной диаграмме, сопровождая это включением своего встроенного зеленого светодиода на 10мс. Сообщения, идентификаторы которых не совпадают с указанными в фильтрах, автоматически отбрасываются, сокращая расходование ресурсов контроллера и повышая возможности бесперебойного приема требуемых сообщений.
Пример №1 функциональной диаграммы отправки данных в шину CAN0.
Выполняя диаграмму контроллер, с периодичностью 1 раз в 100мс, передает в шину на скорости 125 кБод данные о состоянии трех своих входов, используя сообщения стандартного формата с идентификатором 0x123, содержащие один байт данных.
Пример №2 функциональной диаграммы отправки CAN-сообщения
Пример функциональной диаграммы отправки CAN-сообщения со стандартным идентификатором 0x001: 0xDE 0xAD 0xBE 0xEF 0x12 0x34 0x56 0x78 по появлению потенциала “GND” на канале №9 контроллера.
Пример №3 функциональной диаграммы отправки CAN-сообщения
Пример функциональной диаграммы отправки CAN-сообщения с расширенным идентификатором 0x1f110001: 0xDE 0xAD 0xBE 0xEF 0x12 0x34 0x56 0x78 по появлению потенциала “GND” на канале №9 контроллера.
Отличия в отправке расширенного сообщения от отправки стандартного: установить бит 15 регистра [Регистр сообщения передачи CAN ERL], старшую часть идентификатора записать в регистр [Регистр сообщения передачи CAN IDH].
Пример №4 функциональной диаграммы отправки CAN-сообщения
Пример функциональной диаграммы отправки CAN-сообщения со стандартным идентификатором 0x001: 0xDE 0xAD 0xBE 0xEF 0x12 0x34 0x56 0x78 по появлению потенциала “GND” на канале №9 контроллера, а также отправка сообщения с тем же ID, но с нулевыми данными при пропадании на нем потенциала “GND”.
Пример №5 функциональной диаграммы периодической отправки нескольких сообщений.
Примечание: Для организации периодической отправки нескольких CAN-сообщений также может быть использован Драйвер асинхронной передачи в CAN.