Nun hat der RPI ja noch 4 weitere volle (PL011) UARTs. Prinzipiell sollte man also das Modul auch auf einer der anderen UARTs betreiben können.
Da die Sonne hier erst am Nachmittag rauskommt, habe ich das heute morgen mal umgesetzt und schreibe hier gerne eine Anleitung, falls noch jemand dieses Problem hat. Das Ganze funktioniert wegen des Pin-Layouts nur mit der HM_MOD_RPI_PCB Platine, also die, mit dem 2x6 Header zum Aufstecken am Ende der PCB Platine.
Mein OS: Raspian (5.10.17-v7l+), sollte aber mit jeder einigermassen modernen Kernel funktionieren.
Das ganze funktioniert ausschliesslich mit eine Pi 4B, da der 3 oder frühere Pis diese zusätzlichen UARTs nicht haben.
Man benötigt ebenso dazu einen Lötkolben und ein kleines Stück Draht, da man zwei der Header-Anschlüsse kurzschliessen muss.
Hardware:
Schaut man sich die Pinleiste des RPI an, z.B. hier: https://www.raspberrypi.org/documentation/usage/gpio/
So sieht das oben, wo man die Leiste normalerweise aufsteckt, folgendermassen aus:
Code: Alles auswählen
3V3 x x 5V
GPIO 2 x x 5V
GPIO 3 x x GND
GPIO 4 x x GPIO 14 (TXD0/1)
GND x x GPIO 15 (RXD0/1)
GPIO 17 x x GPIO 18
Zurück zum RPi, 8 "Zeilen" weiter unten am GPIO Header findet man folgende Konstellation:
Code: Alles auswählen
3V3 x x GPIO 24
GPIO 10 x x GND
GPIO 9 (RXD4) x x GPIO 25
GPIO 11 x x GPIO 8 (TXD4)
GND x x GPIO 7
GPIO 0 x x GPIO 1
Da die anderen Anschlüsse auf der HM....PCB Platine nicht verbunden sind, kann man also eine Brücke auf der Rückseite des 2x6 Headers einlöten, vom 3. Anschluss oben links zum zweituntersten auf der rechten Seite, also so:
Code: Alles auswählen
__________________________________________
|x x|
|x x|
|o x|
|x x|
|x o|
|x x|
__________________________________________
Wenn man die Platine dann an der entsprechenden Stelle weiter unten auf dem Raspberry Pi 4 aufsteckt, gut zählen
Man kann sicherheitshalber mit einem Ohmmeter die beiden 3V3 Anschlüsse ausmessen, die sind kurzgeschlossen, auch im ausgeschalteten Zustand.
Software
Die Kernel-Module "finden" die Hardware mit einem Devicetree-Overlay, und zwar mit pivccu-raspberrypi.dts, welches man sich hier aus dem pivccu repository runterladen kann.
Code: Alles auswählen
wget https://raw.githubusercontent.com/alexreinert/piVCCU/master/dts/pivccu-raspberrypi.dts
- das "target" ist &uart4, nicht &uart0
- der reset pin ist GPIO1, nicht GPIO18 (vgl. die beiden Layouts, oben
- Sicherheitshalber setze ich in einem zusätzlichen Fragment die GPIOs 7 und 25 auf "Input", damit es keinen Kurzschluss gibt und sie einfach dem RXD4 bzw. GND folgen (GPIO 25 könnte man auch als Output auf GND setzen)
Code: Alles auswählen
>diff pivccu-raspberrypi.dts pivccu-raspberrypi-u4.dts
8c8
< target = <&uart0>;
---
> target = <&uart4>;
11c11
< pivccu,reset_pin = <&gpio 18 0>;
---
> pivccu,reset_pin = <&gpio 1 0>;
32a33,45
> };
> };
> };
>
> fragment@2 {
> target = <&gpio>;
> __overlay__ {
> pinctrl_names = "default";
> pinctrl-0 = <&off_pins>;
>
> off_pins: off_pins {
> brcm,pins = <7 25>;
> brcm,function = <0 0>; /* input */
Code: Alles auswählen
dtc -@ -I dts -O dtb -W no-unit_address_vs_reg -o pivccu-raspberrypi-u4.dtbo pivccu-raspberrypi-u4.dts
im /boot/config.txt file benötige ich dann nur zwei Overlays und sonst keine Anpassungen:
Code: Alles auswählen
dtoverlay=uart4
dtoverlay=pivccu-raspberrypi-u4
/boot/cmdline.txt muss ebenfalls nicht angepasst werden.
Neustarten, fertig!
Bei Updates von pivccu-modules-raspberrypi oder pivccu-modules-dkms über apt muss man allerdings ein Auge darauf haben, dass nicht dtoverlay=pivccu-raspberrypi (also ohne 'u4') im /boot/config.txt ergänzt wird. Dies dann einfach wieder rauslöschen.