CANNY 7.2 Duo. Драйвер асинхронной передачи в CAN

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

Драйвер асинхронной передачи в CAN позволяет, независимо от функциональной диаграммы, осуществлять отправку CAN-сообщений, с заранее определенными параметрами и установленной, с разрешением 1мс, периодичностью отправки. Драйвер может быть использован для обоих CAN-интерфейсов (CAN0 и CAN1) контроллера. Работа в асинхронном режиме, в случаях когда это критически важно, позволяет добиваться более стабильной периодичности отправки сообщений, чем при отправке из функциональной диаграммы.

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

Для активации драйвера асинхронной передачи нужного интерфейса CAN необходимо:

  • задать конфигурацию интерфейса CANx;
  • включить драйвер асинхронной передачи CANx, используя соответствующий регистр.

Драйвер асинхронной передачи в CAN может использоваться совместно с обычным драйвером CAN.

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

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

Общие регистры конфигурации драйвера асинхронной передачи CAN.

Допустимые значения регистров конфигурации драйвера асинхронной передачи CAN.
Регистр Ожидаемые значения
Регистр включения драйвера асинхронной передачи CAN0
Регистр включения драйвера асинхронной передачи CAN1
≥ 1 = для указанного интерфейса CAN драйвер включен;
0 = для указанного интерфейса CAN драйвер отключен.
Регистр обновления данных драйвера асинхронной передачи CAN0
Регистр обновления данных драйвера асинхронной передачи CAN1
≥ 1 = применить новые настройки драйвера асинхронной передачи CAN (см.примечание)
0 = не обновлять настройки драйвера асинхронной передачи CAN

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

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

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

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

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

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

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

Примечание: Значение “1” в Регистре отправки данных буфера X драйвера асинхронной передачи CAN появляется после каждой успешной отправки данных на один цикл выполнения диаграммы (в случае, если период отправки данных указанного буфера больше длительности цикла выполнения диаграммы).

Примеры

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

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

Выполняя диаграмму контроллер, используя драйвер асинхронной отправки в CAN, отправляет в интерфейс CAN0 два сообщения с неизменными данными. Период отправки сообщения из буфера 1 (ID=0x010) равен 10мс, период отправки сообщения из буфера 2 (ID=0x050) - 50мс, при этом отправка сообщения из буфера 2 начинается с задержкой 5мс после активации драйвера.

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

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

Выполняя диаграмму контроллер, используя драйвер асинхронной отправки в CAN, с периодом 10мс, отправляет в интерфейс CAN0 сообщения, данные в которых (байты D6:D7) меняются каждые 250мс.

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

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

Выполняя диаграмму контроллер, принимая по интерфейсу CAN0 сообщение с ID=0x020, байт D0 которого равен 0x01, активирует передачу сообщения с ID=0x050 используя драйвер асинхронной отправки в CAN.

СМОТРИ ТАКЖЕ