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
  1. Hardware
  2. CAN-FD - Raspberry PI

Настройка CAN на RPI

Настройка CAN и CAN FD на Raspberry PI

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

Last updated 2 months ago

Для работы с CAN необходимо установить CAN-utils - набор полезных и удобных инструментов отладки, использующих интерфейс SocketCAN. Для установки их на Raspberry, используйте следующую команду:

sudo apt-get install can-utils 

CAN-utils содержат следующие полезные инструменты:

  • candump - позволяет отображать, фильтровать и записывать CAN пакеты

  • canplayer - воспроизводит записанные CAN пакеты

  • cansend - отправляет один CAN пакет

  • cangen - генерирует случайные пакеты

  • canbusload - отображение текущей нагрузки на шину CAN

В данной инструкции будут рассмотрены утилиты candump и cansend, потому что ими мы и будем чаще всего пользоваться. С остальными утилитами мы предлагаем читателю ознакомиться самостоятельно на github.

Чтобы запустить интерфейс для работы с CAN на Raspberry вводим команду

sudo ip link set can0 up txqueuelen 65535 type can bitrate 1000000

Если у вас вышла ошибка "Cannot find device "can0"", сделайте следующее:

sudo nano /boot/config.txt

В конец открывшегося файла добавьте строчку

dtoverlay=seeed-can-fd-hat-v2

Сохраните (Ctrl+S) и закройте(Ctrl+X) файл. Перезагрузите raspberry:

sudo reboot

Сообщения, получаемые и отправляемые через CAN - это некоторое количество байтов. Чтобы посмотреть что в CAN посылаются пакеты мы используем утилиту candump:

candump can0

Введя эту команду, мы увидим абсолютно все пакеты, передаваемые по CAN. Если нам нужно посмотреть сообщения, имеющие определенный ID, например 100, мы переводим ID в 16-ричную систему счисления (в нашем примере 100=0х64) и выполняем команду candump can0,ID:7ff Для ID 100 она выглядит слующим образом:

candump can0,064:7ff

Используем утилиту cansend для отправки сообщения (4 байта DE AD BE EF) в CAN, ID сообщения 100 (0х64):

cansend can0 00000064#DEADBEEF

Команда отключения интерфейса:

sudo ifconfig can0 down

CAN-FD

Шина CAN-FD – это следующий этап развития классической шины CAN. CAN-FD обеспечивает более высокую скорость передачи данных и больший объем передаваемых данных в одном кадре. Если вы проделали все шаги по установке CAN-utils, описанные выше, ничего дополнительно устанавливать не придется. Отличаться будет только команда запуска интерфейса:

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

Удобно, чтобы не включать интерфейс для общения с CAN-FD каждый раз, настроить автозапуск CAN-utils. Для этого создадим небольшой скрипт canup.sh в домашней дирректории и пропишем туда команду запуска CAN-FD

sudo nano canup.sh
#!/bin/sh
sudo ip link set can0 up txqueuelen 65535 type can bitrate 1000000 dbitrate 8000000 fd on

Сделаем файл исполняемым:

sudo chmod +x canup.sh

Добавим созданный скрипт в автозапуск. Чтобы запустить программу при запуске Raspberry Pi, вам просто нужно изменить файл /etc/rc.local на SD-карте (с Pi или путем изменения файла /etc/rc.local в счете rootfs с карты, подключенной к вашему ПК).

sudo nano /etc/rc.local

Должен открыться файл в редакторе nano. Чтобы поставить в автозапуск программу canup.sh, просто найдите строку

exit 0

в файле и добавьте командную строку, вызывающую вашу программу, перед строкой exit:

sudo bash /home/pi/canup.sh

Сохраняем Ctrl + S и закрываем Ctrl + X файл. Перезагружаем Raspberry

sudo reboot

Полезно знать команду

ip -details link show can0

Эта команда позволяет получить информацию об интерфейсе can0. Отметим, что, если при получении и отправке сообщений не возникает никаких ошибок, то в записи об ошибках вы увидите 0, как показано ниже

В данном разделе было описано как установить CAN-utils для взаимодействия с CAN и CAN-FD на Raspberry Pi 4, а также установки включения этого интерфейса в автозапуск. Далее разберем примеры получения и отправки сообщений по CAN-FD на низком уровне с помощю Arduino.

Далее мы будем использовать CAN-FD, с точки зрения использования утилит, ничего не поменяется. Прочитать подробнее о различиях CAN и CAN-FD можно .

здесь
страничке