User Tools

Site Tools


cbus:socketcan-en

SocketCAN

Introduction

The Pi01CAN MCP251x Interface board needs a Raspberry Pi 2/3/4 with PiOS 32bit or 64bit.1)
SocketCAN is only available if the Rocrail server runs on the same Raspberry Pi with the PiCAN on it.
The communication with RCAN2) is direct and binary; No bidirectional conversion needed between the MERG Gridconnect ASCII framing.
The 12VDC power supply for the connected CANGC* units can be provided wit a GCA-08. See Cable connections for more information.


Documentation

Pi01CAN Interface

pi01can.jpg
The I2C parts can be left out If the RocNet connection is not needed. (Just write a remark in case its ordered at GCA.)

Raspi Setup

config.txt

Modify the following file as super user, sudo, with a text editor of your choice.
/boot/config.txt

Remove the comment '#' from this line:
before modify

#dtparam=spi=on

after modify

dtparam=spi=on

Add the following lines to the end of this file:

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

Reboot

sudo shutdown -r now

interfaces

Modify the following file as super user, sudo, with a text editor of your choice.
/etc/network/interfaces

Add the following lines to the end of this file: (The comment line '#' is optional.)

# CAN Interface
auto can0
iface can0 inet manual
        pre-up /sbin/ip link set $IFACE type can bitrate 125000 restart-ms 100
        up /sbin/ifconfig $IFACE up
        down /sbin/ifconfig $IFACE down

If the Pi-CAN should be used with MBUS, the bitrate must be set to 250000.

Check

pi@keltenbahn:~ $ dmesg | egrep -i "can|spi" 
[    3.998382] CAN device driver interface
[    4.051102] mcp251x spi0.0 can0: MCP2515 successfully initialized.


Rocrail Setup


  • Select type SocketCAN
  • Set Hostname(device name) to can0 (If not set: can0 will be used.)

Check the device name

Check the device name by using the command ifconfig on the Raspberry Pi:

pi@keltenbahn:~ $ ifconfig
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


CANService

As alternative to running Rocrail on the Raspberry Pi, it is also possible to use the CANService.
It behaves like a GC1e.


Alternative CAN Board

This low-cost AZDelivery MCP2515 CAN Bus Shield can be used as alternative if only CAN is needed:
mcp2515_can_bus_modul_pinout.jpg
The Raspberry Software Setup is the same as for the Pi01-CAN, except for the oscillator:

oscillator=8000000

Check the board which frequency the crystal has printed on it:
azdelivery-canshield.jpg
This example shows 8000 kHz → 8000000 Hz
For CAN speeds above 125kHz it is recommended to replace this crystal with a 16MHz type. (oscillator=16000000)

Wiring
Shield Rpi Rpi Pin number(s) Remark
VCC 5V 2, 4 With 3V3 it will receive, but cannot send CAN packets.
GND Masse (Ground) 6, 9, 20, 25, 30, 34, 39
CS GPIO 8 (CE0) 24
SO GPIO 9 (MISO) 21
SI GPIO 10 (MOSI) 19
SCK GPIO 11 (SCLK) 23
INT GPIO 25 22

Notes:

  • This board is not isolated. (ISO1050)
  • A ground connection on the screw terminal is missing, and it is strongly recommended to connect the ground of the CAN cable to the GND pin of this board to avoid static voltage which could destroy the electronics.
cbus/socketcan-en.txt · Last modified: 2021/12/20 16:17 by rjversluis