Die kurze Antwort
Nein, das tust du (fast) nicht. Es ist eigentlich umgekehrt - Sie müssen sie so einrichten, dass sie nicht GPIO sind, sondern ihren speziellen Zweck erfüllen. Die einzige Ausnahme sind UART-Pins. Auch und I²C-Pins irgendwie besonders.
UART-Stifte
UART-Pins werden vom Kernel für die Konsole verwendet. Sie müssen das System so konfigurieren, dass sie nicht verwendet werden, wenn sie für Ihre Verwendung verfügbar sein sollen:
- bearbeiten
/boot/cmdline.txt
und entfernen console=ttyAMA0,115200
und kgdboc=ttyAMA0,115200
Parameter
Bearbeiten /etc/inittab
und kommentieren #
Sie die Zeile aus (setzen Sie das Zeichen davor):
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Starten Sie Ihr RaspberryPi neu
Jetzt sollten die Pins nicht mehr vom System verwendet werden und Sie können sie verwenden
I²C-Stifte
Bei I²C-Pins sind integrierte 1,8k-Pull-up-Widerstände installiert. Sie können nicht deaktiviert werden. Dies schränkt die Verwendung dieser Pins in einigen Situationen ein (kann aber in anderen nützlich sein).
Zusätzliche Lösungen
Wenn die GPIO-Pins zur Neige gehen, können Sie die Anzahl manchmal leicht erweitern, indem Sie zusätzliche (aber einfache) Hardware verwenden. Für die Ausgabe können Sie beispielsweise shift registers
oder I²C I/O expanders
(auch als I²C-Bus-Expander bezeichnet) verwenden, die sowohl einfach zu kaufen als auch zu verwenden sind. Ein Beispiel für die Verwendung finden Sie hier .
PFC8574
(oder ähnliches aus dieser Familie) sind so beliebt, dass es ein gebrauchsfertiges Kernelmodul gibt, das die gesamte Kommunikation für Sie übernimmt ( es ist im offiziellen RaspberryPi-Kernel nicht aktiviert, Sie müssen Ihren eigenen Kernel kompilieren, um es zu verwenden ). Das Modul wird aufgerufen gpio_pcf857x
, vorausgesetzt, Sie haben es mit modprobe
(zusammen mit I²C-Treibern) geladen und den Chip an den I²C
Bus angeschlossen. Sie können es folgendermaßen aktivieren:
echo pcf8574 0x27 > /sys/class/i2c-adapter/i2c-0/new_device
Wo pcf8574
ist Ihr tatsächlicher Chipname (dieses Modul kann nur wenige verschiedene Chips wie pca967x
und verarbeiten max732x
) und 0x27
seine Adresse ist eingeschaltet I²C
(Sie können die Adresse des Chips bei der Verkabelung konfigurieren).
Dadurch werden Einträge im /sys/class/gpio/
Verzeichnis erstellt, mit denen Sie sie wie andere GPIO-Ports in RaspberryPi verwenden können, sofern Sie die sys
Schnittstelle verwenden (z. B. wiringPiSetupSys()
in wiringPi). Leider unterstützt das Python- RPi.GPIO
Modul diesen Modus nicht, sodass es diese Pins mit dieser Bibliothek nicht verwenden kann. Die Stifte haben einige hohe Zahlen wie 248-255 oder ähnliches.
Hinweis: PCF8574
ist sinking current
- es kann Laufwerkssenke (im niedrigen Zustand akzeptieren) bis zu 20 mA geben, aber es kann nur 0,1 mA im hohen Zustand liefern. Dies bedeutet, dass Sie es normalerweise in umgekehrter Logik verwenden, d +3.3V -> LED -> RESISTOR -> PCF8574_PIN
. H.