AE3 OLED Breakout¶
AE3 OLED Breakout kombinerar OpenMV AE3 med en 128 × 128 RGB-OLED, en 5‑vägs joystick och ett 10‑stifts ARM SWD-kontakthuvud för fristående förhandsvisning, enkel inmatning och JTAG/SWD-felsökning.
För fullständigt datablad, foton och beställning, se produktsidan för AE3 OLED Breakout.
Höjdpunkter¶
128 × 128 RGB-OLED driven av en SSD1351-styrkrets över SPI.
AS90R 5‑vägs joystick med en central tryckknapp, exponerad på
P4/P5I²C-bussen.Återställningsknapp och återhämtningsbrytare för UART-åtkomst till secure enclave.
OLED-frånkopplingsbrytare för att elektriskt koppla bort panelen från SPI-bussen.
Två Qwiic-kontakter på samma
P4/P5I²C-buss.ARM 10‑stifts Cortex Debug-kontakthuvud för SWD/JTAG-felsökning.
Fyra testpunkter för jordanslutning.
Anteckning
Fyra M1.6-monteringshål i hörnen låter dig skruva fast breakouten i ett hölje eller en fixtur.
Stiftreferens¶
Alla AE3-signaler på breakouten hämtas från B2B-kontakthuvudet på undersidan av AE3 och förs ut till två sidoplacerade stiftlister — P0–P5 på ena sidan, P6–P9 på den andra — båda 3,3 V-refererade. Den fullständiga listan med alternativa funktioner för varje stift finns på sidan OpenMV AE3; breakouten använder stiften enligt följande:
Stift |
Referens |
AE3-funktioner |
Breakout-användning |
|---|---|---|---|
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 |
fri |
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 |
Tryck på den inbyggda RESET-knappen eller dra till GND för att återställa AE3 |
P6 |
3,3 V |
I2C1 SDA / UART3 CTS / TIM9 T0 |
fri |
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 (registerval) |
P9 |
3,3 V |
I3C SCL / UART3 TX / TIM5 T1 / ADC ch S11 |
Joystick IRQ (aktiv låg vid tillståndsändring) |
3,3 V-skena |
— |
— |
Driver OLED:en, joystick-expandern och Qwiic-enheterna |
GND-skena |
— |
— |
Gemensam jord |
Anteckning
Återhämtningsbrytaren växlar en intern USB-mux på AE3:n: AE3:ns egna USB-stift kopplas bort från USB‑C-porten, och en USB‑till‑serie-omvandlare på secure enclave-UART:en kopplas till porten i deras ställe. Med brytaren aktiverad kan Alif-verktyg på värdsidan kommunicera med secure enclave för att omprogrammera AE3:ns startladdare. Lämna brytaren inaktiverad vid normal drift så att USB‑C-porten fungerar som AE3:ns USB.
Anteckning
OLED-aktiveringsbrytaren måste vara på för att OLED:en ska fungera — den styr strömmen till panelen och kopplar OLED-styrstiften (P0, P2, P3, P7, P8) vidare till AE3:ns GPIO. Med brytaren av förblir endast P4, P5 och P9 anslutna. Det aktuella brytartillståndet visas på joystick-expandern som bit 0x40 — det råa expanderstiftet läser lågt när brytaren är aktiverad.
Qwiic-kontakthuvuden¶
Två Qwiic 4‑stifts JST‑SH 1,0 mm-kontakter sitter på breakouten och delar samma P4/P5 I²C-buss som den inbyggda joystick-expandern, så ytterligare Qwiic-enheter måste undvika joystick-expanderns adress (0x63).
Stift |
Signal |
|---|---|
1 |
GND |
2 |
+3,3 V |
3 |
SDA ( |
4 |
SCL ( |
JTAG-kontakthuvud¶
Det 10‑stifts 1,27 mm ARM Cortex Debug-kontakthuvudet på breakouten är kopplat direkt till AE3:ns SWD/JTAG-ledningar. Alla signaler är 1,8 V-refererade — använd en nivåväxlande probe eller en vars målspänning följer VCC_REF (stift 1).
Stift |
Signal |
|---|---|
1 |
VCC_REF (+1,8 V) |
2 |
TMS (SWDIO) |
3 |
+1,8 V |
4 |
TCK (SWCLK) |
5 |
GND |
6 |
TDO (SWO) |
7 |
nyckel (inget stift) |
8 |
TDI |
9 |
GND |
10 |
DEBUG_RST_N (JTAG/felsökningsåterställning — separat från systemets NRST) |
Användning¶
Driv OLED:en via display.SPIDisplay med en SSD1351-styrkretsinstans. Strömma kamerabildrutor till 128 × 128-panelen:
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())
Läs av 5‑vägs joysticken via den infrysta drivrutinen pca9674a.PCA9674A. Expandern aktiverar P9 vid tillståndsändringar, så koppla ett IRQ-återanrop som låser det nya knapptillståndet. Knapparna är aktiva låga på expandern; koden nedan XOR:ar avläsningen med 0xFF så att en satt bit i state betyder nedtryckt:
Bit |
Riktning |
|---|---|
|
Joystick höger |
|
Joystick upp |
|
Joystick vänster |
|
Joystick ner |
|
Joystick centertryck |
|
OLED-aktiveringsbrytare (satt i |
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())