Пример использования драйвера CAN.
Пример демонстрирует использование драйвера CAN для пересылки сообщения между двумя CAN-интерфейсами.
В отличие от примера can_loopback, где используется только один CAN-интерфейс и нет необходимости в дополнительном оборудовании, этот пример требует наличия двух трансиверов подключенных к линиям CAN_H и CAN_L. Описание способов подключения трансиверов ко встроенным CAN-контроллерам находится в директории примера.
Пример отправляет CAN-пакет между интерфейсами can0 и can1. В примере используются настройки классического CAN, что подразумевает ограничение скорости передачи в 1 МБ/с.
При настройке скорости передачи, необходимо использовать только следующие константы:
CAN_BR_1MBS CAN_BR_800KBS CAN_BR_500KBS CAN_BR_250KBS CAN_BR_125KBS CAN_BR_62_5KBSДрайвер CAN не накладывает ограничений на направление отправки сообщений. В примере происходит отправка сообщения из can0 в can1, но при использовании функции CanTransmitFrame, можно выполнить отправку и в обратном направлении.
Тестовый CAN-пакет содержит идентификатор пакета, длину поля данных и сами данные. Описание полей содержатся в структуре CanFrame. Для классического CAN, длина поля данных ограничена 8 байтами.
Файлы примера
Код примера и скрипты для сборки находятся по следующему пути:
/opt/KasperskyOS-Community-Edition-<version>/examples/can2can
Сборка и запуск примера
Этот пример предназначен только для запуска на Radxa ROCK 3A.
При сборке и запуске этого примера на QEMU возникает ошибка. Это ожидаемое поведение, поскольку драйвера CAN для QEMU нет.
См. "Сборка и запуск примеров".
В начало