Troubleshooting
Frames are sent but not received
Step 1. Check if the bitrates on the transmitting and receiving devices match.
To print current configuration use ip -details link show can0
Bitrates are set during bus configuration. For CAN FD:
sudo ip link set can0 up txqueuelen 65535 type can bitrate
1000000
dbitrate
8000000
fd on
The nominal and data bitrates are 1000000 bit/s and 8000000 bit/s respectively.
For classic CAN:
sudo ip link set can0 up txqueuelen 65535 type can bitrate
1000000
Here the bitrate is 1000000 bit/s.
На 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 есть примеры настроек.
Segmentation Fault
При установке новой версии ОС на распберри, с версии 2024 года, при установке can-utils и изменении файла /boot/firmware/config.txt (раньше он был /boot/config.txt) при поднятии can шины стала возникать ошибка Segmentation fault. Пока единственное рабочее решение ставить в качестве операционки Ubuntu Server 20.04. Чтобы подключиться к вайфаю меняете файл с расширением yaml в папке /etc/netplan/ У меня этот файл назывался 50-cloud-init.yaml. Вот как он примерно должен выглядеть:
network:
version: 2
wifis:
renderer: networkd
wlan0:
dhcp4: true
optional: true
access-points:
TurtleBro:
password: turtlew001
TurtleBro5G:
password: turtlew001
Здесь название сети вай фай TurtleBro и TurtleBro5G, а пароль к ним turtlew001. Обратите внимание, что при редактировании файла НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ ТАБУЛЯЦИЮ. Используйте только пробелы!
Подробнее о том, как настроить интернет можно почитать здесь. Там может возникнуть еще ряд проблем при обновлении и установки новых пакетов, но в целом они решаются гуглением.
Например может быть такая проблема:
Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 1247 (unattended-upgr)
Ее решить мне помогла команда ниже, подробнее о решении почитать можно тут
sudo dpkg-reconfigure -plow unattended-upgrades
Last updated