Skip to content

ijmeca/Arduino-STM32-CAN

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Arduino-STM32-CAN

Can Example for Arduino Core STM32.

Hardware requirements

  • STM32F103 Development Board.
  • STM32F303 Development Board.
  • STM32F405 Development Board.
  • STM32F407 Development Board.
  • STM32F446 Development Board.
  • CAN Transceiver.
    MCP2551/2561(5V)
    TJA1040/1050/1055(5V)
    SN65HVD230/231/232(3.3V)
    ISO1050(3.3V)

NOTE:3V CAN Trasnceviers are fully interoperable with 5V CAN trasnceviers.
Check here and here.

Software requirements

STM32 core support for Arduino.
https://github.com/stm32duino/Arduino_Core_STM32

Wirering

  • USB power supply (board with 5V pin)
    STM32F103-CAN-1

  • Board without 5V pin, such as BlackPill, or ST-Link power supply
    STM32F103-CAN-2

Transmitter

STM32F103-Transfer

STM32F303-Transfer

Receiver

Serial printing goes to PA9.
STM32-Receive

Communication with Arduino-UNO

You can use this library.

Communication with Arduino-DUE

You can use this library. STM32F103-CAN-DUO

Communication with ESP8266

You can use this library. STM32F103-CAN-ESP8266

Communication with ESP32

ESP-IDE has a CAN Network example.
https://github.com/espressif/esp-idf/tree/master/examples/peripherals/can/can_network STM32F103-CAN-ESP32

Communication with Raspberry Pi

Edit /boot/config.txt and reboot.

dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25
dtoverlay=spi-bcm2835-overlay

Make sure the device is ready after reboot.

$ dmesg | grep mcp251x
[   19.992025] mcp251x spi0.0 can0: MCP2515 successfully initialized.

$ ls /sys/bus/spi/devices/spi0.0
driver  modalias  net  of_node  power  statistics  subsystem  uevent

$ ls /sys/bus/spi/devices/spi0.0/net
can0

$ sudo /sbin/ip link set can0 up type can bitrate 1000000

$ dmesg | grep can0
[   19.992025] mcp251x spi0.0 can0: MCP2515 successfully initialized.
[ 1309.525795] IPv6: ADDRCONF(NETDEV_CHANGE): can0: link becomes ready

$ sudo ifconfig can0
can0: flags=193<UP,RUNNING,NOARP>  mtu 16
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 10  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

$ sudo ifconfig can0 txqueuelen 1000

Install can-utils.

$ sudo apt-get install can-utils

#Receiver
$ candump can0

#Transmitter
$ cansend can0 123#11223344AABBCCDD

STM32F103-CAN-RPI

About

Can Example for Core STM32

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 67.1%
  • C++ 32.9%