klasa Pin – sterowanie pinami we/wy#

Obiekt Pin reprezentuje pojedynczy pin GPIO na układzie STM32. Udostępnia metody konfiguracji trybu pinu (wejście, wyjście, funkcja alternatywna, analogowy) oraz rezystorów podciągających, a także odczytu lub ustawiania jego poziomu cyfrowego. Próbkowanie analogowe opisano w pyb.ADC; wyliczanie funkcji alternatywnych opisano w PinAF.

Wszystkie piny złącza są predefiniowane jako pyb.Pin.board.<name>. Większość kamer STM32 OpenMV Cam udostępnia piny we/wy złącza P0P9; OpenMV Cam N6 udostępnia dodatkowe piny aż do P18

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

Bazowy port/pin STM32 można również zaadresować bezpośrednio przez pyb.Pin.cpu.<name>, nazwany literą portu, po której następuje numer pinu (na przykład pyb.Pin.cpu.A0). Mapowanie każdego pinu złącza OpenMV na pin CPU jest ustalone przez płytkę.

Piny można również wybierać po nazwie tekstowej:

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

Nazwy zdefiniowane przez użytkownika można dodać za pomocą Pin.dict()

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

i odpytać zwrotnie:

pin = pyb.Pin("LeftMotorDir")

Alternatywnie można zainstalować niestandardową funkcję mapującą za pomocą Pin.mapper()

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

pyb.Pin.mapper(MyMapper)

tak więc wywołanie pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) przekazuje "LeftMotorDir" bezpośrednio do funkcji mapującej.

Poniższa kolejność określa, w jaki sposób nazwa jest mapowana na fizyczny pin:

  1. Obiekt Pin jest przekazywany bezpośrednio.

  2. Dostarczona przez użytkownika funkcja mapująca zwraca pin.

  3. Dostarczony przez użytkownika słownik zawiera pasujący klucz.

  4. Łańcuch znaków pasuje do nazwy pinu płytki (P0, P1, …).

  5. Łańcuch znaków pasuje do nazwy portu/pinu CPU (A0, B7, …).

Wywołaj pyb.Pin.debug(True), aby wypisać informacje diagnostyczne o tym, jak każdy obiekt jest mapowany na pin.

Konstruktory#

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

Tworzy nowy obiekt Pin powiązany z podanym id. Jeśli podano dodatkowe argumenty, są one przekazywane do Pin.init() w celu skonfigurowania pinu.

Metody klasowe#

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

Pobiera lub ustawia stan debugowania (True lub False dla włączenia lub wyłączenia).

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

Pobiera lub ustawia słownik funkcji mapującej piny.

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

Pobiera lub ustawia funkcję mapującą piny.

Metody#

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

Inicjalizuje pin:

  • mode może być jednym z:

    • Pin.IN - konfiguruje pin jako wejście;

    • Pin.OUT_PP - konfiguruje pin jako wyjście, ze sterowaniem typu push-pull;

    • Pin.OUT_OD - konfiguruje pin jako wyjście, ze sterowaniem typu open-drain;

    • Pin.ALT - konfiguruje pin dla funkcji alternatywnej, wejściowej lub wyjściowej;

    • Pin.AF_PP - konfiguruje pin dla funkcji alternatywnej, push-pull;

    • Pin.AF_OD - konfiguruje pin dla funkcji alternatywnej, open-drain;

    • Pin.ANALOG - konfiguruje pin jako analogowy.

  • pull może być jednym z:

    • Pin.PULL_NONE - brak rezystorów podciągających w górę lub w dół;

    • Pin.PULL_UP - włącza rezystor podciągający w górę;

    • Pin.PULL_DOWN - włącza rezystor podciągający w dół.

    Gdy pin ma włączony tryb podciągania Pin.PULL_UP lub Pin.PULL_DOWN, pin ten jest podciągany odpowiednio do 3V3 lub GND przez wewnętrzny rezystor (zwykle dziesiątki kOhm – patrz charakterystyki elektryczne w karcie katalogowej STM32 dla używanej kamery OpenMV Cam).

  • value jeśli nie jest None, ustawi wartość wyjściową portu przed włączeniem pinu.

  • alt można użyć, gdy tryb to Pin.ALT, Pin.AF_PP lub Pin.AF_OD, aby ustawić indeks lub nazwę jednej z funkcji alternatywnych powiązanych z pinem. Argument ten nazywał się wcześniej af i nadal może być używany w razie potrzeby.

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

Pobiera lub ustawia poziom logiczny cyfrowy pinu:

  • Bez argumentu zwraca 0 lub 1 w zależności od poziomu logicznego pinu.

  • Gdy podano value, ustawia poziom logiczny pinu. value może być czymkolwiek, co konwertuje się na wartość logiczną. Jeśli konwertuje się na True, pin jest ustawiany na stan wysoki, w przeciwnym razie na niski.

__str__() str#

Zwraca łańcuch znaków opisujący obiekt pinu.

af() int#

Zwraca aktualnie skonfigurowaną funkcję alternatywną pinu. Zwrócona liczba całkowita będzie odpowiadać jednej z dozwolonych stałych dla argumentu af funkcji init.

af_list() List[PinAF]#

Zwraca tablicę funkcji alternatywnych dostępnych dla tego pinu.

gpio() int#

Zwraca adres bazowy bloku GPIO powiązanego z tym pinem.

mode() int#

Zwraca aktualnie skonfigurowany tryb pinu. Zwrócona liczba całkowita będzie odpowiadać jednej z dozwolonych stałych dla argumentu mode funkcji init.

name() str#

Pobiera nazwę pinu.

names() List[str]#

Zwraca nazwy cpu i płytki dla tego pinu.

pin() int#

Pobiera numer pinu.

port() int#

Pobiera port pinu.

pull() int#

Zwraca aktualnie skonfigurowane podciąganie pinu. Zwrócona liczba całkowita będzie odpowiadać jednej z dozwolonych stałych dla argumentu pull funkcji init.

Stałe#

IN: int#

Konfiguruje pin jako wejście cyfrowe (o wysokiej impedancji).

OUT_PP: int#

Konfiguruje pin jako wyjście cyfrowe ze sterownikiem push-pull.

OUT_OD: int#

Konfiguruje pin jako wyjście cyfrowe ze sterownikiem open-drain.

ANALOG: int#

Konfiguruje pin jako wejście analogowe (np. do użytku z ADC).

ALT: int#

Konfiguruje pin jako funkcję alternatywną (wejściową lub wyjściową).

AF_PP: int#

Konfiguruje pin jako funkcję alternatywną ze sterownikiem push-pull.

AF_OD: int#

Konfiguruje pin jako funkcję alternatywną ze sterownikiem open-drain.

PULL_NONE: int#

Wyłącza zarówno rezystory podciągające w górę, jak i w dół na pinie.

PULL_UP: int#

Włącza wewnętrzny rezystor podciągający w górę na pinie.

PULL_DOWN: int#

Włącza wewnętrzny rezystor podciągający w dół na pinie.