Часто возникаемые ошибки при работе с CAN/CAN FD
Данные отправляются, но не принимаются
Шаг 1. Проверьте настроенные скорости на принимающем и отправляющем устройствах
на распберри можно использовать команду ip -details link show can0
На распберри скорости задаются при запуске интерфейса. Для CAN FD:
sudo ip link set can0 up txqueuelen 65535 type can bitrate
500000
dbitrate
4000000
fd on
Здесь заданы скорости 500000 и 4000000.
Для CAN:
sudo ip link set can0 up txqueuelen 65535 type can bitrate
1000000
Здесь скорость 1000000
На Arduino скорости меняются на в функции setup(), используя методы write_default_params_classic() для CAN FD и write_default_params() для обычного CAN. Подробнее читайте в разделе работа с CAN и CAN FD на Arduino.
Чаще всего данные не принимаются именно из-за несовпадения скоростей.
Шаг 2. Если скорости у вас совпадают, а данные все еще не принимаются, проверьте тип ID сообщения. Он может быть Standart, а может быть Extended. Несовпадение типов тоже может быть причиной неполучения данных. Лучше всегда используйте FDCAN_EXTENDED_ID и не парьтесь)). В Arduino настройка типа выглядит так TxHeader.IdType = FDCAN_EXTENDED_ID
В разделе работа с CAN и CAN FD на Arduino есть примеры настроек.
Last updated