Von Tam Hanna
 
Automobile sind einfach testequipmentfeindlich. Ich erinnere mich mit Schrecken daran, wie ich vor einigen Jahren einmal ein 40 m langes Kabel verlegen musste, um ein Oszilloskop in einem Auto in Betrieb zu nehmen. Sofern sich ihr Vorhaben aber auf die Auswertung von CAN-Bus-Daten beschränken lässt, steht Ihnen jetzt mit PiCAN 3 eine attraktive Messalternative zur Verfügung.
 

Wieso Raspberry Pi?

Wie bei der Arbeit mit I2C, SPI etc. gilt auch im Fall von CAN, dass einem Gutteil der Probleme nicht die mangelhafte Qualität der Signale bzw. der physikalischen Datenübertragung zugrunde liegt, sondern dass es an den übertragenen Daten selbst liegt. Sendet man falsch geformte Pakete oder nutzt z.B. die falsche Endianness, so muss man sich nicht wundern, wenn das Motor- oder sonstige Steuergerät verschnupft reagiert.
Tools wie PiCAN 3 erlauben im Zusammenspiel mit einem portablen Raspberry Pi mobiles Messen. Im Idealfall reicht ein Raspberry Pi 4 mit einem kleinen Mobil-Bildschirm. Integriert man die Entwicklungsumgebung des CAN-Systems in die ARMbian-Distribution des Systems, steht produktiven Experimenten nichts mehr im Wege.

 

Hardware-Aufbau

Die Umgebungen in Autos sind für digitale Elektronik durchaus schwierig. Der Hersteller SK Pang trägt dieser Situation insofern Rechnung, als er seine PiCAN-3-Platine huckepack mit einem Schaltnetzteil (Bild 1) bestückt, das über einen fünfpoligen Header Kontakt mit dem Board bekommt. Das Board soll angeblich auch ohne das Schaltnetzteil zu haben sein – praktisch erhältlich ist derzeit aber nur die Version mit.

Bild 1. Fünf Pins im RM 1/10“ sorgen für die Verbindung von Netzteil und Board.

Das hier vorliegende CAN-Shield hört auf den langen Namen „PiCAN 3 – CAN-Bus Board for Raspberry Pi 4 with 3 A SMPS & RTC” und unterscheidet sich von den Vorgängern insofern, als das inkludierte Schaltnetzteil immerhin 3 A liefert und so auch für die Versorgung des energiehungrigen Raspberry Pi 4 ausreichende Reserven mitbringt.

Dank intelligentem Schaltungs-Design kann das Shield auch vom Raspberry Pi versorgt werden, wenn dieser über seinen USBC-Port gespeist wird.

Die unter [1] abrufbare Schaltung des Boards ist nicht nur theoretisch interessant: SK Pang nutzt für die Realisierung des Interfaces eine Kombination absoluter Klassiker, die Microchip seit vielen Jahren fast unverändert verkauft, und die sich auch in einem eigenen Design ohne große Probleme einpassen lassen.

Für die Bereitstellung der CAN-Signalformen setzt SK Pang auf das IC MCP2515, das mit dem Raspberry Pi per SPI und über einen GPIO-Interrupt-Pin Kontakt aufnimmt. Die von ihm ausgegebenen Signal-Wellenformen wandern dann zum IC MCP2562 - eine Ein-Chip-Realisierung eines recht kompletten CAN-PHYs. Interessant ist außerdem, dass die von manchen Bauteilen benötigte 3,3-V-Spannungsversorgung aus dem Raspberry Pi entnommen wird, was den sonst nötigen Linearregler einspart.

Die nächste interessante Frage betrifft die Art des Verbindungsaufbaus zwischen Board und CAN-Bus. Hierzu dienen einerseits ein bei RS232 üblicher D-Sub-DE9-Stecker und andererseits eine vierpolige Schraubklemme (Bild 2).

Bild 2. PiCAN 3 bietet zwei Anschlussmöglichkeiten an den CAN-Bus.

 

Sinn des DE9-Steckers ist, dass vergleichsweise preiswert erhältliche ODB-II-Kabel direkt mit dem Board verbunden werden können. Leider gibt es keinen wirklichen Standard für die Zuordnung zwischen Pins und CAN-Signalen. Aus diesem Grund existieren auf dem Board einige Löt-Pads (Bild 3), über die man mit Hilfe eines Belegungsplans (Bild 4) die korrekte Zuordnung realisieren kann.

Bild 3. Dank großzügiger Dimensionierung lassen sich diese Pins auch ohne viel Können mit einem normalen Lötkolben überbrücken.

 

Bild 4. Diese Schaltung mit Tabelle informiert über die Belegung der Löt-Pads.

 

Aber Achtung! Die Löt-Pads sind im Auslieferungszustand komplett offen. Ohne vorheriges Löten werden am DE9-Stecker keine CAN-Signale anliegen.

Automotive-Applikationen benötigen häufig genaue Zeitangaben. Die Echtzeituhr vom Typ PCF8523 des PiCAN 3 ist via I2C mit dem Raspberry Pi verbunden. Für die Stromversorgung der Echtzeituhr ist noch eine Knopfbatterie vom Typ CR1220 erforderlich, die in den dafür vorgesehenen Batteriehalter platziert wird.

 

