pyb — функції, пов’язані з платою

Попередження

Модуль pyb є застарілим. Для нового коду використовуйте кросплатформний модуль machine — він надає однакову функціональність на кожній OpenMV Cam незалежно від сімейства MCU, тоді як pyb існує лише на платах на основі STM32. pyb збережено для зворотної сумісності зі старішими скриптами, нові функції не додаватимуться, і він може бути видалений у майбутньому релізі.

Модуль pyb містить специфічні для STM32 функції, пов’язані з платою.

Різноманітні функції

pyb.have_cdc() bool

Повертає True, якщо USB підключено як послідовний пристрій, інакше False.

Примітка

Ця функція є застарілою. Натомість використовуйте pyb.USB_VCP().isconnected().

pyb.hid(data: Tuple[int, int, int, int]) None

Приймає 4-кортеж (або список) і надсилає його хосту USB (ПК) для сигналізації про подію переміщення миші HID.

Примітка

Ця функція є застарілою. Натомість використовуйте pyb.USB_HID.send().

pyb.info(dump_alloc_table: bool | None = None) None

Виводить детальну інформацію про плату.

pyb.main(filename: str) None

Встановлює ім’я файлу головного скрипта, що виконується після завершення boot.py. Якщо ця функція не викликається, буде виконано файл за замовчуванням main.py.

Має сенс викликати цю функцію лише з boot.py.

pyb.mount(device: Any, mountpoint: str, *, readonly: bool = False, mkfs: bool = False) None

Примітка

Ця функція є застарілою. Натомість використовуйте vfs.mount() / vfs.umount() та блоковий пристрій на основі vfs.AbstractBlockDev.

Монтує блоковий пристрій у mountpoint. device повинен реалізовувати застарілий протокол блокового пристрою pyb (також застарілий — дивіться vfs.AbstractBlockDev для сучасного інтерфейсу):

Метод

Призначення

readblocks(self, blocknum, buf)

Копіює кількість байт, рівну buf, з пристрою, починаючи з блоку blocknum. Довжина buf кратна 512.

writeblocks(self, blocknum, buf) (необов’язково)

Записує buf на пристрій, починаючи з блоку blocknum. Якщо не вказано, пристрій монтується лише для читання.

count(self)

Повертає кількість 512-байтних блоків на пристрої.

sync(self) (необов’язково)

Скидає будь-які кешовані записи.

mountpoint — це шлях у корені файлової системи, де монтується пристрій; він повинен починатися з косої риски. readonly примусово монтує лише для читання. mkfs створює нову файлову систему, якщо жодної немає.

pyb.repl_uart(uart: UART | None = None) UART | None

Отримати або встановити об’єкт UART, на якому відтворюється REPL.

pyb.rng() int

Повертає 30-бітне апаратно згенероване випадкове число.

pyb.sync() None

Синхронізує всі файлові системи.

pyb.unique_id() bytes

Повертає рядок із 12 байт (96 біт), що є унікальним ідентифікатором MCU.

pyb.usb_mode(modestr: str | None = None, port: int = -1, vid: int = 0xf055, pid: int = -1, msc: Tuple = (), hid: Tuple = pyb.hid_mouse, high_speed: bool = False) str | None

Якщо викликати без аргументів, повертає поточний режим USB у вигляді рядка.

Якщо передати modestr, функція намагається налаштувати режим USB. Підтримуються такі значення modestr:

modestr

Налаштовує

None

Вимикає USB.

'VCP'

Лише VCP (Virtual COM Port).

'MSC'

Лише MSC (клас USB-носія).

'VCP+MSC'

VCP і MSC.

'VCP+HID'

VCP і HID (пристрій введення).

'VCP+MSC+HID'

VCP, MSC та HID разом. Підтримується не на кожній OpenMV Cam.

Для зворотної сумісності 'CDC' сприймається як 'VCP' (аналогічно для 'CDC+MSC' та 'CDC+HID').

Параметр port має бути цілим числом (0, 1, …) і визначає, який порт USB використовувати, якщо плата підтримує кілька портів. Значення -1 використовує порт за замовчуванням або автоматично обраний порт.

Параметри vid і pid дозволяють вказати VID (ідентифікатор виробника) і PID (ідентифікатор продукту). Значення pid рівне -1 вибере PID на основі значення modestr.

Якщо увімкнено режим MSC, параметр msc може використовуватися для вказання списку SCSI LUN, що відображаються на інтерфейсі масового сховища. Наприклад, msc=(pyb.Flash(), pyb.SDCard()).

Якщо увімкнено режим HID, можна також вказати параметри HID, передавши ключовий параметр hid. Він приймає кортеж виду (підклас, протокол, максимальна довжина пакета, інтервал опитування, дескриптор звіту). За замовчуванням встановлюються відповідні значення для USB-миші. Також є константа pyb.hid_keyboard, що є відповідним кортежем для USB-клавіатури.

Параметр high_speed, встановлений у True, вмикає режим USB HS, якщо він підтримується апаратним забезпеченням.

Константи

Обидві наведені нижче константи є готовими 5-кортежами вигляду

(subclass, protocol, max_packet_size, polling_interval_ms, report_descriptor)

придатними для передачі як аргумент hid у usb_mode(), щоб OpenMV Cam відображалась для хоста як USB HID-пристрій. subclass = 1 означає «завантажувальний інтерфейс», а protocol визначає клас завантажувального пристрою (1 = клавіатура, 2 = миша). П’ятий елемент — це об’єкт bytes, що містить дескриптор звіту HID, який використовується при перерахуванні пристрою хостом.

pyb.hid_mouse: tuple

Попередньо зібраний дескриптор HID для 3-кнопкової завантажувальної миші з відносним переміщенням X/Y. Кортеж має вигляд (1, 2, 4, 8, <mouse report descriptor>): завантажувальний підклас, протокол миші, 4-байтові вхідні звіти (маска кнопок + X + Y + колесо), опитування кожні 8 мс. Вбудований дескриптор звіту використовується командою pyb.USB_HID().send((buttons, dx, dy, wheel)).

pyb.hid_keyboard: tuple

Попередньо зібраний дескриптор HID для USB завантажувальної клавіатури. Кортеж має вигляд (1, 1, 8, 8, <keyboard report descriptor>): завантажувальний підклас, протокол клавіатури, 8-байтові вхідні звіти (байт модифікаторів, один зарезервований байт, шість одночасних кодів клавіш), опитування кожні 8 мс. Вбудований дескриптор звіту відповідає стандартному 8-байтному HID-макету завантажувальної клавіатури, тому звіт, надісланий через USB_HID.send(), має бути bytes вигляду (modifiers, 0, key1, key2, key3, key4, key5, key6).

Класи