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.