CAN-Ökosystem

Wer ein komplettes System aus Decoder und mehr anbieten kann, hat einen Wert geschaffen. TeleDyne hat in der Vergangenheit einige Unternehmen mit solchen Produkten aufgekauft. Da Linux im Automotive-Bereich eine gewisse Relevanz aufweist, gibt es in der Linux-Welt ein ganzes Support-Ökosystem für den CAN-Bus. Die Bandbreite reicht dabei vom Kernel-Treiber bis hin zu Kommandozeilen-Utilities und anderen Helferlein.

Für die Kommunikation mit dem PiCAN 3 sind in einem frischen Raspbian-System einige Anpassungen der Datei /boot/config.txt erforderlich. Der SPI-Bus muss durch folgenden Block freigegeben werden (man beachte den zusätzlichen Overlay-Aufruf):

 

dtparam=spi=on

dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25

dtoverlay=spi-bcm2835-overlay

 

Für die Echtzeituhr braucht es noch folgende Statements:

 

dtparam=i2c_arm=on

dtoverlay=i2c-rtc,pcf8523

 

Im nächsten Schritt ist das Herunterladen von Kernelmodulen und sonstigen Utilities fällig. Erfreulicherweise steht hierfür ein fertiges Paket in den Repositories bereit:

 

sudo apt-get install can-utils

 

Nach dem Deployment der CAN-Utilities muss das Interface beim Betriebssystem angemeldet werden. Hierzu reicht es aus, nach folgendem Schema ein neues Interface zu generieren. Der hier übergebene Wert von 500.000 steht für die maximale Bandbreite bzw. Geschwindigkeit, die von der Hardware unterstützt wird:
 

sudo /sbin/ip link set can0 up type can bitrate 500000

 

Ist das Interface bereit, können Sie es analog zu Produkten teurerer Hersteller verwenden. Ein klassischer Einsatzzweck wäre die Nutzung von candump, Dieses Tool lässt sich in der Kommandozeile durch Eingabe des folgenden Befehls aktivieren:

 

candump

 

Nach der Aktivierung zeigt es automatisch und permanent alle für das Shield sichtbaren CAN-Messages an. Dies ist insbesondere für das Reverse Engineering unbekannter Motorsteuerungen hilfreich.

Weiter gibt es noch ein Python-API, das sich nach folgendem Schema bereitstellen lässt:

 

git clone https://github.com/hardbyte/python-can

cd python-can

sudo python3 setup.py install

 

Echtzeituhr-Erweiterung

Linux unterstützt Echtzeit-Uhren von Laptops und PCs schon ewig. Systeme, die (aus Kostengründen) ohne Echtzeituhr auskommen müssen, sind ein vergleichsweise neuer Trend, dem durch das Emulator-Modul fake-hwclock begegnet wird - so auch beim Raspberry Pi.

Um die Echtzeituhr auf dem CAN-Board nutzen zu können, muss man im ersten Schritt für die Deaktivierung des Emulator-Moduls sorgen:

 

sudo apt-get -y remove fake-hwclock

sudo update-rc.d -f fake-hwclock remove

sudo systemctl disable fake-hwclock

 

Im nächsten Schritt wird die Datei /lib/udev/hwclock-set geöffnet. Hierzu sind normalerweise Superuser-Rechte erforderlich. Im nächsten Schritt werden die folgenden beiden Blöcke auskommentiert:

 

#if [ -e /run/systemd/system ] ; then

# exit 0

#fi

 

#/sbin/hwclock --rtc=$dev --systz --badyear

#/sbin/hwclock --rtc=$dev --systz

 

Für die Kommunikation mit der Echtzeituhr kommt dann das Tool hwclock zum Einsatz. Es verhält sich analog zu einem PC und weist die Möglichkeiten von Bild 5 auf.

Bild 5. Wer mehr über eine Kommandozeilen-Bedienung wissen möchte, wird mit einer durch man <kommando> aktivierbaren Manpage informiert. Hier geht es um hwclock, womit sich die Echtzeituhr auf dem CAN-Board steuern lässt.

 

Fazit

Mit PiCAN 3 bietet SK Pang eine preiswerte und kompakte CAN-Lösung an, die durch die Kombination mit einem Raspberry Pi 4 einfach und mobil einsetzbar ist. Wenn Sie schon immer einmal mit dem CAN-Bus experimentieren wollten, finden Sie hier eine nicht nur preiswerte sondern auch sehr leistungsfähige Experimentierplattform. Dank der Open-Source-Hardware lässt sich das System auch in eigene Designs einbinden, wenn die nötige Evaluation abgeschlossen ist.


Weblinks


[1] Schaltung des PiCAN-3-Boards: https://cdn.shopify.com/s/files/1/0563/2029/5107/files/pican3_rev_C.pdf?v=1619981690

 

Sie haben Fragen oder Kommentare?

Haben Sie technische Fragen oder Anmerkungen zu diesem Artikel? Schicken Sie eine E-Mail an den Autor tamhan@tamoggemon.com oder kontaktieren Sie Elektor unter editor@elektor.com.

Ein Beitrag von

Text und Fotos: Tam Hanna
Redaktion: Dr. Thomas Scherer
Layout: Giel Dols