3.4. Pini și periferice¶
Un pin este cel mai simplu periferic de pe MCU: un singur fir care conectează cipul la lumea exterioară. Fiecare interacțiune cu hardware-ul real – aprinderea unui LED, citirea unui comutator, măsurarea unei tensiuni, trimiterea de octeți pe o linie serială – trece în cele din urmă prin unul sau mai mulți pini.
3.4.1. Moduri ale pinilor¶
Un pin este configurat într-unul din câteva moduri înainte de a face ceva util:
Pin.IN– intrare. Pinul observă tensiunea aplicată din exterior și o raportează ca0(coborât) sau1(ridicat).Pin.OUT– ieșire. Pinul se forțează singur fie la tensiunea de alimentare (1), fie la masă (0), astfel încât componentele externe să vadă acea tensiune.Pin.OPEN_DRAIN– ieșire care poate doar să tragă linia la nivel coborât. Pentru a urca la nivel ridicat, pinul eliberează (lasă în gol) și un rezistor de pull-up extern ridică linia. Folosit pentru magistralele partajate unde mai multe dispozitive pot forța aceeași linie.
Intrările pot activa opțional un rezistor de pull intern care garantează un nivel definit atunci când nimic extern nu forțează pinul:
Pin.PULL_UP– pull slab către linia de alimentare.Pin.PULL_DOWN– pull slab către masă.
Constructorul preia id, mode și pull ca argumente poziționale:
from machine import Pin
led = Pin("P0", Pin.OUT)
button = Pin("P1", Pin.IN, Pin.PULL_UP)
3.4.2. Funcții alternative¶
Majoritatea pinilor au o funcție alternativă pe lângă rolul lor de GPIO. Un singur pad fizic de pe cip poate fi:
O intrare sau ieșire digitală (
machine.Pin).O intrare ADC care măsoară tensiunea (
machine.ADC).O ieșire PWM care emite o undă dreptunghiulară (
machine.PWM).Linia TX sau RX a unui UART (
machine.UART).
Alte periferice (magistrale seriale suplimentare, temporizatoare și așa mai departe) revendică, de asemenea, pini specifici; proiectantul cipului conectează fiecare bloc hardware la un set fix de pad-uri. ADC eșantionează doar pinii direcționați către multiplexorul său; un UART transmite pe singurul pin la care este conectat semnalul său TX.
Notă
Camerele OpenMV etichetează pinii conectorului extern de la P0 la P9 (variază ușor în funcție de placă). Care pin poartă care funcție alternativă este specific plăcii; consultați referința rapidă OpenMV Cam pentru tabel.
3.4.3. Variații între plăci¶
Câteva detalii variază în funcție de placă și ar trebui întotdeauna verificate în referința rapidă, în loc să fie presupuse de la o altă placă:
Toleranța la tensiune. Unele camere au pini de I/O toleranți la 5 V (un semnal de 5 V poate fi aplicat direct fără deteriorare); altele își rulează I/O la 3,3 V sau 1,8 V și necesită un convertor de nivel pentru orice semnal peste această valoare. Conectarea unei surse de 5 V la un pin netolerant poate deteriora cipul.
Referința ADC. Tensiunea pe care ADC o tratează ca scală completă depinde de alimentarea de I/O a plăcii.
read_u16()returnează întotdeauna0..65535, dar tensiunea pe care o reprezintă65535este oricare ar fi referința plăcii.Capacitatea de curent. Un pin GPIO poate furniza sau absorbi un curent limitat – de obicei zeci de miliamperi. Suficient pentru un LED mic printr-un rezistor; insuficient pentru un motor, un buzzer sau orice sarcină inductivă. Recurgeți la un driver extern (tranzistor, MOSFET, punte H) pentru orice este mai solicitant.
Referința rapidă OpenMV Cam oferă valorile exacte pentru fiecare placă.