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.