Table of Contents
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
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.
Note: On newer PiOS versions add a file named /etc/network/interfaces.d/can0 with the content from above.
Check
dmesg | egrep -i "can|spi" [ 3.998382] CAN device driver interface [ 4.051102] mcp251x spi0.0 can0: MCP2515 successfully initialized.
Rocrail Setup
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:
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:
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.