AE3 OLED Breakout

AE3 OLED Breakout поєднує OpenMV AE3 з RGB OLED-дисплеєм 128 × 128, 5-позиційним джойстиком та 10-контактним роз’ємом ARM SWD для автономного попереднього перегляду, простого введення та налагодження через JTAG/SWD.

AE3 OLED Breakout

Повний даташит, фотографії та інформацію про замовлення дивіться на сторінці продукту AE3 OLED Breakout.

Основні характеристики

  • RGB OLED 128 × 128 на контролері SSD1351 через SPI.

  • 5-позиційний джойстик AS90R з центральною кнопкою натискання, підключений до шини I²C P4/P5.

  • Кнопка RESET та перемикач відновлення для доступу до UART захищеного анклаву.

  • Перемикач відключення OLED для електричного від’єднання панелі від шини SPI.

  • Два роз’єми Qwiic на спільній шині I²C P4/P5.

  • Роз’єм ARM 10-pin Cortex Debug для налагодження через SWD/JTAG.

  • Чотири тестові точки із заземленням.

Примітка

Чотири кутових монтажних отвори M1.6 дозволяють закріпити плату до корпусу або кріплення.

Довідник виводів

Усі сигнали AE3 на платі розширення знімаються з роз’єму B2B на нижній частині AE3 та виведені на два бічних штирові роз’єми — P0P5 з одного боку, P6P9 з іншого — обидва з рівнем 3,3 В. Повний список альтернативних функцій кожного виводу наведено на сторінці OpenMV AE3; на платі розширення виводи використовуються наступним чином:

Вивід

Опис

Функції AE3

Використання на платі

P0

3.3 В

SPI0 MOSI / I2C2 SCL / UART4 TX / TIM0 T1 / PDM D3

OLED SPI MOSI

P1

3.3 В

SPI0 MISO / I2C2 SDA / UART4 RX / TIM0 T0

вільний

P2

3.3 В

SPI0 SCLK / LPI2C SDA / UART5 TX / TIM1 T1

OLED SPI SCLK

P3

3.3 В

SPI0 SS / LPI2C SCL / UART5 RX / TIM1 T0 / PDM C3

OLED SPI CS

P4

3.3 В

I2C1 SCL / UART1 TX / TIM2 T1 / PDM C0 / CAN TX

Джойстик / Qwiic I²C SCL

P5

3.3 В

I2C1 SDA / UART1 RX / TIM2 T0 / PDM D0 / CAN RX

Джойстик / Qwiic I²C SDA

RESET

3.3 В

NRST

Натисніть кнопку RESET на платі або підтягніть до GND для скидання AE3

P6

3.3 В

I2C1 SDA / UART3 CTS / TIM9 T0

вільний

P7

3.3 В

I2C1 SCL / UART3 RTS / TIM9 T1

OLED RESET

P8

3.3 В

I3C SDA / UART3 RX / TIM5 T0 / ADC ch S10

OLED DC (вибір регістра)

P9

3.3 В

I3C SCL / UART3 TX / TIM5 T1 / ADC ch S11

Джойстик IRQ (активний низький при зміні стану)

Шина 3.3V

Живить OLED, розширювач джойстика та пристрої Qwiic

Шина GND

Загальний провід

Примітка

Перемикач відновлення перемикає внутрішній USB-мультиплексор на AE3: власні USB-виводи AE3 від’єднуються від порту USB‑C, а перетворювач USB-to-serial на UART захищеного анклаву підключається до порту замість них. При увімкненому перемикачі інструменти Alif на стороні хосту можуть звертатися до захищеного анклаву для перепрограмування завантажувача AE3. Залиште перемикач у положенні вимкнено для нормальної роботи, щоб порт USB‑C працював як USB AE3.

Примітка

Перемикач увімкнення OLED має бути увімкнений для роботи OLED — він керує живленням панелі та підключає керуючі виводи OLED (P0, P2, P3, P7, P8) до GPIO AE3. При вимкненому перемикачі підключеними залишаються лише P4, P5 та P9. Поточний стан перемикача відображається на розширювачі джойстика у біті 0x40 — вивід розширювача читається як низький, коли перемикач увімкнений.

Роз’єми Qwiic

Два Qwiic 4-контактних роз’єми JST‑SH 1,0 мм розташовані на платі і поділяють спільну шину I²C P4/P5 з вбудованим розширювачем джойстика, тому додаткові пристрої Qwiic не повинні використовувати адресу розширювача джойстика (0x63).

Вивід

Сигнал

1

GND

2

+3.3 В

3

SDA (P5)

4

SCL (P4)

Роз’єм JTAG

10-контактний роз’єм ARM Cortex Debug 1,27 мм на платі підключений безпосередньо до ліній SWD/JTAG AE3. Усі сигнали мають рівень 1,8 В — використовуйте зонд із зсувом рівнів або такий, опорна напруга якого відстежує VCC_REF (вивід 1).

Вивід

Сигнал

1

VCC_REF (+1.8 В)

2

TMS (SWDIO)

3

+1.8 В

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 при зміні стану, тому підключіть зворотний виклик IRQ, який фіксує новий стан кнопок. Кнопки активні-низькі на розширювачі; код нижче застосовує XOR із 0xFF, тому встановлений біт у state означає натиснуто:

Біт

Напрямок

0x01

Джойстик вправо

0x02

Джойстик вгору

0x04

Джойстик вліво

0x08

Джойстик вниз

0x10

Центральне натискання джойстика

0x40

Перемикач увімкнення OLED (встановлений у 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())