3.4. Pins und Peripheriegeräte¶
Ein Pin ist das einfachste Peripheriegerät der MCU: eine einzelne Leitung, die den Chip mit der Außenwelt verbindet. Jede Interaktion mit realer Hardware – eine LED ansteuern, einen Schalter auslesen, eine Spannung messen, Bytes über eine serielle Leitung senden – läuft letztlich über einen oder mehrere Pins.
3.4.1. Pin-Modi¶
Ein Pin wird in einen von wenigen Modi konfiguriert, bevor er etwas Nützliches tut:
Pin.IN– Eingang. Der Pin beobachtet die von außen an ihn angelegte Spannung und meldet sie als0(Low) oder1(High).Pin.OUT– Ausgang. Der Pin treibt sich selbst entweder auf die Versorgungsspannung (1) oder auf Masse (0), sodass externe Komponenten diese Spannung sehen.Pin.OPEN_DRAIN– Ausgang, der die Leitung nur auf Low ziehen kann. Um auf High zu gehen, gibt der Pin frei (floatet) und ein externer Pull-up-Widerstand hebt die Leitung an. Wird für gemeinsam genutzte Busse verwendet, bei denen mehrere Geräte dieselbe Leitung treiben können.
Eingänge können optional einen internen Pull-Widerstand aktivieren, der einen definierten Pegel garantiert, wenn nichts Externes den Pin treibt:
Pin.PULL_UP– schwacher Pull auf die Versorgungsschiene.Pin.PULL_DOWN– schwacher Pull auf Masse.
Der Konstruktor nimmt id, mode und pull als Positionsargumente entgegen:
from machine import Pin
led = Pin("P0", Pin.OUT)
button = Pin("P1", Pin.IN, Pin.PULL_UP)
3.4.2. Alternativfunktionen¶
Die meisten Pins haben zusätzlich zu ihrer GPIO-Rolle eine Alternativfunktion. Ein einzelnes physisches Pad auf dem Chip kann sein:
Ein digitaler Eingang oder Ausgang (
machine.Pin).Ein ADC-Eingang, der Spannung misst (
machine.ADC).Ein PWM-Ausgang, der eine Rechteckwelle ausgibt (
machine.PWM).Die TX- oder RX-Leitung eines UART (
machine.UART).
Andere Peripheriegeräte (weitere serielle Busse, Timer und so weiter) beanspruchen ebenfalls bestimmte Pins; der Chip-Entwickler verdrahtet jeden Hardwareblock mit einem festen Satz von Pads. Der ADC tastet nur Pins ab, die zu seinem Multiplexer geführt werden; ein UART sendet auf dem einen Pin, mit dem sein TX-Signal verdrahtet ist.
Bemerkung
OpenMV Cams beschriften die Pins des externen Steckverbinders mit P0 bis P9 (variiert leicht je nach Board). Welcher Pin welche Alternativfunktion trägt, ist board-spezifisch; siehe die OpenMV Cam Kurzreferenz für die Tabelle.
3.4.3. Board-Varianten¶
Einige Details variieren je nach Board und sollten immer anhand der Kurzreferenz überprüft und nicht von einem anderen Board angenommen werden:
Spannungstoleranz. Manche Cams haben 5-V-tolerante E/A-Pins (ein 5-V-Signal kann direkt ohne Schaden angelegt werden); andere betreiben ihre E/A mit 3,3 V oder 1,8 V und benötigen einen Pegelwandler für jedes Signal darüber. Das Anschließen einer 5-V-Quelle an einen nicht toleranten Pin kann den Chip beschädigen.
ADC-Referenz. Die Spannung, die der ADC als Vollausschlag behandelt, hängt von der E/A-Versorgung des Boards ab.
read_u16()gibt immer0..65535zurück, aber die Spannung, die65535repräsentiert, ist die jeweilige Referenz des Boards.Treiberstärke. Ein GPIO-Pin kann nur einen begrenzten Strom liefern oder aufnehmen – typischerweise einige zehn Milliampere. Genug für eine kleine LED über einen Widerstand; nicht genug für einen Motor, einen Summer oder eine induktive Last. Greifen Sie für alles Größere zu einem externen Treiber (Transistor, MOSFET, H-Brücke).
Die OpenMV Cam Kurzreferenz gibt die genauen Zahlen pro Board an.