AE3 OLED Breakout¶
Плата AE3 OLED Breakout объединяет OpenMV AE3 с RGB OLED-дисплеем 128 × 128, 5-позиционным джойстиком и 10-контактным разъёмом ARM SWD для автономного предпросмотра, простого ввода и отладки JTAG/SWD.
Полную спецификацию, фотографии и информацию для заказа смотрите на странице продукта AE3 OLED Breakout.
Основные особенности¶
RGB OLED 128 × 128, управляемый контроллером SSD1351 по шине SPI.
5-позиционный джойстик AS90R с центральной кнопкой, выведенный на шину I²C
P4/P5.Кнопка сброса и переключатель восстановления для доступа к UART защищённого анклава.
Переключатель отключения OLED для электрического отсоединения панели от шины SPI.
Два разъёма Qwiic на той же шине I²C
P4/P5.Разъём ARM 10-pin Cortex Debug для отладки SWD/JTAG.
Четыре контрольные точки подключения к земле.
Примечание
Четыре угловых монтажных отверстия M1.6 позволяют прикрепить плату к корпусу или приспособлению.
Назначение выводов¶
Все сигналы AE3 на плате берутся с разъёма B2B на нижней стороне AE3 и выводятся на два боковых разъёма — P0–P5 с одной стороны и P6–P9 с другой — оба с опорным напряжением 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,3 В |
— |
— |
Питает OLED, расширитель джойстика и устройства Qwiic |
Шина GND |
— |
— |
Общая земля |
Примечание
Переключатель восстановления переключает внутренний USB-мультиплексор на AE3: собственные USB-выводы AE3 отсоединяются от порта USB-C, и вместо них к порту подключается преобразователь USB-в-последовательный порт на UART защищённого анклава. При включённом переключателе инструменты Alif на стороне хоста могут взаимодействовать с защищённым анклавом для перепрошивки загрузчика AE3. Для нормальной работы оставьте переключатель выключенным, чтобы порт USB-C работал как USB AE3.
Примечание
Переключатель включения OLED должен быть включён для работы OLED — он подаёт питание на панель и подключает управляющие выводы OLED (P0, P2, P3, P7, P8) к GPIO AE3. При выключенном переключателе подключёнными остаются только P4, P5 и P9. Текущее состояние переключателя отображается на расширителе джойстика как бит 0x40 — необработанный вывод расширителя читается как низкий уровень, когда переключатель включён.
Разъёмы Qwiic¶
На плате расположены два разъёма Qwiic 4-pin JST-SH 1,0 мм, которые используют ту же шину I²C P4/P5, что и встроенный расширитель джойстика, поэтому дополнительные устройства Qwiic не должны использовать адрес расширителя джойстика (0x63).
Вывод |
Сигнал |
|---|---|
1 |
GND |
2 |
+3,3 В |
3 |
SDA ( |
4 |
SCL ( |
Разъём 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 |
ключ (нет вывода) |
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 означает нажато:
Бит |
Направление |
|---|---|
|
Джойстик вправо |
|
Джойстик вверх |
|
Джойстик влево |
|
Джойстик вниз |
|
Нажатие центра джойстика |
|
Переключатель включения 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())