Blue Flower

Pi-CAN-Duo

Einleitung

Die ist ein DUAL CAN-Port Modul für den Raspberry Pi 2B, 3B, 3B+

Mit Hilfe dieser Erweiterung soll mein Raspberry Pi 3B+  zu einem universellen CAN-Logger und CAN Analyse Tool ausgebaut werden. Somit lassen sich dann folgende Einsatzzwecke:

  • CAN-Logger , CAN-Sniffer
  • CAN-Gateway 
    • Einfache Zuordnung von welcher Seite die CAN-Botschaften gesendet werden
    • Einfaches Filtern von CAN-Botschaften (mit Shell Befehle)
  • Basic-Tools zur Protokollanalyse
  • socketcand - Support: Simulatane CAN Analyse von mehreren Benutzern über  Netzwerkverbindungen.
  • Direkter Support vom Kernel
  • Einfaches Programmieren eigener CAN-Applikationen z.B. mit Python
  • ... und vieles mehr - Vorallem macht es mit dem Raspi einfach mehr Spaß :-)

realisieren.

Hardware

 Schaltplan

Die Schaltung besteht im Wesentlichen aus:

  • 2 x MCP2515 -  CAN-Controller
  • 2 x SNHVD232D -  3,3V CAN-Bus Treibern
  • 1 x EEPROM - HAT ID Eeprom 
  • optionale Terminierung der CAN-Bus Leitungen mittels Jumper

Die CAN-Controller sind über den SPI-BUS an den Raspberry Pi angebunden und die SPI-Taktfrequenz beträgt 20MHz.

Hinweis: In dem Schaltplan sind für den CAN-Controller und Quarze jeweils zwei Bestückungsvarianten vorgesehen, so daß man die Bauform verwenden kann, die man gerade zur Hand hat, bzw. bei Handbestückung einfacher zu löten sind.

 

Schaltplan PI-CAN-Duo
Abb. 1 Schaltplan PI-CAN-Duo

 Layout

Toplayer
Abb. 1.2 Bestückungsseite PI-CAN-Duo

 

Bottomlayer PI-CAN-Duo
Abb.1.3 Leiterbahnseite PI-CAN-Duo

 Aufbau

 

PI-CAN-Duo eingebaut
Abb 1.4 PI-CAN-Duo eingebaut

Abb. 1.5 PI-CAN-Duo komplett verbaut

Software

Konfiguration des Raspberry Pi

 Das CAN Modul verwendet 2 MCP2515 die über SPI angebunden sind:

  • CAN 1
    • GPIO 25 Rx-IRQ
  • CAN 2
    • GPIO 24 Rx-IRQ

 Folgende Schritte sind jetzt für die Konfiguration erforderlich:

  • SPI mit sudo raspi-config aktivieren
  • /boot/config.txt folgendes einfügen, bzw. kontrollieren ob diese Einträge schon gesetzt sind.
    dtparam=spi=on
    
    # Syntax für Raspberry 2 
    # dtoverlay=mcp2515-can1-overlay,oscillator=20000000,interrupt=24
    # dtoverlay=mcp2515-can0-overlay,oscillator=20000000,interrupt=25
    
    # Syntax für Raspberry 3 ist hier aktiviert
    dtoverlay=mcp2515-can1,oscillator=20000000,interrupt=24
    dtoverlay=mcp2515-can0,oscillator=20000000,interrupt=25
    
    dtoverlay=spi-bcm2835-overlay  

    can1 wird zuerst angegeben, damit das can0 Interface mit can0 angesprochen werden kannl.

  • sudo reboot - Raspberry rebooten und kontrollieren, ob die SPI Controller korrekt erkannt wurde:
    pi@raspberrypi:~ $ dmesg |grep spi
    [    4.133354] mcp251x spi0.0 can0: MCP2515 successfully initialized.
    [    4.145085] mcp251x spi0.1 can1: MCP2515 successfully initialized.
  • Linux can-utils installieren mit:
    sudo apt-get install can-utils​
  • Kernel Module laden (can-gw wird nur benötigt wenn man auch die Gateway Funktion mit cangw nutzen will.
    sudo modprobe can
    sudo modprobe can-gw​

    damit cangw bei jedem Neustart automatisch geladen wird, sollte man es der Datei: /etc/modules eintragen:

    # /etc/modules: kernel modules to load at boot time.
    #
    # This file contains the names of kernel modules that should be loaded
    # at boot time, one per line. Lines beginning with "#" are ignored.
    
    # für meine i2c Tests
    i2c-dev
    
    # CAN Gasteway support  from Linux Kernel 3.2 
    can-gw​
  • CAN0 mit 100000 kBit/s starten:
    sudo ip link set can0 up type can bitrate 100000​
  • und mit candump oder cansniffer teste ob was empfangen wird:
    candump can0
    cansniffer -c can0 ​

..... in arbeit .... später mehr

 

 

Links

hier noch ein paar weitere nützliche Tools um den Raspberry Pi zum CAN-Anaylzer auszu bauen:

  • Caring Caribou - CAN Analyzing Toolkit  
  • can-utils - Hier die Sourcen auf Github falls man es selber kompilieren will
  • cangveinfacher CAN-Sniffer Ersatz für Extended IDs
  • python-can - Python CAN Modul