AE3 OLED Breakout¶
AE3 OLED Breakout spojuje OpenMV AE3 se 128 × 128 RGB OLED displejem, 5směrným joystickem a 10pinovým ARM SWD konektorem pro samostatný náhled, jednoduché ovládání a JTAG/SWD ladění.
Kompletní datasheet, fotografie a možnosti objednání najdete na produktové stránce AE3 OLED Breakout.
Hlavní vlastnosti¶
128 × 128 RGB OLED řízený řadičem SSD1351 přes SPI.
5směrný joystick AS90R se středovým tlačítkem, vyvedený na I²C sběrnici
P4/P5.Tlačítko reset a recovery přepínač pro přístup k UART secure enclave.
Přepínač odpojení OLED pro elektrické odpojení panelu od SPI sběrnice.
Dva konektory Qwiic na stejné I²C sběrnici
P4/P5.ARM 10pinový Cortex Debug konektor pro ladění přes SWD/JTAG.
Čtyři zemnicí (ground hook) testovací body.
Poznámka
Čtyři rohové montážní otvory M1.6 umožňují přišroubovat breakout k pouzdru nebo přípravku.
Přehled pinů¶
Všechny signály AE3 na breakoutu jsou odebírány z B2B konektoru na spodní straně AE3 a vyvedeny na dvě boční pinové lišty — P0–P5 na jedné straně, P6–P9 na druhé — obě vztažené k 3,3 V. Kompletní seznam alternativních funkcí každého pinu najdete na stránce OpenMV AE3; breakout používá piny následovně:
Pin |
Reference |
Funkce AE3 |
Použití na breakoutu |
|---|---|---|---|
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 |
volný |
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 |
Stiskněte tlačítko RESET na desce nebo přitáhněte k GND pro reset AE3 |
P6 |
3,3 V |
I2C1 SDA / UART3 CTS / TIM9 T0 |
volný |
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 (výběr registru) |
P9 |
3,3 V |
I3C SCL / UART3 TX / TIM5 T1 / ADC ch S11 |
Joystick IRQ (aktivní v nule při změně stavu) |
Napájecí větev 3,3 V |
— |
— |
Napájí OLED, expandér joysticku a Qwiic zařízení |
Zemnicí větev GND |
— |
— |
Společná zem |
Poznámka
Recovery přepínač přepíná interní USB mux na AE3: vlastní USB piny AE3 se odpojí od USB-C portu a místo nich se k portu připojí převodník USB na sériovou linku na UART secure enclave. Při zapnutém přepínači mohou hostitelské nástroje Alif komunikovat se secure enclave a přeprogramovat bootloader AE3. Pro běžný provoz ponechte přepínač vypnutý, aby USB-C port fungoval jako USB pro AE3.
Poznámka
Přepínač zapnutí OLED musí být zapnutý, aby OLED fungoval — řídí napájení panelu a propojuje řídicí piny OLED (P0, P2, P3, P7, P8) až k GPIO AE3. Při vypnutém přepínači zůstávají propojené pouze P4, P5 a P9. Aktuální stav přepínače se objevuje na expandéru joysticku jako bit 0x40 — surová hodnota pinu expandéru je nízká, když je přepínač zapnutý.
Qwiic konektory¶
Na breakoutu jsou dva 4pinové konektory Qwiic JST-SH 1,0 mm a sdílejí stejnou I²C sběrnici P4/P5 jako expandér joysticku na desce, takže další Qwiic zařízení se musí vyhnout adrese expandéru joysticku (0x63).
Pin |
Signál |
|---|---|
1 |
GND |
2 |
+3,3 V |
3 |
SDA ( |
4 |
SCL ( |
JTAG konektor¶
10pinový 1,27 mm ARM Cortex Debug konektor na breakoutu je zapojen přímo na SWD/JTAG linky AE3. Všechny signály jsou vztažené k 1,8 V — použijte sondu s úrovňovým převodem nebo takovou, jejíž cílové napětí sleduje VCC_REF (pin 1).
Pin |
Signál |
|---|---|
1 |
VCC_REF (+1,8 V) |
2 |
TMS (SWDIO) |
3 |
+1,8 V |
4 |
TCK (SWCLK) |
5 |
GND |
6 |
TDO (SWO) |
7 |
klíč (bez pinu) |
8 |
TDI |
9 |
GND |
10 |
DEBUG_RST_N (JTAG/debug reset — oddělený od systémového NRST) |
Použití¶
OLED ovládejte přes display.SPIDisplay s instancí řadiče SSD1351. Snímky z kamery streamujte na 128 × 128 panel:
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())
5směrný joystick čtěte přes zmrazený (frozen) ovladač pca9674a.PCA9674A. Expandér nastaví P9 při změnách stavu, takže zapojte IRQ callback, který zachytí nový stav tlačítek. Tlačítka jsou na expandéru aktivní v nule; níže uvedený kód provádí XOR načtené hodnoty s 0xFF, takže nastavený bit v state znamená stisknuto:
Bit |
Směr |
|---|---|
|
Joystick vpravo |
|
Joystick nahoru |
|
Joystick vlevo |
|
Joystick dolů |
|
Stisk středu joysticku |
|
Přepínač zapnutí OLED (nastaven v |
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())