AE3 OLED 擴充板¶
AE3 OLED 擴充板將 OpenMV AE3 與一塊 128 × 128 RGB OLED、一個 5 向搖桿,以及一個 10 針 ARM SWD 接頭結合,可進行獨立預覽、簡易輸入與 JTAG/SWD 除錯。
完整的資料表、照片與訂購資訊請參閱 AE3 OLED 擴充板產品頁面。
重點特色¶
128 × 128 RGB OLED,透過 SPI 由 SSD1351 控制器驅動。
AS90R 5 向搖桿,含中央按壓按鈕,接於
P4/P5I²C 匯流排上。重置按鈕 與 復原開關,用於安全飛地(secure enclave)UART 存取。
OLED 斷開開關,可在電氣上將面板從 SPI 匯流排移除。
兩個 Qwiic 連接器,位於相同的
P4/P5I²C 匯流排上。ARM 10 針 Cortex Debug 接頭,用於 SWD/JTAG 除錯。
四個接地勾測試點。
備註
四個角落的 M1.6 安裝孔,可將擴充板鎖固至外殼或夾具上。
接腳對照¶
擴充板上所有 AE3 訊號皆取自 AE3 底部的 B2B 接頭,並引出至兩側的針腳排——一側為 P0–P5,另一側為 P6–P9——兩者皆 以 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 控制接腳(P0、P2、P3、P7、P8)連通至 AE3 的 GPIO。當此開關關閉時,僅 P4、P5 與 P9 維持連通。目前的開關狀態會顯示於搖桿擴充器的 0x40 位元上——當開關啟用時,原始擴充器接腳讀取為 低態。
Qwiic 接頭¶
擴充板上有兩個 Qwiic 4 針 JST-SH 1.0 mm 連接器,與板載搖桿擴充器共用相同的 P4/P5 I²C 匯流排,因此額外的 Qwiic 裝置必須避開搖桿擴充器的位址(0x63)。
接腳 |
訊號 |
|---|---|
1 |
GND |
2 |
+3.3 V |
3 |
SDA( |
4 |
SCL( |
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 中設定的位元代表 已按下:
位元 |
方向 |
|---|---|
|
搖桿右 |
|
搖桿上 |
|
搖桿左 |
|
搖桿下 |
|
搖桿中央按壓 |
|
OLED 啟用開關(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())