Raspberry Pi Verbindung

RPI
Zur Verwendung mit einem Raspberry Pi wird der Adapter geflippt und über die Buchsenleisten W2 und USRL direkt auf die GPIO Stiftleiste des Raspberry Pi gesteckt.

Achtung: Die Buchsen auf dem Adapter sind kürzer als die GPIO Stiftleiste des Raspberry Pi. Es muss darauf geachtet werden, dass die näher an der Bohrung liegende Buchsenleiste des Adapters (links unten im Bild) auf Pin 2 der Raspberry Pi GPIO Leiste gesteckt wird, so dass diese Bohrung genau über der auf dem Raspberry Pi liegt und man einen Abstandshalter dazwischen setzen könnte.

Mit aufgestecktem Adapter (hier in rot zur Verdeutlichung) sieht das so aus:
RPI+Adapter Front

Sofern ein Kühler für die Raspberry Pi CPU eingesetzt wird, muss ein Stacking-Header wie dieser oder dieser dazwischen gesteckt oder ein Dupontkabel verwendet werden.

Bei Raspberry 5 mit älterem Adapter bitte auch den Hinweis unten beachten.

Die Firmware stellt automatisch fest, ob der Adapter auf einen Raspberry Pi aufgesteckt ist.

Die Stromversorgung des Adapters erfolgt direkt über den Raspberry Pi und die Kommunikation geht über die folgenden Pins am Raspberry Pi GPIO:

Diese Pins sind dem physikalischen Device “serial0” zugeordnet. Das physikalische device ist meist dem logischen Device ttyAMA0 zugeordnet, jedoch gibt es abhängig von der Raspberry Pi Version und der Raspbian / Raspberry Pi OS Version immer wieder andere Zuordnungen. Die aktuelle Konfiguration kann so bestimmt werden:

ls -l /dev

ausführen und dann die Zuordnung von serial0 suchen. Dies ist im Normalfall entweder ttyAMA0 oder ttyS0.

Da der UART von ttyS0 Schwierigkeiten mit höheren Baudraten hat, wird dringend geraten, unbedingt ttyAMA0 zu benutzen, welches den UART Typ PL011 verwendet, wo diese Probleme nicht auftreten können.

Sollte serial0 mit ttyS0 verbunden sein, was vor allem beim Raspberry Pi 3 und manchen Raspbian/Raspberry Pi OS Versionen auftritt, dann können ttyS0 und ttyAMA0 durch einen Eintrag in /boot/config.txt:

dtoverlay=pi3-miniuart-bt

mit nachfolgendem Reboot vertauscht werden.

Die ebusd device Konfiguration in /etc/default/ebusd lautet daher:

-d ens:/dev/ttyAMA0 --latency=50

Die Angabe von “–latency=50” hilft, um bei den oft ungünstig implementierten UART Treibern im Raspberry Pi OS nicht in einen Timeout zu laufen.

Konfiguration mit Raspberry Pi OS

Standardmäßig werden die für den eBUS Adapter benötigten Pins vom Raspberry Pi OS für eine serielle Login Shell verwendet. Um nun stattdessen den eBUS Adapter über diese Schnittstelle laufen lassen zu können, muss diese Shell stillgelegt werden.

Achtung! Wenn diese Shell nicht komplett stillgelegt wird, dann sendet sie unkontrollierte Daten auf den eBUS was zu einer Störung des gesamten Bus Systems führen kann.

Zur Stilllegung müssen folgende Schritte durchgeführt werden (sinngemäß, die Texte können je nach Raspberry Pi OS leicht variieren):

Spezielle UART Einstellungen

In manchen Raspberry Pi Versionen und/oder Raspbian/Raspberry Pi OS Versionen ist kein UART per default aktiv. Deshalb sollte kontrolliert werden, ob in /boot/config.txt der Eintrag

enable_uart=1

enthalten ist. Gegebenenfalls nachtragen und dann neu booten.

Achtung! Sollte der ttyebus Treiber vorhanden sein, so ist er komplett zu deinstallieren (https://github.com/eBUS/ttyebus). Dieser Treiber ist für den enhanced protocol nicht geeignet.

Um zu verifizieren, dass die Einstellungen richtig sind, kann man dmesg|grep ttyAMA0 ausführen. Dies sollte eine Zeile wie folgt ausgeben, die auch den UART PL011 enthält:

[    1.166081] fe201000.serial: ttyAMA0 at MMIO 0xfe201000 (irq = 29, base_baud = 0) is a PL011 rev2

Raspberry Pi 5

Aufgrund von unterschiedlichem Startverhalten der GPIO Pins beim Raspberry Pi 5 im Vergleich zu früheren Versionen muss die Verbindung von GPIO 27 am Raspi zu IO9 des Adapters unterbrochen sein, um diese Kombination zu verwenden.

Neuere Versionen des Adapters haben eine kürzere USRL-Buchsenleiste (6 Pins), sodass es bei diesen bereits so klappt. Bei Versionen mit einer längeren Buchsenleiste (8 Pins) muss die Verbindung jedoch physisch unterbrochen werden.

Dies geht entweder