CAN-Shield für Raspberry Pi und Arduino

Das CAN-Shield ist eine von mir selbst entwickelte kleine Platine, über die sehr einfach eine CAN-Bus Anbindung an einen Raspberry Pi, Arduino oder andere Hardware erfolgen kann.

Der Hardwareseitige Anschluss des CAN-Bus erfolgt per RJ45 Stecker oder über Jumper-Kabel.

Auf einen Raspberry Pi kann das CAN-Shield ganz einfach aufgesteckt werden. Für den Anschluss an einen Arduino oder andere Hardware können die herausführten Stiftleisten verwendet werden.

Hardware

Als Herzstück der Platine kommt ein MCP2515 CAN-Controller zum Einsatz. Dieser Controller ist sehr weit verbreitet und bietet eine gute Unterstützung für den Raspberry Pi, Arduino und andere Platformen.

Die Hardwareseitige Anbindung an den Bus erfolgt über einen MCP2562 CAN-Transceiver.

Für den korrekten Takt des CAN-Controllers sorgt ein 16 MHz Quarz.

Die Versorgungsspannung für den MCP2515 CAN-Controller kann per Jumper (JP2) zwischen +3,3 V (Raspberry Pi) und +5 V (Arduino) gewählt werden.

Über einen Jumper (JP1) kann der auf der Platine vorhandene Abschlusswiderstand für den Bus aktiviert werden. Dieser Abschlusswiderstand muss an beiden Enden des CAN-Bus vorhanden (aktiv) sein. Bei allen Busteilnehmern dazwischen darf der Widerstand nicht aktiv sein!

Achtung

Die Belegung von der RJ45 Buchse ist auf mein Bus-System ausgelegt.
Eine vorgegebene Belegung gibt es meines Wissens nach nicht.

Die Platine habe ich bei ALLPCB fertigen lassen und anschließend selbst mit Bauteilen bestückt.

Eagle-Dateien

Anschluss an einen Raspberry Pi

Auf einen Raspberry Pi kann das CAN-Shield einfach direkt aufgesteckt werden. Alle nötigen Verbindungen zwischen der Platine und dem Raspberry Pi erfolgen dabei über den 40-poligen Verbinder.

Als Datenleitungen werden für die SPI-Schnittstelle MISO, MOSI, SCLK und CE0 verwendet.

Der Interrupt erfolgt über GPIO 6 (BCM).

Achtung

Der Jumper JP2 muss auf +3,3 V gesteckt werden.
Damit wird der MCP2515 mit den 3,3 V des Raspberry Pi betrieben und verwendet somit die gleichen Signalpegel, wie der Raspi selbst. Bei +5 V würde der Raspberry Pi beschädigt werden!

Die Software zur Einbindung habe ich im Beitrag CAN-Bus am Raspberry Pi beschrieben.

Anschluss an einen Arduino

Für den Anschluss an einen Arduino ist die Stiftleiste X2 vorgesehen. Hier sind alle nötigen Signale herausgeführt und können beispielsweise per Jumperkabel mit dem Arduino verbunden werden.

Hinweis

Der Jumper JP2 ist in diesem Fall auf +5 V zu stecken.
Damit werden alle Teile des CAN-Shield dann mit den 5 V des Arduino über X2 versorgt.

Gegebenenfalls ist für die Interrupt-Leitung ein externer PullUp-Widerstand von etwa 4,7 kΩ erforderlich.

Für die Software für den Arduino kann beispielsweise die Arduino MCP2515 CAN interface library verwendet werden.

Lizenz

Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)

Copyright (c) 2020-2024 Peter Müller