class Pin – Steuerung von I/O-Pins

Ein Pin-Objekt repräsentiert einen einzelnen GPIO auf dem STM32. Es stellt Methoden bereit, um den Modus des Pins (Eingang, Ausgang, alternative Funktion, analog) und die Pull-Widerstände zu konfigurieren sowie seinen digitalen Pegel zu lesen oder zu treiben. Für die analoge Abtastung siehe pyb.ADC; für die Aufzählung der alternativen Funktionen siehe PinAF.

Alle Header-Pins sind als pyb.Pin.board.<name> vordefiniert. Die meisten STM32 OpenMV Cams stellen die I/O-Header-Pins P0P9 bereit; die OpenMV Cam N6 stellt zusätzliche Pins bis zu P18 bereit:

p0 = pyb.Pin.board.P0
g = pyb.Pin(pyb.Pin.board.P0, pyb.Pin.IN)

Der zugrunde liegende STM32-Port/Pin kann auch direkt über pyb.Pin.cpu.<name> angesprochen werden, benannt als der Port-Buchstabe gefolgt von der Pin-Nummer (zum Beispiel pyb.Pin.cpu.A0). Die Zuordnung jedes OpenMV-Header-Pins zu einem CPU-Pin ist durch das Board festgelegt.

Pins können auch über einen Zeichenkettennamen ausgewählt werden:

g = pyb.Pin("P0", pyb.Pin.OUT_PP)

Benutzerdefinierte Namen können mit Pin.dict() hinzugefügt werden:

MyMapperDict = {"LeftMotorDir": pyb.Pin.cpu.A0}
pyb.Pin.dict(MyMapperDict)
g = pyb.Pin("LeftMotorDir", pyb.Pin.OUT_OD)

und wieder abgefragt werden:

pin = pyb.Pin("LeftMotorDir")

Alternativ kann mit Pin.mapper() eine benutzerdefinierte Zuordnungsfunktion installiert werden:

def MyMapper(pin_name):
    if pin_name == "LeftMotorDir":
        return pyb.Pin.cpu.A0

pyb.Pin.mapper(MyMapper)

sodass ein Aufruf von pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) "LeftMotorDir" direkt an den Mapper übergibt.

Die folgende Reihenfolge bestimmt, wie ein Name einem physischen Pin zugeordnet wird:

  1. Ein Pin-Objekt wird direkt übergeben.

  2. Die vom Benutzer bereitgestellte Mapper-Funktion gibt einen Pin zurück.

  3. Das vom Benutzer bereitgestellte Dictionary enthält einen passenden Schlüssel.

  4. Die Zeichenkette stimmt mit einem Board-Pin-Namen überein (P0, P1, …).

  5. Die Zeichenkette stimmt mit einem CPU-Port/Pin-Namen überein (A0, B7, …).

Rufen Sie pyb.Pin.debug(True) auf, um Diagnoseinformationen darüber auszugeben, wie jedes Objekt einem Pin zugeordnet wird.

Konstruktoren

class pyb.Pin(id: str | Pin, *args, **kwargs)

Erzeugt ein neues Pin-Objekt, das mit der angegebenen id verknüpft ist. Wenn zusätzliche Argumente angegeben werden, werden sie an Pin.init() weitergeleitet, um den Pin zu konfigurieren.

Klassenmethoden

classmethod debug(state: bool | None = None) bool | None

Liest oder setzt den Debugging-Zustand (True oder False für ein oder aus).

classmethod dict(dict: dict | None = None) dict | None

Liest oder setzt das Pin-Mapper-Dictionary.

classmethod mapper(fun: Callable[[str], Pin] | None = None) Callable[[str], Pin] | None

Liest oder setzt die Pin-Mapper-Funktion.

Methoden

init(mode: int, pull: int = Pin.PULL_NONE, *, value: int | None = None, alt: int | str = -1) None

