AE3 OLED Breakout¶
AE3 OLED Breakout łączy OpenMV AE3 z wyświetlaczem OLED RGB 128 × 128, 5‑kierunkowym joystickiem oraz 10‑pinowym złączem ARM SWD, zapewniając samodzielny podgląd, prostą obsługę wejścia oraz debugowanie JTAG/SWD.
Pełną dokumentację, zdjęcia i informacje o zamawianiu znajdziesz na stronie produktu AE3 OLED Breakout.
Najważniejsze cechy¶
Wyświetlacz OLED RGB 128 × 128 sterowany kontrolerem SSD1351 przez SPI.
5‑kierunkowy joystick AS90R z centralnym przyciskiem, wyprowadzony na magistralę I²C
P4/P5.Przycisk reset oraz przełącznik recovery do dostępu UART do secure enclave.
Przełącznik odłączający OLED, elektrycznie odłączający panel od magistrali SPI.
Dwa złącza Qwiic na tej samej magistrali I²C
P4/P5.Złącze ARM 10‑pin Cortex Debug do debugowania SWD/JTAG.
Cztery punkty testowe (test point) masy.
Informacja
Cztery narożne otwory montażowe M1.6 umożliwiają przykręcenie breakoutu do obudowy lub uchwytu.
Opis pinów¶
Wszystkie sygnały AE3 na breakoucie pochodzą ze złącza B2B na spodzie AE3 i są wyprowadzone na dwa boczne złącza szpilkowe — P0–P5 po jednej stronie i P6–P9 po drugiej — oba w odniesieniu do 3.3 V. Pełna lista funkcji alternatywnych dla każdego pinu znajduje się na stronie OpenMV AE3; breakout wykorzystuje piny w następujący sposób:
Pin |
Odniesienie |
Funkcje AE3 |
Zastosowanie na breakoucie |
|---|---|---|---|
P0 |
3.3 V |
SPI0 MOSI / I2C2 SCL / UART4 TX / TIM0 T1 / PDM D3 |
OLED SPI MOSI |
P1 |
3.3 V |
SPI0 MISO / I2C2 SDA / UART4 RX / TIM0 T0 |
wolny |
P2 |
3.3 V |
SPI0 SCLK / LPI2C SDA / UART5 TX / TIM1 T1 |
OLED SPI SCLK |
P3 |
3.3 V |
SPI0 SS / LPI2C SCL / UART5 RX / TIM1 T0 / PDM C3 |
OLED SPI CS |
P4 |
3.3 V |
I2C1 SCL / UART1 TX / TIM2 T1 / PDM C0 / CAN TX |
Joystick / Qwiic I²C SCL |
P5 |
3.3 V |
I2C1 SDA / UART1 RX / TIM2 T0 / PDM D0 / CAN RX |
Joystick / Qwiic I²C SDA |
RESET |
3.3 V |
NRST |
Naciśnij wbudowany przycisk RESET lub zewrzyj do GND, aby zresetować AE3 |
P6 |
3.3 V |
I2C1 SDA / UART3 CTS / TIM9 T0 |
wolny |
P7 |
3.3 V |
I2C1 SCL / UART3 RTS / TIM9 T1 |
OLED RESET |
P8 |
3.3 V |
I3C SDA / UART3 RX / TIM5 T0 / ADC ch S10 |
OLED DC (wybór rejestru) |
P9 |
3.3 V |
I3C SCL / UART3 TX / TIM5 T1 / ADC ch S11 |
Joystick IRQ (aktywny stanem niskim przy zmianie stanu) |
szyna 3.3V |
— |
— |
Zasila OLED, ekspander joysticka oraz urządzenia Qwiic |
szyna GND |
— |
— |
Wspólna masa |
Informacja
Przełącznik recovery przełącza wewnętrzny multiplekser USB w AE3: własne piny USB AE3 zostają odłączone od portu USB‑C, a w ich miejsce do portu podłączany jest konwerter USB‑szeregowy na UART secure enclave. Przy włączonym przełączniku narzędzia Alif po stronie hosta mogą komunikować się z secure enclave w celu przeprogramowania bootloadera AE3. Do normalnej pracy pozostaw przełącznik wyłączony, aby port USB‑C działał jako USB AE3.
Informacja
Przełącznik włączający OLED musi być włączony, aby OLED działał — steruje on zasilaniem panelu i łączy piny sterujące OLED (P0, P2, P3, P7, P8) z GPIO AE3. Przy wyłączonym przełączniku podłączone pozostają jedynie P4, P5 i P9. Aktualny stan przełącznika jest widoczny na ekspanderze joysticka jako bit 0x40 — surowy pin ekspandera odczytuje stan niski, gdy przełącznik jest włączony.
Złącza Qwiic¶
Na breakoucie znajdują się dwa 4‑pinowe złącza Qwiic JST‑SH 1.0 mm, które współdzielą tę samą magistralę I²C P4/P5 co wbudowany ekspander joysticka, dlatego dodatkowe urządzenia Qwiic muszą unikać adresu ekspandera joysticka (0x63).
Pin |
Sygnał |
|---|---|
1 |
GND |
2 |
+3.3 V |
3 |
SDA ( |
4 |
SCL ( |
Złącze JTAG¶
10‑pinowe złącze 1.27 mm ARM Cortex Debug na breakoucie jest połączone bezpośrednio z liniami SWD/JTAG AE3. Wszystkie sygnały są w odniesieniu do 1.8 V — użyj sondy z konwersją poziomów lub takiej, której napięcie docelowe podąża za VCC_REF (pin 1).
Pin |
Sygnał |
|---|---|
1 |
VCC_REF (+1.8 V) |
2 |
TMS (SWDIO) |
3 |
+1.8 V |
4 |
TCK (SWCLK) |
5 |
GND |
6 |
TDO (SWO) |
7 |
klucz (brak pinu) |
8 |
TDI |
9 |
GND |
10 |
DEBUG_RST_N (reset JTAG/debug — odrębny od systemowego NRST) |
Użycie¶
Steruj wyświetlaczem OLED za pomocą display.SPIDisplay z instancją kontrolera SSD1351. Strumieniuj ramki z kamery na panel 128 × 128:
import csi
import time
import display
import image
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.VGA)
csi0.window((400, 400))
lcd = display.SPIDisplay(width=128, height=128,
controller=display.SSD1351())
clock = time.clock()
while True:
clock.tick()
lcd.write(csi0.snapshot(),
hint=image.CENTER | image.SCALE_ASPECT_KEEP)
print(clock.fps())
Odczytuj 5‑kierunkowy joystick za pomocą wbudowanego sterownika pca9674a.PCA9674A. Ekspander wystawia P9 przy zmianach stanu, więc podłącz wywołanie zwrotne IRQ, które zatrzaśnie nowy stan przycisków. Przyciski na ekspanderze są aktywne stanem niskim; poniższy kod wykonuje XOR odczytu z 0xFF, dzięki czemu ustawiony bit w state oznacza naciśnięty:
Bit |
Kierunek |
|---|---|
|
Joystick w prawo |
|
Joystick w górę |
|
Joystick w lewo |
|
Joystick w dół |
|
Naciśnięcie środka joysticka |
|
Przełącznik włączający OLED (ustawiony w |
import csi
import time
import display
from pca9674a import PCA9674A
from machine import I2C
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.VGA)
csi0.window((400, 400))
lcd = display.SPIDisplay(width=128, height=128,
controller=display.SSD1351())
clock = time.clock()
state = 0
cursor_x = 0
cursor_y = 0
def read_expander(pin):
global exp, state
# Buttons are active‑low on the expander; XOR for active‑high bits.
state = exp.read() ^ 0xFF
exp = PCA9674A(I2C(1), irq_pin="P9", callback=read_expander)
def update_cursor():
global cursor_x, cursor_y
if state & 0x01: cursor_x += 2 # Right
if state & 0x02: cursor_y -= 2 # Up
if state & 0x04: cursor_x -= 2 # Left
if state & 0x08: cursor_y += 2 # Down
if state & 0x10: # Centre
cursor_x = 0
cursor_y = 0
while True:
clock.tick()
update_cursor()
lcd.write(csi0.snapshot(), x=cursor_x, y=cursor_y,
x_scale=128 / 400, y_scale=128 / 400)
print(clock.fps())