VBCores Документация
СайтGitHub
  • VBCores
  • Hardware
    • VBCore VB32G4
    • VB STM32 программатор
    • BLDC драйвер 30A
    • DC драйвер 15A
    • Stepper драйвер 10A
    • CAN-FD - Raspberry PI
      • Настройка CAN на RPI
      • Часто возникаемые ошибки при работе с CAN/CAN FD
      • Работа с CAN FD через Python
    • Power board 30A
    • SBus-HID
    • DC-DC преобразователь
    • Ethernet - CAN-FD
    • USB-HUB
    • IMU BNO055
    • IMU BHI360
    • Т-Энкодер
  • Настройка ПО
    • Arduino IDE
      • Подготовка модуля VBCore
      • Установка среды программирования на Windows
      • Установка среды программирования на Ubuntu
        • Возможные ошибки в Ubuntu при работе с Arduino
      • Выбор платы в Arduino IDE
      • Установка базовой библиотеки
      • Структура ПО для Arduino
      • Примеры
        • Работа с CAN и CAN FD на Arduino
        • Работа с I2C
        • I2C detect
        • Датчик BNO055 / I2C
        • Датчик AS5047P / SPI
        • Датчик AS5600 / I2C
        • Работа с бесколлекторными двигателями
          • Simple FOC. Управление скоростью. Нахождение количества пар полюсов.
          • Simple FOC. Управление моментом
          • Чтение данных с датчика тока
        • Работа с коллекторным двигателем
          • Вращение DC мотором
          • Чтение угла по энкодеру. Управление DC мотором по углу
          • Чтение скорости вращения мотора по энкодеру
        • Работа с шаговым двигателем
          • Вращение шагового двигателя.
          • Контроль двигателя по интерфейсу SPI
    • STM32 CUBE IDE
      • Типовые настройки
      • Подсказки начинающим
        • Cube IDE для начинающих
        • Clock configuration
        • Таймеры - прерывания
        • Таймеры - ШИМ
        • Отладка программ
        • Коммуникации - FDCAN
        • Управление DC-мотором
        • Backup программы
  • Cyphal CAN
    • Cyphal CAN
    • PyCyphal
    • Yakut
    • Cyphal Arduino
      • Отправка и получение сообщений по cyphal
  • Работа с ROS
    • Установка Ubuntu, ROS и Arduino
    • ROS_LIB
    • Примеры
      • Publisher. Hello World!
      • Publisher with Subscriber
      • Rotation by DC motor
  • Работа с научным ПО
    • TCP Server
    • LabView
    • Matlab
  • Инструкции
    • Стенд управления двигателями
    • Переделка датчика мотор-колеса
    • Стенд мотор-колеса
    • iPower Motor
    • AS5047p OEM
  • Практические занятия
    • Коллекторный двигатель
      • Устройство коллекторного двигателя
  • RPI Display
Powered by GitBook
On this page
  • Данные отправляются, но не принимаются
  • Segmentation Fault
  1. Hardware
  2. CAN-FD - Raspberry PI

Часто возникаемые ошибки при работе с CAN/CAN FD

PreviousНастройка CAN на RPINextРабота с CAN FD через Python

Last updated 2 months ago

Данные отправляются, но не принимаются

Шаг 1. Проверьте настроенные скорости на принимающем и отправляющем устройствах

на распберри можно использовать команду ip -details link show can0

На распберри скорости задаются при запуске интерфейса. Для CAN FD:

sudo ip link set can0 up txqueuelen 65535 type can bitrate 1000000 dbitrate 8000000 fd on

Здесь заданы скорости 1000000 и 8000000.

Для 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. Подробнее читайте в разделе.

Чаще всего данные не принимаются именно из-за несовпадения скоростей.

Шаг 2. Если скорости у вас совпадают, а данные все еще не принимаются, проверьте тип ID сообщения. Он может быть Standart, а может быть Extended. Несовпадение типов тоже может быть причиной неполучения данных. Лучше всегда используйте FDCAN_EXTENDED_ID и не парьтесь)). В Arduino настройка типа выглядит так TxHeader.IdType = FDCAN_EXTENDED_ID В разделе есть примеры настроек.

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

Подробнее о том, как настроить интернет можно почитать. Там может возникнуть еще ряд проблем при обновлении и установки новых пакетов, но в целом они решаются гуглением.

Ее решить мне помогла команда ниже, подробнее о решении почитать можно

работа с CAN и CAN FD на Arduino
работа с CAN и CAN FD на Arduino
здесь
тут