клас Pin – керування виводами введення/виведення

Об’єкт Pin представляє один GPIO на STM32. Він надає методи для налаштування режиму виводу (вхід, вихід, альтернативна функція, аналоговий) і підтягуючих резисторів, а також для читання або встановлення цифрового рівня. Для аналогового вимірювання дивіться pyb.ADC; для перелічення альтернативних функцій дивіться PinAF.

Всі виводи роз’єму попередньо визначені як pyb.Pin.board.<name>. Більшість STM32 OpenMV Cams надають виводи роз’єму P0P9; OpenMV Cam N6 надає додаткові виводи до P18

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

Базовий порт/вивід STM32 також можна адресувати безпосередньо через pyb.Pin.cpu.<name>, де назва складається з літери порту та номера виводу (наприклад, pyb.Pin.cpu.A0). Відповідність кожного виводу роз’єму OpenMV виводу ЦП фіксована на платі.

Виводи також можна вибирати за рядковою назвою:

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

Користувацькі назви можна додати за допомогою Pin.dict()

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

і отримати назад:

pin = pyb.Pin("LeftMotorDir")

Також можна встановити власну функцію відображення за допомогою Pin.mapper()

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

pyb.Pin.mapper(MyMapper)

тому виклик pyb.Pin("LeftMotorDir", pyb.Pin.OUT_PP) передає "LeftMotorDir" безпосередньо до функції відображення.

Наступний порядок визначає, як назва відображається на фізичний вивід:

  1. Об’єкт Pin передається безпосередньо.

  2. Надана користувачем функція відображення повертає вивід.

  3. Надана користувачем словник містить відповідний ключ.

  4. Рядок збігається з назвою виводу роз’єму (P0, P1, …).

  5. Рядок збігається з назвою порту/виводу ЦП (A0, B7, …).

Викличте pyb.Pin.debug(True), щоб виводити діагностичну інформацію про відображення кожного об’єкта на вивід.

Конструктори

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

Створити новий об’єкт Pin, пов’язаний із заданим id. Якщо вказані додаткові аргументи, вони передаються до Pin.init() для налаштування виводу.

Методи класу

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

Отримати або встановити стан налагодження (True або False для увімкнення або вимкнення).

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

Отримати або встановити словник функції відображення виводів.

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

Отримати або встановити функцію відображення виводів.

Методи

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

Ініціалізувати вивід:

  • mode може бути одним із:

    • Pin.IN - налаштувати вивід як вхід;

    • Pin.OUT_PP - налаштувати вивід як вихід із двотактним керуванням;

    • Pin.OUT_OD - налаштувати вивід як вихід із відкритим стоком;

    • Pin.ALT - налаштувати вивід для альтернативної функції, вхід або вихід;

    • Pin.AF_PP - налаштувати вивід для альтернативної функції з двотактним керуванням;

    • Pin.AF_OD - налаштувати вивід для альтернативної функції з відкритим стоком;

    • Pin.ANALOG - налаштувати вивід як аналоговий.

  • pull може бути одним із:

    • Pin.PULL_NONE - без підтягуючого або стягуючого резистора;

    • Pin.PULL_UP - увімкнути підтягуючий резистор;

    • Pin.PULL_DOWN - увімкнути стягуючий резистор.

    Коли вивід має увімкнений режим Pin.PULL_UP або Pin.PULL_DOWN, він підтягується до 3.3 В або GND відповідно через внутрішній резистор (зазвичай десятки кОм – дивіться електричні характеристики в документації STM32 для відповідного OpenMV Cam).

  • value якщо не None, встановить значення виходу порту перед увімкненням виводу.

  • alt можна використовувати, коли mode дорівнює Pin.ALT, Pin.AF_PP або Pin.AF_OD, щоб задати індекс або назву однієї з альтернативних функцій, пов’язаних із виводом. Цей аргумент раніше називався af, і його також можна використовувати за потреби.

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

Отримати або встановити цифровий логічний рівень виводу:

  • Без аргументів повертає 0 або 1 залежно від логічного рівня виводу.

  • З аргументом value встановлює логічний рівень виводу. value може бути будь-яким значенням, що перетворюється на булеве. Якщо воно перетворюється на True, вивід встановлюється у високий рівень, інакше – у низький.

__str__() str

Повернути рядок з описом об’єкта виводу.

af() int

Повертає поточну налаштовану альтернативну функцію виводу. Повернуте ціле число відповідатиме одній із допустимих констант для аргументу af у функції init.

af_list() List[PinAF]

Повертає масив альтернативних функцій, доступних для цього виводу.

gpio() int

Повертає базову адресу блоку GPIO, пов’язаного з цим виводом.

mode() int

Повертає поточний налаштований режим виводу. Повернуте ціле число відповідатиме одній із допустимих констант для аргументу mode у функції init.

name() str

Отримати назву виводу.

names() List[str]

Повертає назви ЦП і роз’єму для цього виводу.

pin() int

Отримати номер виводу.

port() int

Отримати порт виводу.

pull() int

Повертає поточний налаштований підтяг виводу. Повернуте ціле число відповідатиме одній із допустимих констант для аргументу pull у функції init.

Константи

IN: int

Налаштувати вивід як цифровий вхід (високий імпеданс).

OUT_PP: int

Налаштувати вивід як цифровий вихід із двотактним драйвером.

OUT_OD: int

Налаштувати вивід як цифровий вихід із драйвером відкритого стоку.

ANALOG: int

Налаштувати вивід як аналоговий вхід (наприклад, для використання з ADC).

ALT: int

Налаштувати вивід для альтернативної функції (вхід або вихід).

AF_PP: int

Налаштувати вивід для альтернативної функції з двотактним драйвером.

AF_OD: int

Налаштувати вивід для альтернативної функції з драйвером відкритого стоку.

PULL_NONE: int

Вимкнути підтягуючий та стягуючий резистори на виводі.

PULL_UP: int

Увімкнути внутрішній підтягуючий резистор на виводі.

PULL_DOWN: int

Увімкнути внутрішній стягуючий резистор на виводі.