Drucken
Kategorie: Raspberry Pi - Module
Zugriffe: 2658

Pi-CAN-Duo

Einleitung

Dies 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:

realisieren.

Hardware  (Version 0.1)

 Schaltplan

Die Schaltung besteht im Wesentlichen aus:

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

Hardware  (Version 0.2)

 Schaltplan

PI-CAN-Duo V0.2 Schaltplan (PDF)

 Aufbau
PI-CAN-Duo Version 0.2

Abb. 1.6 PI-CAN-Duo Hardware Version 0.2  

 

Projekt-Status:

Software

Konfiguration des Raspberry Pi

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

 Folgende Schritte sind jetzt für die Konfiguration erforderlich:

Tipps und Tricks

Automatic Bus Off Recovery

Um das CAN-Interface nach einem Bus-Off oder Error-Passiv Zustand automatisch wieder zu starten, darf der restart-ms - Wert nicht 0 sein, sondern es muss die Zeit in ms angegeben werden mit der ein Restart durchgeführt werden soll. ( can state ERROR-PASSIVE restart-ms 0 )

Beispiel um die Zeit auf 200 ms zusetzen.

sudo ip link set canX type can restart-ms 200

Der Restart-Parameter kann auch oben beim Autostart hinzugefügt werden (/etc/network/interfaces)

Autostart (z.B. CAN-Bus mit 100 kBit/s beim Booten initialisieren) 

 In /etc/network/interfaces können die Interfaces konfiguriert werden, so daß beim Booten z.B. mit 100kBit/s initialisiert werden.

auto can0
iface can0 inet manual
    pre-up ip link set $IFACE type can bitrate 100000 listen-only off
    up /sbin/ifconfig $IFACE up
    down /sbin/ifconfig $IFACE down

auto can1
iface can1 inet manual
    pre-up ip link set $IFACE type can bitrate 100000 listen-only off
    up /sbin/ifconfig $IFACE up
    down /sbin/ifconfig $IFACE down

Im obigen Beispiel wird keine Bus-Off Recovery-Zeit gesetzt.

Wenn die Baudrate nun nicht geändert werden soll, können die CAN-Schnittstellen einfach mit ifdown und ifup ab/eingeschaltet werden:

sudo ifdown can0
sudo ifup can0

Um den Sendbuffer automatisch beim Login zu setzen, kann man folgendes in ~/.profile eintragen:

sudo ip link set can0  txqueuelen 1000
sudo ip link set can1  txqueuelen 1000

#autostart routing:
sudo cangw -F
sudo cangw -A -s can1 -d can0
sudo cangw -A -s can0 -d can1

 

Python CAN

Mit Python lassen sich sehr einfache Programme schreiben mit der man auf die CAN-Schnittstelle Zurgreifen kann. Hier: Python-CAN - Erste Schritte

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

 

 

 

Links

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