class Pin – styra I/O-stift

Ett Pin-objekt representerar en enskild GPIO på STM32. Det tillhandahåller metoder för att konfigurera stiftets läge (ingång, utgång, alternativ funktion, analog) och pull-resistorer, samt för att läsa eller driva dess digitala nivå. För analog sampling se pyb.ADC; för uppräkning av alternativa funktioner se PinAF.

Alla header-stift är fördefinierade som pyb.Pin.board.<name>. De flesta STM32 OpenMV Cam exponerar I/O-header-stiften P0P9; OpenMV Cam N6 exponerar ytterligare stift upp till P18

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

Den underliggande STM32-porten/-stiftet kan även adresseras direkt via pyb.Pin.cpu.<name>, namngivet som portbokstaven följd av stiftnumret (till exempel pyb.Pin.cpu.A0). Mappningen av varje OpenMV-header-stift till ett CPU-stift är fast bestämd av kortet.

Stift kan också väljas med strängnamn:

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

Användardefinierade namn kan läggas till med Pin.dict()

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

och frågas tillbaka:

pin = pyb.Pin("LeftMotorDir")

Alternativt kan en anpassad mappningsfunktion installeras med Pin.mapper()

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

pyb.Pin.mapper(MyMapper)

så att ett anrop till pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) skickar "LeftMotorDir" direkt till mapparen.

Följande ordning avgör hur ett namn mappas till ett fysiskt stift:

  1. Ett Pin-objekt skickas direkt.

  2. Den användarangivna mappningsfunktionen returnerar ett stift.

  3. Den användarangivna ordlistan innehåller en matchande nyckel.

  4. Strängen matchar ett kortstiftnamn (P0, P1, …).

  5. Strängen matchar ett CPU-port/-stiftnamn (A0, B7, …).

Anropa pyb.Pin.debug(True) för att skriva ut diagnostisk information om hur varje objekt mappas till ett stift.

Konstruktorer

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

Skapa ett nytt Pin-objekt kopplat till det angivna id. Om ytterligare argument anges vidarebefordras de till Pin.init() för att konfigurera stiftet.

Klassmetoder

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

Hämta eller ställ in felsökningstillståndet (True eller False för på eller av).

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

Hämta eller ställ in stiftmapparens ordlista.

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

Hämta eller ställ in stiftmapparens funktion.

Metoder

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

Initiera stiftet:

  • mode kan vara något av:

    • Pin.IN - konfigurera stiftet för ingång;

    • Pin.OUT_PP - konfigurera stiftet för utgång, med push-pull-styrning;

    • Pin.OUT_OD - konfigurera stiftet för utgång, med open-drain-styrning;

    • Pin.ALT - konfigurera stiftet för alternativ funktion, ingång eller utgång;

    • Pin.AF_PP - konfigurera stiftet för alternativ funktion, push-pull;

    • Pin.AF_OD - konfigurera stiftet för alternativ funktion, open-drain;

    • Pin.ANALOG - konfigurera stiftet för analog.

  • pull kan vara något av:

    • Pin.PULL_NONE - inga pull-up- eller pull-down-resistorer;

    • Pin.PULL_UP - aktivera pull-up-resistorn;

    • Pin.PULL_DOWN - aktivera pull-down-resistorn.

    När ett stift har pull-läget Pin.PULL_UP eller Pin.PULL_DOWN aktiverat, dras det stiftet till 3V3 respektive GND genom en intern resistor (vanligtvis tiotals kOhm – se de elektriska egenskaperna i STM32-databladet för den OpenMV Cam som används).

  • value kommer, om den inte är None, att ställa in portens utvärde innan stiftet aktiveras.

  • alt kan användas när läget är Pin.ALT, Pin.AF_PP eller Pin.AF_OD för att ange index eller namn på en av de alternativa funktioner som är kopplade till ett stift. Detta argument hette tidigare af vilket fortfarande kan användas vid behov.

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

Hämta eller ställ in stiftets digitala logiknivå:

  • Utan argument returneras 0 eller 1 beroende på stiftets logiknivå.

  • Om value anges ställs stiftets logiknivå in. value kan vara vad som helst som konverteras till ett booleskt värde. Om det konverteras till True sätts stiftet högt, annars sätts det lågt.

__str__() str

Returnera en sträng som beskriver stiftobjektet.

af() int

Returnerar stiftets för närvarande konfigurerade alternativa funktion. Det returnerade heltalet kommer att matcha en av de tillåtna konstanterna för argumentet af till init-funktionen.

af_list() List[PinAF]

Returnerar en array av alternativa funktioner tillgängliga för detta stift.

gpio() int

Returnerar basadressen för det GPIO-block som är kopplat till detta stift.

mode() int

Returnerar stiftets för närvarande konfigurerade läge. Det returnerade heltalet kommer att matcha en av de tillåtna konstanterna för argumentet mode till init-funktionen.

name() str

Hämta stiftets namn.

names() List[str]

Returnerar cpu- och kortnamnen för detta stift.

pin() int

Hämta stiftnumret.

port() int

Hämta stiftporten.

pull() int

Returnerar stiftets för närvarande konfigurerade pull. Det returnerade heltalet kommer att matcha en av de tillåtna konstanterna för argumentet pull till init-funktionen.

Konstanter

IN: int

Konfigurera stiftet som en digital ingång (högimpedans).

OUT_PP: int

Konfigurera stiftet som en digital utgång med en push-pull-drivare.

OUT_OD: int

Konfigurera stiftet som en digital utgång med en open-drain-drivare.

ANALOG: int

Konfigurera stiftet som en analog ingång (t.ex. för användning med ADC).

ALT: int

Konfigurera stiftet som en alternativ funktion (ingång eller utgång).

AF_PP: int

Konfigurera stiftet som en alternativ funktion med en push-pull-drivare.

AF_OD: int

Konfigurera stiftet som en alternativ funktion med en open-drain-drivare.

PULL_NONE: int

Inaktivera både pull-up- och pull-down-resistorerna på stiftet.

PULL_UP: int

Aktivera den interna pull-up-resistorn på stiftet.

PULL_DOWN: int

Aktivera den interna pull-down-resistorn på stiftet.