AE3 OLED Breakout¶
De AE3 OLED Breakout combineert de OpenMV AE3 met een 128 × 128 RGB OLED, een 5‑weg joystick en een 10‑pins ARM SWD‑header voor zelfstandige preview, eenvoudige invoer en JTAG/SWD‑debugging.
Voor de volledige datasheet, foto’s en bestelinformatie zie de AE3 OLED Breakout productpagina.
Hoogtepunten¶
128 × 128 RGB OLED aangestuurd door een SSD1351-controller via SPI.
AS90R 5‑weg joystick met een middelste drukknop, beschikbaar op de
P4/P5I²C-bus.Resetknop en recovery-schakelaar voor UART-toegang tot de secure enclave.
OLED-uitschakelaar om het paneel elektrisch los te koppelen van de SPI-bus.
Twee Qwiic-connectoren op dezelfde
P4/P5I²C-bus.ARM 10‑pins Cortex Debug-header voor SWD/JTAG-debugging.
Vier ground-haaktestpunten.
Notitie
Met vier M1.6-bevestigingsgaten in de hoeken kun je de breakout vastschroeven aan een behuizing of montagestuk.
Pinreferentie¶
Alle AE3-signalen op de breakout komen van de B2B-header aan de onderkant van de AE3 en worden naar twee zijdelingse pinheaders gebracht — P0–P5 aan de ene kant, P6–P9 aan de andere — beide gerefereerd aan 3,3 V. De volledige lijst met alternatieve functies voor elke pin staat op de OpenMV AE3-pagina; de breakout gebruikt de pins als volgt:
Pin |
Referentie |
AE3-functies |
Gebruik op breakout |
|---|---|---|---|
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 |
vrij |
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 |
Druk op de RESET-knop op de print of trek naar GND om de AE3 te resetten |
P6 |
3,3 V |
I2C1 SDA / UART3 CTS / TIM9 T0 |
vrij |
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 (registerselectie) |
P9 |
3,3 V |
I3C SCL / UART3 TX / TIM5 T1 / ADC ch S11 |
Joystick IRQ (actief laag bij statuswijziging) |
3,3V-rail |
— |
— |
Voedt de OLED, joystick-expander en Qwiic-apparaten |
GND-rail |
— |
— |
Gemeenschappelijke ground |
Notitie
De recovery-schakelaar schakelt een interne USB-mux op de AE3 om: de eigen USB-pins van de AE3 worden losgekoppeld van de USB‑C-poort, en in plaats daarvan wordt een USB-naar-serieel-omzetter op de UART van de secure enclave met de poort verbonden. Met de schakelaar ingeschakeld kunnen Alif-tools aan de hostzijde met de secure enclave communiceren om de bootloader van de AE3 opnieuw te programmeren. Laat de schakelaar uitgeschakeld voor normaal gebruik, zodat de USB‑C-poort als de USB van de AE3 fungeert.
Notitie
De OLED-inschakelaar moet aan staan om de OLED te laten werken — hij regelt de voeding naar het paneel en verbindt de OLED-besturingspins (P0, P2, P3, P7, P8) door naar de GPIO van de AE3. Met de schakelaar uit blijven alleen P4, P5 en P9 doorverbonden. De huidige stand van de schakelaar verschijnt op de joystick-expander als bit 0x40 — de ruwe expander-pin leest laag wanneer de schakelaar is ingeschakeld.
Qwiic-headers¶
Twee Qwiic 4‑pins JST‑SH 1,0 mm-connectoren bevinden zich op de breakout en delen dezelfde P4/P5 I²C-bus als de joystick-expander op de print, dus extra Qwiic-apparaten moeten het adres van de joystick-expander (0x63) vermijden.
Pin |
Signaal |
|---|---|
1 |
GND |
2 |
+3,3 V |
3 |
SDA ( |
4 |
SCL ( |
JTAG-header¶
De 10‑pins 1,27 mm ARM Cortex Debug-header op de breakout is rechtstreeks bedraad naar de SWD/JTAG-lijnen van de AE3. Alle signalen zijn gerefereerd aan 1,8 V — gebruik een level-shifting-probe of een probe waarvan de doelspanning VCC_REF (pin 1) volgt.
Pin |
Signaal |
|---|---|
1 |
VCC_REF (+1,8 V) |
2 |
TMS (SWDIO) |
3 |
+1,8 V |
4 |
TCK (SWCLK) |
5 |
GND |
6 |
TDO (SWO) |
7 |
sleutel (geen pin) |
8 |
TDI |
9 |
GND |
10 |
DEBUG_RST_N (JTAG/debug-reset — los van de systeem-NRST) |
Gebruik¶
Stuur de OLED aan via display.SPIDisplay met een SSD1351-controllerinstantie. Stream camerabeelden naar het 128 × 128-paneel:
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())
Lees de 5‑weg joystick uit via de bevroren pca9674a.PCA9674A-driver. De expander activeert P9 bij statuswijzigingen, dus koppel een IRQ-callback die de nieuwe knopstatus vastlegt. De knoppen zijn actief laag op de expander; de onderstaande code XORt de uitlezing met 0xFF zodat een gezet bit in state betekent ingedrukt:
Bit |
Richting |
|---|---|
|
Joystick rechts |
|
Joystick omhoog |
|
Joystick links |
|
Joystick omlaag |
|
Joystick middendruk |
|
OLED-inschakelaar (gezet in |
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())