AE3 OLED Breakout¶
ה‑AE3 OLED Breakout משלב את ה‑OpenMV AE3 עם צג OLED בגודל 128 × 128 RGB, ג’ויסטיק 5 כיוונים ומחבר ARM SWD בעל 10 פינים, לתצוגה מקדימה עצמאית, קלט פשוט וניפוי שגיאות JTAG/SWD.
ל‑datasheet המלא, תמונות ופרטי הזמנה ראו את עמוד המוצר של AE3 OLED Breakout.
עיקרי הדברים¶
צג OLED בגודל 128 × 128 RGB המונע על‑ידי בקר SSD1351 דרך SPI.
ג’ויסטיק AS90R 5 כיוונים עם לחצן מרכזי, חשוף על אפיק ה‑I²C של
P4/P5.לחצן Reset ו‑מתג שחזור לגישת UART של ה‑secure‑enclave.
מתג ניתוק OLED להסרה חשמלית של הפאנל מאפיק ה‑SPI.
שני מחברי Qwiic על אותו אפיק I²C של
P4/P5.מחבר ARM 10‑pin Cortex Debug לניפוי שגיאות SWD/JTAG.
ארבע נקודות בדיקה לחיבור הארקה.
הערה
ארבעה חורי הרכבה M1.6 בפינות מאפשרים לכם להבריג את ה‑breakout למארז או למתקן.
מדריך פינים¶
כל אותות ה‑AE3 על ה‑breakout נלקחים מתוך מחבר ה‑B2B שבתחתית ה‑AE3 ומוצאים לשני מחברי פינים צדדיים — P0–P5 בצד אחד, P6–P9 בצד השני — שניהם ברפרנס 3.3 V. רשימת הפונקציות החלופיות המלאה לכל פין נמצאת בעמוד OpenMV AE3; ה‑breakout משתמש בפינים באופן הבא:
פין |
רפרנס |
תכונות AE3 |
שימוש ב‑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 |
פנוי |
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 |
ג’ויסטיק / Qwiic I²C SCL |
P5 |
3.3 V |
I2C1 SDA / UART1 RX / TIM2 T0 / PDM D0 / CAN RX |
ג’ויסטיק / Qwiic I²C SDA |
RESET |
3.3 V |
NRST |
לחצו על לחצן ה‑RESET שעל הלוח או משכו ל‑GND כדי לאפס את ה‑AE3 |
P6 |
3.3 V |
I2C1 SDA / UART3 CTS / TIM9 T0 |
פנוי |
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 (בחירת אוגר) |
P9 |
3.3 V |
I3C SCL / UART3 TX / TIM5 T1 / ADC ch S11 |
ג’ויסטיק IRQ (פעיל בנמוך בעת שינוי מצב) |
פס 3.3V |
— |
— |
מזין את ה‑OLED, מרחיב הג’ויסטיק והתקני Qwiic |
פס GND |
— |
— |
הארקה משותפת |
הערה
מתג השחזור מחליף מרבב USB פנימי על ה‑AE3: פיני ה‑USB של ה‑AE3 עצמו מנותקים מיציאת ה‑USB‑C, וממיר USB‑לטורי על ה‑UART של ה‑secure‑enclave מחובר ליציאה במקומם. כאשר המתג מופעל, כלי Alif בצד המארח יכולים לתקשר עם ה‑secure enclave כדי לתכנת מחדש את ה‑bootloader של ה‑AE3. השאירו את המתג כבוי לפעולה רגילה כך שיציאת ה‑USB‑C תפעל כ‑USB של ה‑AE3.
הערה
מתג הפעלת ה‑OLED חייב להיות דלוק כדי שה‑OLED יעבוד — הוא שולט באספקת המתח לפאנל ומחבר את פיני הבקרה של ה‑OLED (P0, P2, P3, P7, P8) ל‑GPIO של ה‑AE3. כאשר המתג כבוי רק P4, P5 ו‑P9 נשארים מחווטים. מצב המתג הנוכחי מופיע על מרחיב הג’ויסטיק כסיבית 0x40 — פין המרחיב הגולמי נקרא נמוך כאשר המתג מופעל.
מחברי Qwiic¶
שני מחברי Qwiic מסוג JST‑SH 1.0 mm בעלי 4 פינים נמצאים על ה‑breakout וחולקים את אותו אפיק I²C של P4/P5 עם מרחיב הג’ויסטיק שעל הלוח, ולכן על התקני Qwiic נוספים להימנע מהכתובת של מרחיב הג’ויסטיק (0x63).
פין |
אות |
|---|---|
1 |
GND |
2 |
+3.3 V |
3 |
SDA ( |
4 |
SCL ( |
מחבר JTAG¶
מחבר ה‑ARM Cortex Debug בעל 10 פינים ו‑1.27 mm על ה‑breakout מחווט ישירות לקווי ה‑SWD/JTAG של ה‑AE3. כל האותות הם ברפרנס 1.8 V — השתמשו בגשש עם הסטת מתח או באחד שמתח היעד שלו עוקב אחר VCC_REF (פין 1).
פין |
אות |
|---|---|
1 |
VCC_REF (+1.8 V) |
2 |
TMS (SWDIO) |
3 |
+1.8 V |
4 |
TCK (SWCLK) |
5 |
GND |
6 |
TDO (SWO) |
7 |
key (ללא פין) |
8 |
TDI |
9 |
GND |
10 |
DEBUG_RST_N (איפוס JTAG/ניפוי שגיאות — נפרד מ‑NRST של המערכת) |
שימוש¶
הניעו את ה‑OLED דרך display.SPIDisplay עם מופע בקר SSD1351. הזרימו פריימים מהמצלמה אל הפאנל בגודל 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())
קראו את ג’ויסטיק 5 הכיוונים דרך מנהל ההתקן הקפוא pca9674a.PCA9674A. המרחיב מציב את P9 בעת שינויי מצב, ולכן חווטו פונקציית callback של IRQ שתנעל את מצב הלחצן החדש. הלחצנים פעילים בנמוך על המרחיב; הקוד שלהלן מבצע XOR של הקריאה עם 0xFF כך שסיבית דלוקה ב‑state משמעותה לחוץ:
סיבית |
כיוון |
|---|---|
|
ג’ויסטיק ימינה |
|
ג’ויסטיק למעלה |
|
ג’ויסטיק שמאלה |
|
ג’ויסטיק למטה |
|
לחיצת מרכז הג’ויסטיק |
|
מתג הפעלת OLED (מוגדר ב‑ |
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())