Phase 1 — In Progress
RP2350 + CYW43439 — v1.0.0
GPIO Pinout
Pico 2W — Physical Pin Layout
SPI
I2C
I2S Mic
NeoPixel
Encoder
Buttons
WiFi
ADC
Power
Task Tracker
Wiring Checklist
Bottleneck Analysis
SPI Display Refresh
135×240 RGB565 = 64,800 bytes/frame · @ 40MHz SPI = ~1.3ms per full redraw · DMA frees CPU · Risk: Full-screen redraws block SPI bus
1.3 ms/frame
I2S Audio Throughput
48kHz × 32-bit = 192 KB/s continuous · DMA double-buffer: 2 × 16KB = 32KB · CPU must process buffer in <85ms · Risk: WiFi TX stalls starve DMA refill
192 KB/s
SRAM Budget
Audio buffers: 32 KB · Display sprite: 108 KB · WiFi TX queue: 8 KB · State + stack: ~82 KB · Total: ~231 KB / 520 KB
289 KB free
WiFi Streaming
Audio @ 192 KB/s needs reliable TCP/UDP · CYW43439 SPI @ 33MHz (internal) · Contention: WiFi SPI shares IRQ time · Mitigation: Opus compression → ~16 KB/s
~16 KB/s target
I2C Bus Load
DRV2605L: Burst writes only (haptic events) · TLV493D: 6 bytes @ 20ms = 300 B/s · Combined: <1% bus utilization @ 400kHz · No contention risk
<1% load
Power Budget
RP2350 active: ~25 mA · CYW43439 TX: ~240 mA peak · TFT backlight: ~20 mA · Total peak: ~300 mA · TPS61023: 1.2A max → OK
~300 mA peak
Bus Conflict Analysis
▾
| Bus | Pins | Peripheral | Type | Status |
|---|
Workspace
Files
-
▼ firmware/
- 📄 main.cpp
- 📄 display.cpp
- 📄 sensors.cpp
- 📄 inputs.cpp
- 📄 wifi.cpp
-
▼ include/
- 📄 pinmap.h
- 📄 config.h
Pipeline: hardware_prototype · 0 errors · 5 nodes · 8 edges Engine: SlothDB · runtime: ready