Initialisiert den Pin:

  • mode kann einer der folgenden sein:

    • Pin.IN - konfiguriert den Pin als Eingang;

    • Pin.OUT_PP - konfiguriert den Pin als Ausgang mit Push-Pull-Steuerung;

    • Pin.OUT_OD - konfiguriert den Pin als Ausgang mit Open-Drain-Steuerung;

    • Pin.ALT - konfiguriert den Pin für eine alternative Funktion, Eingang oder Ausgang;

    • Pin.AF_PP - konfiguriert den Pin für eine alternative Funktion, Push-Pull;

    • Pin.AF_OD - konfiguriert den Pin für eine alternative Funktion, Open-Drain;

    • Pin.ANALOG - konfiguriert den Pin als analog.

  • pull kann einer der folgenden sein:

    • Pin.PULL_NONE - keine Pull-up- oder Pull-down-Widerstände;

    • Pin.PULL_UP - aktiviert den Pull-up-Widerstand;

    • Pin.PULL_DOWN - aktiviert den Pull-down-Widerstand.

    Wenn bei einem Pin der Pull-Modus Pin.PULL_UP oder Pin.PULL_DOWN aktiviert ist, wird dieser Pin über einen internen Widerstand auf 3V3 bzw. GND gezogen (typischerweise einige zehn kOhm – siehe die elektrischen Eigenschaften im STM32-Datenblatt der verwendeten OpenMV Cam).

  • value setzt, falls nicht None, den Ausgabewert des Ports, bevor der Pin aktiviert wird.

  • alt kann verwendet werden, wenn der Modus Pin.ALT, Pin.AF_PP oder Pin.AF_OD ist, um den Index oder Namen einer der mit einem Pin verknüpften alternativen Funktionen festzulegen. Dieses Argument hieß früher af, was bei Bedarf weiterhin verwendet werden kann.

value(value: Any | None = None) int | None

Liest oder setzt den digitalen Logikpegel des Pins:

  • Ohne Argument wird 0 oder 1 zurückgegeben, je nach Logikpegel des Pins.

  • Wird value angegeben, so wird der Logikpegel des Pins gesetzt. value kann alles sein, was sich in einen booleschen Wert umwandeln lässt. Wenn es sich in True umwandelt, wird der Pin auf High gesetzt, andernfalls auf Low.

__str__() str

Gibt eine Zeichenkette zurück, die das Pin-Objekt beschreibt.

af() int

Gibt die aktuell konfigurierte alternative Funktion des Pins zurück. Die zurückgegebene Ganzzahl entspricht einer der erlaubten Konstanten für das af-Argument der init-Funktion.

af_list() List[PinAF]

Gibt ein Array der für diesen Pin verfügbaren alternativen Funktionen zurück.

gpio() int

Gibt die Basisadresse des mit diesem Pin verknüpften GPIO-Blocks zurück.

mode() int

Gibt den aktuell konfigurierten Modus des Pins zurück. Die zurückgegebene Ganzzahl entspricht einer der erlaubten Konstanten für das mode-Argument der init-Funktion.

name() str

Liest den Pin-Namen.

names() List[str]

Gibt die CPU- und Board-Namen für diesen Pin zurück.

pin() int

Liest die Pin-Nummer.

port() int

Liest den Pin-Port.

pull() int

Gibt die aktuell konfigurierte Pull-Einstellung des Pins zurück. Die zurückgegebene Ganzzahl entspricht einer der erlaubten Konstanten für das pull-Argument der init-Funktion.

Konstanten

IN: int

Konfiguriert den Pin als digitalen Eingang (hochohmig).

OUT_PP: int

Konfiguriert den Pin als digitalen Ausgang mit einem Push-Pull-Treiber.

OUT_OD: int

Konfiguriert den Pin als digitalen Ausgang mit einem Open-Drain-Treiber.

ANALOG: int

Konfiguriert den Pin als analogen Eingang (z. B. zur Verwendung mit ADC).

ALT: int

Konfiguriert den Pin als alternative Funktion (Eingang oder Ausgang).

AF_PP: int

Konfiguriert den Pin als alternative Funktion mit einem Push-Pull-Treiber.

AF_OD: int

Konfiguriert den Pin als alternative Funktion mit einem Open-Drain-Treiber.

PULL_NONE: int

Deaktiviert sowohl Pull-up- als auch Pull-down-Widerstände am Pin.

PULL_UP: int

Aktiviert den internen Pull-up-Widerstand am Pin.

PULL_DOWN: int

Aktiviert den internen Pull-down-Widerstand am Pin.