AE3 OLED 擴充板

AE3 OLED 擴充板將 OpenMV AE3 與一塊 128 × 128 RGB OLED、一個 5 向搖桿,以及一個 10 針 ARM SWD 接頭結合,可進行獨立預覽、簡易輸入與 JTAG/SWD 除錯。

AE3 OLED 擴充板

完整的資料表、照片與訂購資訊請參閱 AE3 OLED 擴充板產品頁面

重點特色

  • 128 × 128 RGB OLED,透過 SPI 由 SSD1351 控制器驅動。

  • AS90R 5 向搖桿,含中央按壓按鈕,接於 P4/P5 I²C 匯流排上。

  • 重置按鈕復原開關,用於安全飛地(secure enclave)UART 存取。

  • OLED 斷開開關,可在電氣上將面板從 SPI 匯流排移除。

  • 兩個 Qwiic 連接器,位於相同的 P4/P5 I²C 匯流排上。

  • ARM 10 針 Cortex Debug 接頭,用於 SWD/JTAG 除錯。

  • 四個接地勾測試點。

備註

四個角落的 M1.6 安裝孔,可將擴充板鎖固至外殼或夾具上。

接腳對照

擴充板上所有 AE3 訊號皆取自 AE3 底部的 B2B 接頭,並引出至兩側的針腳排——一側為 P0P5,另一側為 P6P9——兩者皆 以 3.3 V 為參考電位。每個接腳完整的替代功能清單可見於 OpenMV AE3 頁面;擴充板對這些接腳的使用方式如下:

接腳

參考電位

AE3 功能

擴充板用途

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 電源軌

共用接地

備註

復原開關 會切換 AE3 上的內部 USB 多工器:AE3 本身的 USB 接腳會與 USB-C 埠斷開,改由安全飛地 UART 上的 USB 轉序列轉換器連接至該埠。當此開關啟用時,主機端的 Alif 工具便可與安全飛地通訊,以重新燒錄 AE3 的開機載入程式。一般操作時請讓此開關保持 停用,使 USB-C 埠作為 AE3 的 USB。

備註

OLED 啟用開關 必須開啟 OLED 才能運作——它控管面板的供電,並將 OLED 控制接腳(P0P2P3P7P8)連通至 AE3 的 GPIO。當此開關關閉時,僅 P4P5P9 維持連通。目前的開關狀態會顯示於搖桿擴充器的 0x40 位元上——當開關啟用時,原始擴充器接腳讀取為 低態

Qwiic 接頭

擴充板上有兩個 Qwiic 4 針 JST-SH 1.0 mm 連接器,與板載搖桿擴充器共用相同的 P4/P5 I²C 匯流排,因此額外的 Qwiic 裝置必須避開搖桿擴充器的位址(0x63)。

接腳

訊號

1

GND

2

+3.3 V

3

SDA(P5

4

SCL(P4

JTAG 接頭

擴充板上的 10 針 1.27 mm ARM Cortex Debug 接頭直接連接至 AE3 的 SWD/JTAG 線路。所有訊號皆 以 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

鍵位(無接腳)

8

TDI

9

GND

10

DEBUG_RST_N(JTAG/除錯重置——與系統 NRST 分開)

用法

透過 display.SPIDisplay 搭配一個 SSD1351 控制器實例來驅動 OLED。將相機影格串流至 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())

透過凍結的 pca9674a.PCA9674A 驅動程式讀取 5 向搖桿。擴充器會在狀態改變時拉動 P9,因此請接上一個 IRQ 回呼函式來鎖存新的按鈕狀態。按鈕在擴充器上為低態有效;以下程式碼將讀取值與 0xFF 做 XOR 運算,因此 state 中設定的位元代表 已按下

位元

方向

0x01

搖桿右

0x02

搖桿上

0x04

搖桿左

0x08

搖桿下

0x10

搖桿中央按壓

0x40

OLED 啟用開關(OLED 啟用時於 state 中設定)

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())