Raspberry Pi

PiCAN2 on Raspberry Pi 3

(Tested on Raspberry Pi3 with Raspbian Stretch 2017-09-07)

  1. Setup driver
$ sudo nano /boot/config.txt

Add the following lines

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

Reboot the board.

  1. Bring up CAN interface

Note that the maximum bitrate is 1000000 for PiCAN2.

$ sudo ip link set can0 up type can bitrate 1000000

To bring up the interface when boot, you can modify “/etc/network/interfaces”

$ sudo nano /etc/network/interfaces

Add the following lines

auto can0
  iface can0 inet manual
  pre-up /sbin/ip link set can0 type can bitrate 1000000
  up /sbin/ifconfig can0 up
  down /sbin/ifconfig can0 down

You can check if CAN is brought up by using command “ifconfig”. You should see something similar to this

$ 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 4  bytes 32 (32.0 B)
$     RX errors 0  dropped 0  overruns 0  frame 0
$     TX packets 4  bytes 32 (32.0 B)
$     TX errors 1  dropped 1 overruns 0  carrier 1  collisions 0
  1. Loopback test

You can use the loopback mode to test if PiCAN2 is working properly. You need to enable the loopback mode first.

$ sudo ip link set can0 down
$ sudo ip link set can0 type can loopback on
$ sudo ip link set can0 up type can bitrate 1000000

Now open two terminals, one as sender and one as receiver.

In sender terminal:

$ cansend can0 001#1122334455667788

In receiver terminal:

$ candump can0

If successful, you should expect

$ candump can0
$ can0  001   [8]  11 22 33 44 55 66 77 88
$ can0  001   [8]  11 22 33 44 55 66 77 88

Turn off the loopback mode:

$ sudo ip link set can0 down
$ sudo ip link set can0 type can loopback off
$ sudo ip link set can0 up type can bitrate 1000000
  1. More commands

Use this command to find more information of CAN related commands

$ ip link set can0 up type can help

Reference