3.4. Piny i urządzenia peryferyjne¶
Pin to najprostsze urządzenie peryferyjne na MCU: pojedynczy przewód łączący układ ze światem zewnętrznym. Każda interakcja z rzeczywistym sprzętem – sterowanie diodą LED, odczyt przełącznika, pomiar napięcia, wysyłanie bajtów linią szeregową – ostatecznie przebiega przez jeden lub więcej pinów.
3.4.1. Tryby pinu¶
Pin jest konfigurowany w jeden z kilku trybów, zanim zacznie robić cokolwiek użytecznego:
Pin.IN– wejście. Pin obserwuje napięcie przyłożone do niego z zewnątrz i raportuje je jako0(niski) lub1(wysoki).Pin.OUT– wyjście. Pin sam steruje sobą, ustawiając się albo na napięcie zasilania (1), albo na masę (0), aby zewnętrzne komponenty widziały to napięcie.Pin.OPEN_DRAIN– wyjście, które może jedynie ściągać linię w stan niski. Aby przejść w stan wysoki, pin zwalnia linię (pozostawia ją w stanie pływającym), a zewnętrzny rezystor podciągający podnosi linię. Stosowane do współdzielonych magistral, na których wiele urządzeń może sterować tą samą linią.
Wejścia mogą opcjonalnie włączyć wewnętrzny rezystor podciągający, który gwarantuje określony poziom, gdy nic z zewnątrz nie steruje pinem:
Pin.PULL_UP– słabe podciągnięcie do szyny zasilania.Pin.PULL_DOWN– słabe podciągnięcie do masy.
Konstruktor przyjmuje id, mode i pull jako argumenty pozycyjne:
from machine import Pin
led = Pin("P0", Pin.OUT)
button = Pin("P1", Pin.IN, Pin.PULL_UP)
3.4.2. Funkcje alternatywne¶
Większość pinów ma funkcję alternatywną oprócz swojej roli GPIO. Pojedyncze fizyczne pole lutownicze na układzie może być:
Cyfrowym wejściem lub wyjściem (
machine.Pin).Wejściem ADC, które mierzy napięcie (
machine.ADC).Wyjściem PWM, które generuje przebieg prostokątny (
machine.PWM).Linią TX lub RX interfejsu UART (
machine.UART).
Inne urządzenia peryferyjne (kolejne magistrale szeregowe, liczniki czasu itd.) również zajmują określone piny; projektant układu łączy każdy blok sprzętowy ze stałym zestawem pól lutowniczych. ADC próbkuje tylko piny doprowadzone do swojego multipleksera; UART nadaje na tym jednym pinie, do którego jest podłączony jego sygnał TX.
Informacja
Kamery OpenMV oznaczają piny złącza zewnętrznego od P0 do P9 (różni się to nieco w zależności od płytki). To, który pin pełni którą funkcję alternatywną, zależy od płytki; tabelę zawiera skrócona dokumentacja OpenMV Cam.
3.4.3. Różnice między płytkami¶
Kilka szczegółów różni się w zależności od płytki i należy je zawsze sprawdzać w skróconej dokumentacji, zamiast zakładać na podstawie innej płytki:
Tolerancja napięciowa. Niektóre kamery mają piny I/O tolerujące 5 V (sygnał 5 V można podać bezpośrednio bez uszkodzenia); inne pracują z I/O na poziomie 3,3 V lub 1,8 V i wymagają konwertera poziomów dla każdego sygnału powyżej tej wartości. Podłączenie źródła 5 V do pinu nietolerującego takiego napięcia może uszkodzić układ.
Napięcie odniesienia ADC. Napięcie, które ADC traktuje jako pełną skalę, zależy od zasilania I/O płytki.
read_u16()zawsze zwraca0..65535, ale napięcie, które reprezentuje65535, odpowiada napięciu odniesienia danej płytki.Wydajność prądowa. Pin GPIO może źródłować lub pochłaniać ograniczony prąd – zazwyczaj dziesiątki miliamperów. Wystarczy to dla małej diody LED z rezystorem; nie wystarczy dla silnika, brzęczyka ani jakiegokolwiek obciążenia indukcyjnego. Do czegokolwiek cięższego sięgnij po zewnętrzny sterownik (tranzystor, MOSFET, mostek H).
Skrócona dokumentacja OpenMV Cam podaje dokładne wartości dla każdej płytki.