class Pin – I/O-pinnen besturen

Een Pin-object vertegenwoordigt een enkele GPIO op de STM32. Het biedt methoden om de modus van de pin (input, output, alternatieve functie, analoog) en de pull-weerstanden te configureren, en om het digitale niveau ervan te lezen of aan te sturen. Voor analoge bemonstering zie pyb.ADC; voor het opsommen van alternatieve functies zie PinAF.

Alle headerpinnen zijn vooraf gedefinieerd als pyb.Pin.board.<name>. De meeste STM32 OpenMV Cams stellen de I/O-headerpinnen P0P9 beschikbaar; de OpenMV Cam N6 stelt extra pinnen tot P18 beschikbaar:

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

De onderliggende STM32-poort/pin kan ook rechtstreeks worden aangesproken via pyb.Pin.cpu.<name>, benoemd als de poortletter gevolgd door het pinnummer (bijvoorbeeld pyb.Pin.cpu.A0). De toewijzing van elke OpenMV-headerpin aan een CPU-pin ligt vast door het board.

Pinnen kunnen ook worden geselecteerd op stringnaam:

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

Door de gebruiker gedefinieerde namen kunnen worden toegevoegd met Pin.dict()

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

en weer worden opgevraagd:

pin = pyb.Pin("LeftMotorDir")

Als alternatief kan een aangepaste toewijzingsfunctie worden geïnstalleerd met Pin.mapper()

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

pyb.Pin.mapper(MyMapper)

zodat een aanroep van pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) "LeftMotorDir" rechtstreeks doorgeeft aan de mapper.

De volgende volgorde bepaalt hoe een naam wordt toegewezen aan een fysieke pin:

  1. Een Pin-object wordt rechtstreeks doorgegeven.

  2. De door de gebruiker opgegeven mapperfunctie retourneert een pin.

  3. De door de gebruiker opgegeven dictionary bevat een overeenkomende sleutel.

  4. De string komt overeen met een boardpinnaam (P0, P1, …).

  5. De string komt overeen met een CPU-poort/pinnaam (A0, B7, …).

Roep pyb.Pin.debug(True) aan om diagnostische informatie af te drukken over hoe elk object aan een pin wordt toegewezen.

Constructors

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

Maak een nieuw Pin-object dat is gekoppeld aan de opgegeven id. Als er aanvullende argumenten worden opgegeven, worden deze doorgestuurd naar Pin.init() om de pin te configureren.

Klassemethoden

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

Verkrijg of stel de debugtoestand in (True of False voor aan of uit).

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

Verkrijg of stel de pinmapper-dictionary in.

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

Verkrijg of stel de pinmapper-functie in.

Methoden

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

Initialiseer de pin:

  • mode kan een van de volgende zijn:

    • Pin.IN - configureer de pin voor input;

    • Pin.OUT_PP - configureer de pin voor output, met push-pull-besturing;

    • Pin.OUT_OD - configureer de pin voor output, met open-drain-besturing;

    • Pin.ALT - configureer de pin voor alternatieve functie, input of output;

    • Pin.AF_PP - configureer de pin voor alternatieve functie, push-pull;

    • Pin.AF_OD - configureer de pin voor alternatieve functie, open-drain;

    • Pin.ANALOG - configureer de pin voor analoog.

  • pull kan een van de volgende zijn:

    • Pin.PULL_NONE - geen pull-up- of pull-down-weerstanden;

    • Pin.PULL_UP - schakel de pull-up-weerstand in;

    • Pin.PULL_DOWN - schakel de pull-down-weerstand in.

    Wanneer een pin de pull-modus Pin.PULL_UP of Pin.PULL_DOWN ingeschakeld heeft, wordt die pin via een interne weerstand naar respectievelijk 3V3 of GND getrokken (doorgaans enkele tientallen kOhm – zie de elektrische specificaties in het STM32-datasheet voor de gebruikte OpenMV Cam).

  • value zal, indien niet None, de uitgangswaarde van de poort instellen voordat de pin wordt ingeschakeld.

  • alt kan worden gebruikt wanneer de modus Pin.ALT, Pin.AF_PP of Pin.AF_OD is om de index of naam in te stellen van een van de alternatieve functies die aan een pin zijn gekoppeld. Dit argument heette voorheen af en kan zo nodig nog steeds worden gebruikt.

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

Verkrijg of stel het digitale logische niveau van de pin in:

  • Zonder argument wordt 0 of 1 geretourneerd, afhankelijk van het logische niveau van de pin.

  • Met value opgegeven, wordt het logische niveau van de pin ingesteld. value kan alles zijn wat naar een boolean converteert. Als het naar True converteert, wordt de pin hoog gezet, anders wordt deze laag gezet.

__str__() str

Retourneer een string die het pin-object beschrijft.

af() int

Retourneert de momenteel geconfigureerde alternatieve functie van de pin. Het geretourneerde getal komt overeen met een van de toegestane constanten voor het af-argument van de init-functie.

af_list() List[PinAF]

Retourneert een array van alternatieve functies die voor deze pin beschikbaar zijn.

gpio() int

Retourneert het basisadres van het GPIO-blok dat aan deze pin is gekoppeld.

mode() int

Retourneert de momenteel geconfigureerde modus van de pin. Het geretourneerde getal komt overeen met een van de toegestane constanten voor het mode-argument van de init-functie.

name() str

Verkrijg de pinnaam.

names() List[str]

Retourneert de cpu- en boardnamen voor deze pin.

pin() int

Verkrijg het pinnummer.

port() int

Verkrijg de pinpoort.

pull() int

Retourneert de momenteel geconfigureerde pull van de pin. Het geretourneerde getal komt overeen met een van de toegestane constanten voor het pull-argument van de init-functie.

Constanten

IN: int

Configureer de pin als digitale input (hoge impedantie).

OUT_PP: int

Configureer de pin als digitale output met een push-pull-driver.

OUT_OD: int

Configureer de pin als digitale output met een open-drain-driver.

ANALOG: int

Configureer de pin als analoge input (bijv. voor gebruik met ADC).

ALT: int

Configureer de pin als alternatieve functie (input of output).

AF_PP: int

Configureer de pin als alternatieve functie met een push-pull-driver.

AF_OD: int

Configureer de pin als alternatieve functie met een open-drain-driver.

PULL_NONE: int

Schakel zowel de pull-up- als de pull-down-weerstanden op de pin uit.

PULL_UP: int

Schakel de interne pull-up-weerstand op de pin in.

PULL_DOWN: int

Schakel de interne pull-down-weerstand op de pin in.