AE3 OLED Breakout¶
AE3 OLED Breakout kết hợp OpenMV AE3 với màn hình OLED RGB 128 × 128, joystick 5 hướng và header ARM SWD 10 chân để xem trước độc lập, nhập liệu đơn giản và gỡ lỗi JTAG/SWD.
Để xem datasheet đầy đủ, ảnh sản phẩm và thông tin đặt hàng, hãy truy cập trang sản phẩm AE3 OLED Breakout.
Điểm nổi bật¶
Màn hình OLED RGB 128 × 128 được điều khiển bởi bộ điều khiển SSD1351 qua SPI.
Joystick 5 hướng AS90R với nút nhấn trung tâm, được truy cập qua bus I²C
P4/P5.Nút Reset và công tắc recovery để truy cập UART enclave bảo mật.
Công tắc ngắt kết nối OLED để ngắt kết nối vật lý màn hình khỏi bus SPI.
Hai đầu nối Qwiic trên cùng bus I²C
P4/P5.Header ARM 10‑pin Cortex Debug cho gỡ lỗi SWD/JTAG.
Bốn điểm kiểm tra dạng móc nối đất.
Ghi chú
Bốn lỗ bắt vít M1.6 ở bốn góc cho phép bắt chặt breakout vào vỏ máy hoặc giá đỡ.
Tham chiếu chân¶
Tất cả các tín hiệu AE3 trên breakout được lấy từ header B2B ở mặt dưới của AE3 và đưa ra hai dãy chân bên — P0–P5 ở một bên, P6–P9 ở bên kia — cả hai đều tham chiếu 3,3 V. Danh sách đầy đủ các chức năng thay thế của từng chân nằm trên trang OpenMV AE3; breakout sử dụng các chân như sau:
Chân |
Tham chiếu |
Tính năng AE3 |
Sử dụng trên 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 |
tự do |
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 |
Joystick / Qwiic I²C SCL |
P5 |
3.3 V |
I2C1 SDA / UART1 RX / TIM2 T0 / PDM D0 / CAN RX |
Joystick / Qwiic I²C SDA |
RESET |
3.3 V |
NRST |
Nhấn nút RESET tích hợp hoặc kéo xuống GND để khởi động lại AE3 |
P6 |
3.3 V |
I2C1 SDA / UART3 CTS / TIM9 T0 |
tự do |
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 (chọn thanh ghi) |
P9 |
3.3 V |
I3C SCL / UART3 TX / TIM5 T1 / ADC ch S11 |
Joystick IRQ (mức thấp khi có thay đổi trạng thái) |
3.3V rail |
— |
— |
Cấp nguồn cho màn hình OLED, bộ mở rộng joystick và các thiết bị Qwiic |
GND rail |
— |
— |
Đất chung |
Ghi chú
Công tắc recovery chuyển đổi bộ ghép kênh USB nội bộ trên AE3: các chân USB của AE3 bị ngắt kết nối khỏi cổng USB‑C và bộ chuyển đổi USB‑sang‑serial trên UART enclave bảo mật được kết nối với cổng thay thế. Khi bật công tắc, các công cụ Alif từ máy tính có thể giao tiếp với enclave bảo mật để lập trình lại bootloader của AE3. Để tắt công tắc khi hoạt động bình thường để cổng USB‑C hoạt động như USB của AE3.
Ghi chú
Công tắc bật OLED phải được bật để màn hình OLED hoạt động — nó điều khiển nguồn cho màn hình và kết nối các chân điều khiển OLED (P0, P2, P3, P7, P8) với GPIO của AE3. Khi tắt công tắc, chỉ P4, P5 và P9 vẫn được nối qua. Trạng thái hiện tại của công tắc hiển thị trên bộ mở rộng joystick dưới dạng bit 0x40 — chân mở rộng thô đọc mức thấp khi bật công tắc.
Đầu nối Qwiic¶
Hai đầu nối Qwiic 4 chân JST‑SH 1,0 mm nằm trên breakout và dùng chung bus I²C P4/P5 với bộ mở rộng joystick tích hợp, vì vậy các thiết bị Qwiic bổ sung phải tránh địa chỉ của bộ mở rộng joystick (0x63).
Chân |
Tín hiệu |
|---|---|
1 |
GND |
2 |
+3.3 V |
3 |
SDA ( |
4 |
SCL ( |
Header JTAG¶
Header ARM Cortex Debug 10 chân 1,27 mm trên breakout được kết nối trực tiếp với các đường SWD/JTAG của AE3. Tất cả các tín hiệu đều tham chiếu 1,8 V — sử dụng đầu dò dịch mức hoặc đầu dò có điện áp đích theo VCC_REF (chân 1).
Chân |
Tín hiệu |
|---|---|
1 |
VCC_REF (+1.8 V) |
2 |
TMS (SWDIO) |
3 |
+1.8 V |
4 |
TCK (SWCLK) |
5 |
GND |
6 |
TDO (SWO) |
7 |
key (no pin) |
8 |
TDI |
9 |
GND |
10 |
DEBUG_RST_N (khởi động lại JTAG/debug — độc lập với NRST hệ thống) |
Sử dụng¶
Điều khiển màn hình OLED qua display.SPIDisplay với thực thể bộ điều khiển SSD1351. Truyền khung hình camera đến màn hình 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())
Đọc joystick 5 hướng qua driver đóng băng pca9674a.PCA9674A. Bộ mở rộng xác nhận P9 khi có thay đổi trạng thái, vì vậy hãy thiết lập hàm gọi lại IRQ để lưu trạng thái nút mới. Các nút ở mức thấp trên bộ mở rộng; đoạn code bên dưới XOR kết quả đọc với 0xFF sao cho bit được đặt trong state có nghĩa là đang nhấn:
Bit |
Hướng |
|---|---|
|
Joystick phải |
|
Joystick lên |
|
Joystick trái |
|
Joystick xuống |
|
Joystick nhấn giữa |
|
Công tắc bật OLED (được đặt trong |
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())