pyb — funcții legate de placă

Atenționare

Modulul pyb este învechit. Folosiți modulul machine, valabil pe toate porturile, pentru codul nou – acesta oferă aceleași funcționalități pe orice OpenMV Cam, indiferent de familia de MCU, în timp ce pyb există doar pe plăcile bazate pe STM32. pyb este păstrat pentru compatibilitate retroactivă cu scripturile mai vechi, nu i se vor adăuga funcționalități noi și ar putea fi eliminat într-o versiune viitoare.

Modulul pyb conține funcții specifice STM32 legate de placă.

Funcții diverse

pyb.have_cdc() bool

Returnează True dacă USB este conectat ca dispozitiv serial, False în caz contrar.

Notă

Această funcție este învechită. Folosiți în schimb pyb.USB_VCP().isconnected().

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

Preia un 4-tuplu (sau o listă) și îl trimite către gazda USB (PC-ul) pentru a semnala un eveniment de mișcare a mouse-ului HID.

Notă

Această funcție este învechită. Folosiți în schimb pyb.USB_HID.send().

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

Afișează numeroase informații despre placă.

pyb.main(filename: str) None

Setează numele fișierului scriptului principal care va fi rulat după finalizarea boot.py. Dacă această funcție nu este apelată, atunci se va executa fișierul implicit main.py.

Are sens să apelați această funcție doar din interiorul boot.py.

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

Notă

Această funcție este învechită. Folosiți în schimb vfs.mount() / vfs.umount() și un dispozitiv de bloc derivat din vfs.AbstractBlockDev.

Montează un dispozitiv de bloc sub mountpoint. device trebuie să implementeze protocolul vechi de dispozitiv de bloc pyb (de asemenea învechit – consultați vfs.AbstractBlockDev pentru interfața modernă):

Metodă

Scop

readblocks(self, blocknum, buf)

Copiază o cantitate de octeți cât buf de pe dispozitiv, începând de la blocul blocknum. Lungimea lui buf este un multiplu de 512.

writeblocks(self, blocknum, buf) (opțional)

Scrie buf pe dispozitiv, începând de la blocul blocknum. Dacă este omis, dispozitivul este montat doar pentru citire.

count(self)

Returnează numărul de blocuri de 512 octeți de pe dispozitiv.

sync(self) (opțional)

Golește orice scrieri din cache.

mountpoint este calea din rădăcina sistemului de fișiere unde se montează dispozitivul; trebuie să înceapă cu o bară oblică înainte. readonly forțează o montare doar pentru citire. mkfs creează un nou sistem de fișiere dacă nu există niciunul.

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

Obține sau setează obiectul UART pe care este replicat REPL-ul.

pyb.rng() int

Returnează un număr aleatoriu generat hardware pe 30 de biți.

pyb.sync() None

Sincronizează toate sistemele de fișiere.

pyb.unique_id() bytes

Returnează un șir de 12 octeți (96 de biți), care reprezintă ID-ul unic al MCU-ului.

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

Dacă este apelată fără argumente, returnează modul USB curent sub formă de șir.

Dacă este apelată cu modestr furnizat, încearcă să configureze modul USB. Sunt acceptate următoarele valori ale lui modestr:

modestr

Configurează

None

Dezactivează USB.

'VCP'

Doar VCP (Virtual COM Port).

'MSC'

Doar MSC (USB mass storage class).

'VCP+MSC'

VCP și MSC.

'VCP+HID'

VCP și HID (human interface device).

'VCP+MSC+HID'

VCP, MSC și HID împreună. Nu este acceptat pe fiecare OpenMV Cam.

Pentru compatibilitate retroactivă, 'CDC' este interpretat ca însemnând 'VCP' (și în mod similar pentru 'CDC+MSC' și 'CDC+HID').

Parametrul port ar trebui să fie un număr întreg (0, 1, …) și selectează portul USB de utilizat dacă placa acceptă mai multe porturi. O valoare de -1 folosește portul implicit sau cel selectat automat.

Parametrii vid și pid vă permit să specificați VID-ul (vendor id) și PID-ul (product id). O valoare pid de -1 va selecta un PID în funcție de valoarea lui modestr.

Dacă activați modul MSC, parametrul msc poate fi folosit pentru a specifica o listă de LUN-uri SCSI care să fie expuse pe interfața de stocare în masă. De exemplu msc=(pyb.Flash(), pyb.SDCard()).

Dacă activați modul HID, puteți specifica și detaliile HID transmițând parametrul-cheie hid. Acesta preia un tuplu de (subclass, protocol, max packet length, polling interval, report descriptor). În mod implicit, va seta valori adecvate pentru un mouse USB. Există de asemenea o constantă pyb.hid_keyboard, care este un tuplu adecvat pentru o tastatură USB.

Parametrul high_speed, când este setat la True, activează modul USB HS dacă este acceptat de hardware.

Constante

Ambele constante de mai jos sunt 5-tupluri gata pregătite, de forma

(subclass, protocol, max_packet_size, polling_interval_ms, report_descriptor)

potrivite pentru a fi transmise ca argument hid al usb_mode() pentru a face OpenMV Cam să apară gazdei ca un dispozitiv USB HID. subclass = 1 înseamnă „boot interface”, iar protocol selectează clasa de dispozitiv boot (1 = tastatură, 2 = mouse). Al cincilea element este un obiect bytes care conține descriptorul de raport HID utilizat când gazda enumeră dispozitivul.

pyb.hid_mouse: tuple

Descriptor HID pre-construit pentru un mouse boot cu 3 butoane cu mișcare relativă X/Y. Tuplul este (1, 2, 4, 8, <mouse report descriptor>): subclasa boot, protocol mouse, rapoarte de intrare de 4 octeți (masca de butoane + X + Y + rotiță), interogate la fiecare 8 ms. Descriptorul de raport încorporat este cel folosit de pyb.USB_HID().send((buttons, dx, dy, wheel)).

pyb.hid_keyboard: tuple

Descriptor HID pre-construit pentru o tastatură boot USB. Tuplul este (1, 1, 8, 8, <keyboard report descriptor>): subclasa boot, protocol tastatură, rapoarte de intrare de 8 octeți (octet modificator, un octet rezervat, șase coduri de taste concurente), interogate la fiecare 8 ms. Descriptorul de raport încorporat corespunde structurii standard de tastatură boot HID pe 8 octeți, astfel încât raportul trimis prin USB_HID.send() ar trebui să fie un bytes de forma (modifiers, 0, key1, key2, key3, key4, key5, key6).

Clase