Cubieboard GPIO

Aus Wiki
Version vom 2. April 2014, 20:20 Uhr von Erich (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Allgemein

Der Zugriff auf die Aus- und Eingänge unter Linux allgemein erfolgt via GPIO Filesystem unter /sys/class/gpio/. Dies gilt für sämtliche Plattformen, für die Linux einen entsprechenden GPIO Kernel Treiber bereitstellt. Dies ist nicht nur der Klassiker in diesem Bereich, der RaspberryPi, sondern auch die Cubieboard-Serie und viele weitere.


Pin Nummerierung

Gpio defination large.jpg


Export eines Pins

Damit ein Pin via GPIO Filesystem ansprechbar ist, muss dieser erst exportiert werden. Z.B. Pin 61 beim Cubieboard2 (unter Cubian):

echo "61" > /sys/class/gpio/export

Dadurch wird ein Directory mit Namen sys/class/gpio/gpio61_pi13 angelegt (Symlink), das folgende Dateien und Links aufweist:

active_low  device  direction  edge  power  subsystem  uevent  value

Die Bezeichnung des Sysmlinks gpio61_pi13 bedeutet, dass Pin 61 am Port I freigegeben wurde und dort dem Portpin I13 entspricht.Unter anderen Linux-Versionen bzw. Boards kann auch eine Notation verwendet werden, bei dem der Port nicht mit aufgeführt ist: sys/class/gpio/gpio61. Dies ist z.B. bei älteren Cubian Versionen und beim RaspberryPi der Fall.


Pin als Ausgang

Über das File "direction" wird festgelegt, ob der jeweilige Pin als Ausgang oder Eingang verwendet werden soll. Als Ausgang wird er folgendermaßen definiert:

echo "out" > /sys/class/gpio/gpio61_pi13/direction

Setzen des Zustands des Pins erfolgt via "value" file:

echo "1" > /sys/class/gpio/gpio61_pi13/value
echo "0" > /sys/class/gpio/gpio61_pi13/value

um den Pin entweder auf HIGH bzw. LOW zu setzen


Pin als Eingang

echo "in" > /sys/class/gpio/gpio61_pi13/direction

Der Zustand des Pins kann mittels "value" File abgefragt werden:

cat /sys/class/gpio/gpio61_pi13/value


Unexport

Wenn der Zugriff auf einen Pin nicht mehr erforderlich ist, kann ein Pin wieder deaktiviert werden:

echo "61" > /sys/class/gpio/unexport