клас 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#

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