klasa Pin – upravljanje I/O pinovima

Objekt Pin predstavlja jedan GPIO na STM32. Pruža metode za konfiguraciju načina rada pina (ulaz, izlaz, alternativna funkcija, analogni) i pull otpornika te za čitanje ili postavljanje njegove digitalne razine. Za analogno uzorkovanje pogledajte pyb.ADC; za nabrajanje alternativnih funkcija pogledajte PinAF.

Svi pinovi zaglavlja unaprijed su definirani kao pyb.Pin.board.<name>. Većina STM32 OpenMV Cam kamera izlaže I/O pinove zaglavlja P0P9; OpenMV Cam N6 izlaže dodatne pinove sve do P18

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

Pripadajući STM32 port/pin može se također adresirati izravno putem pyb.Pin.cpu.<name>, imenovan slovom porta nakon kojeg slijedi broj pina (na primjer pyb.Pin.cpu.A0). Preslikavanje svakog OpenMV pina zaglavlja na CPU pin fiksirano je pločom.

Pinovi se mogu odabrati i nizom znakova s imenom:

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

Korisnički definirana imena mogu se dodati pomoću Pin.dict()

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

i zatim ponovno ispitati:

pin = pyb.Pin("LeftMotorDir")

Alternativno, prilagođena funkcija preslikavanja može se instalirati pomoću Pin.mapper()

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

pyb.Pin.mapper(MyMapper)

tako da poziv pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) prosljeđuje "LeftMotorDir" izravno funkciji za preslikavanje.

Sljedeći redoslijed određuje kako se ime preslikava na fizički pin:

  1. Objekt Pin prosljeđuje se izravno.

  2. Korisnički definirana funkcija za preslikavanje vraća pin.

  3. Korisnički definirani rječnik sadrži odgovarajući ključ.

  4. Niz znakova odgovara imenu pina ploče (P0, P1, …).

  5. Niz znakova odgovara imenu CPU porta/pina (A0, B7, …).

Pozovite pyb.Pin.debug(True) za ispis dijagnostičkih informacija o tome kako je svaki objekt preslikan na pin.

Konstruktori

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

Stvara novi Pin objekt povezan s danim id. Ako su dodani dodatni argumenti, oni se prosljeđuju metodi Pin.init() radi konfiguracije pina.

Metode klase

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

Dohvaća ili postavlja stanje ispravljanja pogrešaka (True ili False za uključeno ili isključeno).

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

Dohvaća ili postavlja rječnik za preslikavanje pinova.

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

Dohvaća ili postavlja funkciju za preslikavanje pinova.

Metode

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

Inicijalizira pin:

  • mode može biti jedan od:

    • Pin.IN - konfigurira pin za ulaz;

    • Pin.OUT_PP - konfigurira pin za izlaz, s push-pull upravljanjem;

    • Pin.OUT_OD - konfigurira pin za izlaz, s open-drain upravljanjem;

    • Pin.ALT - konfigurira pin za alternativnu funkciju, ulaz ili izlaz;

    • Pin.AF_PP - konfigurira pin za alternativnu funkciju, push-pull;

    • Pin.AF_OD - konfigurira pin za alternativnu funkciju, open-drain;

    • Pin.ANALOG - konfigurira pin za analogni rad.

  • pull može biti jedan od:

    • Pin.PULL_NONE - bez pull-up ili pull-down otpornika;

    • Pin.PULL_UP - omogućuje pull-up otpornik;

    • Pin.PULL_DOWN - omogućuje pull-down otpornik.

    Kada pin ima omogućen pull-način Pin.PULL_UP ili Pin.PULL_DOWN, taj se pin povlači na 3V3 odnosno GND putem internog otpornika (obično desetke kOhm – pogledajte električne karakteristike u STM32 podatkovnom listu za korištenu OpenMV Cam kameru).

  • value ako nije None postavit će izlaznu vrijednost porta prije omogućavanja pina.

  • alt se može koristiti kada je način rada Pin.ALT, Pin.AF_PP ili Pin.AF_OD za postavljanje indeksa ili imena jedne od alternativnih funkcija povezanih s pinom. Ovaj se argument prije zvao af i još uvijek se može koristiti po potrebi.

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

Dohvaća ili postavlja digitalnu logičku razinu pina:

  • Bez argumenta vraća 0 ili 1 ovisno o logičkoj razini pina.

  • Kada je zadan value, postavlja logičku razinu pina. value može biti bilo što što se pretvara u logičku vrijednost. Ako se pretvara u True, pin se postavlja na visoku razinu, inače se postavlja na nisku.

__str__() str

Vraća niz znakova koji opisuje objekt pina.

af() int

Vraća trenutno konfiguriranu alternativnu funkciju pina. Vraćeni cijeli broj odgovarat će jednoj od dopuštenih konstanti za argument af funkcije init.

af_list() List[PinAF]

Vraća polje alternativnih funkcija dostupnih za ovaj pin.

gpio() int

Vraća baznu adresu GPIO bloka povezanog s ovim pinom.

mode() int

Vraća trenutno konfigurirani način rada pina. Vraćeni cijeli broj odgovarat će jednoj od dopuštenih konstanti za argument mode funkcije init.

name() str

Dohvaća ime pina.

names() List[str]

Vraća imena cpu-a i ploče za ovaj pin.

pin() int

Dohvaća broj pina.

port() int

Dohvaća port pina.

pull() int

Vraća trenutno konfiguriranu pull-vrijednost pina. Vraćeni cijeli broj odgovarat će jednoj od dopuštenih konstanti za argument pull funkcije init.

Konstante

IN: int

Konfigurira pin kao digitalni ulaz (visoka impedancija).

OUT_PP: int

Konfigurira pin kao digitalni izlaz s push-pull upravljačem.

OUT_OD: int

Konfigurira pin kao digitalni izlaz s open-drain upravljačem.

ANALOG: int

Konfigurira pin kao analogni ulaz (npr. za korištenje s ADC).

ALT: int

Konfigurira pin kao alternativnu funkciju (ulaz ili izlaz).

AF_PP: int

Konfigurira pin kao alternativnu funkciju s push-pull upravljačem.

AF_OD: int

Konfigurira pin kao alternativnu funkciju s open-drain upravljačem.

PULL_NONE: int

Onemogućuje i pull-up i pull-down otpornike na pinu.

PULL_UP: int

Omogućuje interni pull-up otpornik na pinu.

PULL_DOWN: int

Omogućuje interni pull-down otpornik na pinu.