Содержание
Пример can2can
Пример использования драйвера 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 байтами.
Файлы примера
Код примера и скрипты для сборки находятся по следующему пути:
Сборка и запуск примера
Этот пример предназначен только для запуска на Radxa ROCK 3A.
При сборке и запуске этого примера на QEMU возникает ошибка. Это ожидаемое поведение, поскольку драйвера CAN для QEMU нет.
См. "Сборка и запуск примеров".
В начало