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.