class Pin – I/O-nastojen ohjaus

Pin-objekti edustaa yksittäistä GPIO:ta STM32:ssa. Se tarjoaa metodit nastan tilan (tulo, lähtö, vaihtoehtoinen toiminto, analoginen) ja vetovastusten määrittämiseen sekä sen digitaalisen tason lukemiseen tai ohjaamiseen. Analogista näytteenottoa varten katso pyb.ADC; vaihtoehtoisten toimintojen luettelointia varten katso PinAF.

Kaikki liitinnastat on määritelty valmiiksi muodossa pyb.Pin.board.<name>. Useimmat STM32-pohjaiset OpenMV Cam -kamerat tarjoavat I/O-liittimen nastat P0P9; OpenMV Cam N6 tarjoaa lisänastoja aina P18 asti:

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

Taustalla olevaan STM32-porttiin/-nastaan voi viitata myös suoraan muodossa pyb.Pin.cpu.<name>, joka nimetään porttikirjaimella ja sen perään tulevalla nastan numerolla (esimerkiksi pyb.Pin.cpu.A0). Kunkin OpenMV-liitinnastan vastaavuus CPU-nastaan on kortin kiinteästi määrittämä.

Nastoja voidaan valita myös merkkijononimellä:

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

Käyttäjän määrittämiä nimiä voidaan lisätä metodilla Pin.dict()

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

ja kysellä takaisin:

pin = pyb.Pin("LeftMotorDir")

Vaihtoehtoisesti mukautettu vastaavuusfunktio voidaan asentaa metodilla Pin.mapper()

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

pyb.Pin.mapper(MyMapper)

joten kutsu pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) välittää "LeftMotorDir" suoraan vastaavuusfunktiolle.

Seuraava järjestys määrää, miten nimi yhdistetään fyysiseen nastaan:

  1. Pin-objekti välitetään suoraan.

  2. Käyttäjän toimittama vastaavuusfunktio palauttaa nastan.

  3. Käyttäjän toimittama sanakirja sisältää vastaavan avaimen.

  4. Merkkijono vastaa kortin nastan nimeä (P0, P1, …).

  5. Merkkijono vastaa CPU:n portin/nastan nimeä (A0, B7, …).

Kutsu pyb.Pin.debug(True) tulostaaksesi diagnostiikkatietoja siitä, miten kukin objekti yhdistetään nastaan.

Konstruktorit

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

Luo uusi Pin-objekti, joka liittyy annettuun id-tunnukseen. Jos lisäargumentteja annetaan, ne välitetään metodille Pin.init() nastan määrittämiseksi.

Luokkametodit

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

Hae tai aseta vianjäljitystila (True tai False päälle tai pois).

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

Hae tai aseta nastan vastaavuussanakirja.

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

Hae tai aseta nastan vastaavuusfunktio.

Metodit

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

Alusta nasta:

  • mode voi olla yksi seuraavista:

    • Pin.IN - määritä nasta tuloksi;

    • Pin.OUT_PP - määritä nasta lähdöksi push-pull-ohjauksella;

    • Pin.OUT_OD - määritä nasta lähdöksi avokollektoriohjauksella;

    • Pin.ALT - määritä nasta vaihtoehtoiselle toiminnolle, tuloksi tai lähdöksi;

    • Pin.AF_PP - määritä nasta vaihtoehtoiselle toiminnolle, push-pull;

    • Pin.AF_OD - määritä nasta vaihtoehtoiselle toiminnolle, avokollektori;

    • Pin.ANALOG - määritä nasta analogiseksi.

  • pull voi olla yksi seuraavista:

    • Pin.PULL_NONE - ei ylös- tai alasvetovastuksia;

    • Pin.PULL_UP - ota ylösvetovastus käyttöön;

    • Pin.PULL_DOWN - ota alasvetovastus käyttöön.

    Kun nastalla on käytössä ylösvetotila Pin.PULL_UP tai alasvetotila Pin.PULL_DOWN, kyseinen nasta vedetään sisäisen vastuksen kautta vastaavasti 3V3:een tai GND:hen (tyypillisesti kymmeniä kilo-ohmeja – katso käytössä olevan OpenMV Camin sähköiset ominaisuudet STM32:n datalehdestä).

  • value asettaa portin lähtöarvon ennen nastan käyttöönottoa, ellei se ole None.

  • alt-argumenttia voidaan käyttää, kun tilana on Pin.ALT, Pin.AF_PP tai Pin.AF_OD, asettamaan nastaan liittyvän vaihtoehtoisen toiminnon indeksi tai nimi. Tätä argumenttia kutsuttiin aiemmin nimellä af, jota voidaan edelleen tarvittaessa käyttää.

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

Hae tai aseta nastan digitaalinen looginen taso:

  • Ilman argumenttia palauttaa 0 tai 1 nastan loogisen tason mukaan.

  • Kun value annetaan, asettaa nastan loogisen tason. value voi olla mitä tahansa, mikä muuntuu totuusarvoksi. Jos se muuntuu arvoksi True, nasta asetetaan ylätasolle, muutoin alatasolle.

__str__() str

Palauta nasta-objektia kuvaava merkkijono.

af() int

Palauttaa nastan tällä hetkellä määritetyn vaihtoehtoisen toiminnon. Palautettu kokonaisluku vastaa yhtä init-funktion af-argumentin sallituista vakioista.

af_list() List[PinAF]

Palauttaa taulukon tälle nastalle saatavilla olevista vaihtoehtoisista toiminnoista.

gpio() int

Palauttaa tähän nastaan liittyvän GPIO-lohkon perusosoitteen.

mode() int

Palauttaa nastan tällä hetkellä määritetyn tilan. Palautettu kokonaisluku vastaa yhtä init-funktion mode-argumentin sallituista vakioista.

name() str

Hae nastan nimi.

names() List[str]

Palauttaa tämän nastan cpu- ja board-nimet.

pin() int

Hae nastan numero.

port() int

Hae nastan portti.

pull() int

Palauttaa nastan tällä hetkellä määritetyn vetotilan. Palautettu kokonaisluku vastaa yhtä init-funktion pull-argumentin sallituista vakioista.

Vakiot

IN: int

Määritä nasta digitaaliseksi tuloksi (suuri impedanssi).

OUT_PP: int

Määritä nasta digitaaliseksi lähdöksi push-pull-ohjaimella.

OUT_OD: int

Määritä nasta digitaaliseksi lähdöksi avokollektoriohjaimella.

ANALOG: int

Määritä nasta analogiseksi tuloksi (esim. käytettäväksi ADC:n kanssa).

ALT: int

Määritä nasta vaihtoehtoiselle toiminnolle (tulo tai lähtö).

AF_PP: int

Määritä nasta vaihtoehtoiselle toiminnolle push-pull-ohjaimella.

AF_OD: int

Määritä nasta vaihtoehtoiselle toiminnolle avokollektoriohjaimella.

PULL_NONE: int

Poista käytöstä sekä ylös- että alasvetovastukset nastalta.

PULL_UP: int

Ota käyttöön nastan sisäinen ylösvetovastus.

PULL_DOWN: int

Ota käyttöön nastan sisäinen alasvetovastus.