Это старая версия документа!
Пример CAN loopback:
Соединить CAN интерфейсы следующим образом:
CAN0_H --- CAN1_H CAN0_L --- CAN1_L GND --- GND
Перед изменением скорости интерфейсы необходимо выключить:
ip link set can0 down ip link set can0 type can bitrate 1000000 restart-ms 100 ip link set can0 up ip link set can1 down ip link set can1 type can bitrate 1000000 restart-ms 100 ip link set can1 up
Скорость на обоих интерфейсах должна совпадать.
Приём всех кадров:
candump can0
Приём только кадров с идентификатором 123:
candump 'can0,123:7FF'
Отправка кадра через can1:
cansend can1 123#1122334455667788
Где 123 — CAN ID, после # идут данные.
ip link set can0 down ip link set can1 down
ip -details -statistics link show can0
Нормальное состояние интерфейса:
state ERROR-ACTIVE bitrate 1000000
В статистике отображаются:
количество принятых пакетов — RX packets;
количество отправленных пакетов — TX packets;
ошибки приёма — RX errors;
ошибки передачи — TX errors.
Для loopback соедините:
TX --- RX
UART должен использовать подходящий логический уровень, например 3,3 В. Не подключайте TTL UART напрямую к RS-232.
stty -F /dev/ttyS1 115200 raw -echo
cat /dev/ttyS1
printf 'UART test' > /dev/ttyS1
При loopback отправленная строка должна появиться в окне приёма.
Успешный результат:
UART TEST PASSED