metronome/hardware/DESIGN.md
Me Here eef535f9ef DESIGN: route LCD TE pin on production face for tear-free updates
ST7796S datasheet §10.8: panel rescans GRAM at 60Hz; tear-free writes require feeding
the TE output back to the MCU and writing during vblank. EP-0172 prototype wires no TE,
so large updates tear (small writes hide it — why MP/CP look clean). Add TE (e.g. GP4)
+ optional MISO to the face interconnect for the production board.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 13:04:42 -05:00

13 KiB
Raw Permalink Blame History

PM_K-1 Core Board ("brain") — design-of-record

VARASYS PolyMeter · heirloom pro-audio · modular brain/face architecture Status: design-of-record / pre-layout. Component selection complete; PCB routing is the remaining interactive step (see Open items).


1. Philosophy

This is meant to be a device people hand down to their great-grandkids. The core board carries all the active electronics and is specced to pro/audiophile tier with longevity and serviceability as first-class goals. We do not value-engineer the audio path.

The user selects the face/enclosure/connector components; this document specs only the core.

2. Architecture — modular brain/face

  • Core ("brain"): RP2350 + power + RTC + the full pro-audio analog chain + control logic. One core design is reused across every form factor.
  • Face ("form factor"): display, touch, joystick, buttons, LED, speaker, the physical audio/MIDI connectors, panel switches, enclosure. The core never decides connector type.
  • Two interconnects, deliberately separate (§7):
    1. a digital ribbon whose pinout mirrors the Raspberry Pi Pico, so a stock Pico/Pico 2 on a test adapter can drive any face board for bring-up;
    2. an analog interconnect (+ a small MIDI interconnect) kept physically away from the fast digital ribbon, because a balanced audio signal must never run parallel to the 24 MHz display SPI.

3. Block diagram

USB-C 5V ─┬─► 3V3 LDO ──────────────────────► RP2350 (core reg + ext L) + W25Q128 16MB + RV-8803 RTC(+CR2032)
          │                                            │ I²S + low-jitter MCLK
          └─► TPS65131 ±18V ─► TPS7A49/30 LDO ─► clean ±15V          ▼
                                                          PCM5102A DAC ──► [summing: click + input]
                                                                                    │
  bal IN ─[ESD/DC-block/clamp/series-R]─► [LINE/INST relay] ─┬─ THAT1240 receiver ──┘
  (analog interconnect)                                      └─ OPA1641 Hi-Z DI buffer (+gain)
                                                                                    │
                                              THAT1646 balanced driver ─[47Ω build-out]─► [MUTE relay]─► bal OUT
                                                                                    shield ─[panel SW]─[GND-LIFT relay]─ gnd
  sig/clip peak detect ─► LM393 ─► RP2350 GPIO (UI) + LED lines (interconnect)
  RP2350 UART ─► [DNP: H11L1 opto IN + 74LVC14 buffer OUT] ─► MIDI interconnect   (USB-MIDI = default)

4. Functional blocks

4.1 MCU + digital

  • RP2350A (QFN-60, 30 GPIO). Chosen over RP2040 as the newest in-house part: dual M33+RISC-V, 520 KB RAM, secure boot, longest production runway. Firmware runs unchanged.
    • Erratum E9: high-impedance inputs can latch — every input we read (face switches, buttons) gets an external pulldown, never relies on the internal pad alone.
    • Core supply via the RP2350 on-chip switched-mode regulator (external inductor); 3V3 IO from an external LDO (AP2112K-3.3 / TLV75533).
  • Flash: Winbond W25Q128JV (16 MB) — genuine part; the CircuitPython appliance bundles the editor + tracks on a USB drive. Firmware does wear-leveling for history.json.
  • Crystal: 12 MHz ±30 ppm.
  • Debug/service: SWD 2×5 Cortex-Debug header + labeled test points (rails, I²S, audio nodes).

4.2 Click source (DAC)

  • TI/Burr-Brown PCM5102A I²S DAC — reliability-first, widely stocked for future repair.
  • Fed by a dedicated low-jitter audio oscillator (22.5792/24.576 MHz MEMS XO), not an MCLK jittered out of the RP2350 PIO — jitter is audible as a raised noise floor.

4.3 Analog audio chain (the heart)

  • Input (balanced, switchable line/instrument):
    • Line mode: THAT1240 laser-trimmed balanced receiver (~high CMRR, no hand-matched resistors).
    • Instrument mode: OPA1641 JFET Hi-Z buffer (≥1 MΩ) + ~+1015 dB gain (active DI).
    • Selected by a gold-contact signal relay on the core (1 GPIO; touchscreen toggle, optional face panel switch on a separate GPIO input).
    • Protection (non-negotiable): series DC-blocking film cap (blocks +48 V phantom — the real input-killer), clamp diodes/TVS to the rails, series current-limit resistor. A wrong-mode plug then only sounds wrong; nothing is damaged.
  • Mix: digital/firmware (touchscreen). Analog stage at unity; click level set via the DAC.
  • Output driver: THAT1646 balanced line driver, 47 Ω build-out per leg for cable-capacitance stability and short-circuit tolerance (§5.1).
  • No electrolytics in the signal path — film coupling caps (WIMA). 0.1 % thin-film resistors.

4.4 Output protection / conditioning

  • Power-up/down mute relay — fail-safe, de-energized = muted (shorts hot+cold to gnd). A hardware rail supervisor + RC turn-on delay un-mutes only after ±15 V settles; on power loss the coil drops and mutes faster than the rails can thump. Not MCU-dependent. The MCU can also assert mute (for clean line/inst flips and DAC reconfig).
  • Ground-lift — both a face panel switch and a core GPIO relay, wired in series in the shield-ground path: bonded only when both closed, either opening lifts it. Soft lift = 100 Ω ∥ 10 nF (not a hard open) so RF/safety keeps a path.

4.5 RTC

  • Micro Crystal RV-8803 (integrated 32.768 kHz crystal → no second crystal near the RP2350's own) + CR2032 in a socketed holder. Shares the touch I²C bus (no extra GPIO). Drift is irrelevant for a practice-log timestamp; reliability and zero-fuss layout win.

4.6 MIDI (default USB, hardware optional)

  • USB-MIDI is the default and already in firmware — IN/OUT/THRU are software routing to a computer/tablet host. Zero extra parts.
  • Dedicated DIN/TRS MIDI is a DNP populate-option: the RP2350 UART lines route to the MIDI interconnect with H11L1 opto IN + 74LVC14 buffered OUT/THRU footprints left unpopulated. A "stage" face can populate them for laptop-free hardware sync. (USB-MIDI can't peer-to-peer with standalone DIN gear — the device is a USB peripheral, not a host — which is why the hardware option stays available.) Analog pulse/clock sync: not included (MIDI only).

4.7 Monitor speaker

  • DNP-optional class-D amp (PAM8302) footprint on the core; speaker +/- routed on the analog interconnect. Populated only for form factors that want a built-in monitor.

5. The five remaining pro details (decided)

5.1 Output impedance & level calibration

  • THAT1646 source impedance is near-zero; 47 Ω build-out resistors per leg give stable driving into long/capacitive cables and survive a shorted output.
  • Level calibration: a 25-turn precision trimmer (Bourns 3296W) in the driver gain network, factory-set so DAC full-scale → +4 dBu nominal, leaving ~+24 dBu peak headroom on ±15 V. Set-and-forget on the core; not a face control.

5.2 Signal / clip indication

  • A peak detector (Schottky + hold cap) on the input (signal-present, ~40 dBu) and on the driver-input/summing node (clip, within ~3 dB of rail) feeds an LM393 dual comparator.
  • Comparator outputs go to RP2350 GPIOs (clip/signal shown on the touchscreen) and are mirrored to SIG/CLIP LED drive lines on the digital interconnect so a face can fit discrete LEDs.

5.3 ESD / EMI hardening

  • USB-C: USBLC6-2SC6 (or TPD4E05U06) ESD array on D±/CC/VBUS; common-mode choke on the data pair; shell bonded to chassis via RC; ferrite + TVS + bulk on VBUS.
  • Interconnects: ~33 Ω series on fast SPI lines for edge-rate control; ESD clamp arrays on any line reaching a user-touchable cable; interleaved ground pins; ferrite beads where 3V3/5V cross into the analog domain.
  • Board: full ground planes + stitching vias; the boost/inverter switcher lives in a guarded corner away from the analog section; analog/digital grounds meet at a single star point.
  • Heirloom option: conformal coating for humidity/longevity (build-time choice).

5.4 Chassis / strain-relief (core-side)

  • 4× M3 mounting holes with keep-outs; a dedicated chassis-ground pad/pin.
  • Through-hole-anchored USB-C jack (SMD-only tabs shear off with cable wiggle — unacceptable for a 50-year device).
  • Shrouded, keyed, latching interconnect headers (can't insert backward or vibrate loose).
  • Panel strain-relief and connector mounting live on the face/enclosure.

5.5 Interconnect pinout — see §7.

6. Power tree

Rail Source Part Notes
+5 V USB-C VBUS ferrite + TVS + bulk
+3V3 (IO) LDO from 5 V AP2112K-3.3 / TLV75533 digital domain
+1.1 V core RP2350 internal SMPS (external inductor) per RP2350 ref
±18 V (raw) dual boost/inverter from 5 V TPS65131 switcher, guarded corner
±15 V (clean) ultra-low-noise LDO TPS7A4901 (+) / TPS7A3001 () feeds all audio op-amps

7. Interconnect pinouts

7.1 Digital ribbon — 2×13 (26-pin) IDC, Pico-pinout-compatible

Grounds interleaved around SPI. A Pico/Pico 2 test adapter maps these to the listed GP.

Pin Signal GP Pin Signal GP
1 +5V 2 GND
3 +3V3 4 GND
5 SPI_SCK GP2 6 GND
7 SPI_MOSI GP3 8 LCD_CS GP5
9 LCD_DC GP6 10 LCD_RST GP7
11 GND 12 I2C_SDA GP8
13 I2C_SCL GP9 14 GND
15 JOY_X (ADC0) GP26 16 JOY_Y (ADC1) GP27
17 BTN_A GP15 18 BTN_B GP14
19 WS2812 GP12 20 GND
21 GNDLIFT_SW (in) GP21 22 LINEINST_SW (in) GP22
23 SIG_LED GP19 24 CLIP_LED GP20
25 GND 26 GND

I²S (BCK/LRCK/DOUT), the relays (line/inst route GP16, mute GP18, gnd-lift GP17), and MCLK stay on-core — they are not on the ribbon. A Pico test brain drives the digital/face I/O above but cannot drive the analog chain (DAC/op-amps are core-only).

Display TE line — route it on the production face. The table above mirrors the EP-0172 prototype, which wires only SCK/MOSI/CS/DC/RST and no TE (tearing-effect) output. Per the ST7796S datasheet §10.8, the panel rescans its frame memory to the glass at 60 Hz and the only sanctioned way to avoid tearing is to feed the TE output back to the MCU and write during vblank (tvdh). Without it, large updates tear and only small sub-region writes hide it (this is why MicroPython/CircuitPython, which draw glyph-by-glyph, look clean and the Rust full-frame blits don't). Add the LCD TE pin to a spare GPIO (e.g. GP4) on the face interconnect — and optionally LCD MISO/SDO for GSCAN(45h)/status reads. Then firmware can do TEON(35h)+vblank-synced writes and be fully tear-free even on full repaints.

7.2 Analog audio interconnect — 2×5 (10-pin), twisted/shielded, away from digital

Pin Signal Pin Signal
1 AOUT_HOT 2 AGND
3 AOUT_COLD 4 CHASSIS/SHIELD (face side of ground-lift)
5 AIN_HOT 6 AGND
7 AIN_COLD 8 SPK+ (DNP)
9 AGND 10 SPK (DNP)

7.3 MIDI interconnect — 1×6, only if DNP MIDI populated

Pin Signal
1 MIDI_OUT_A (TRS-A tip/ring leg)
2 MIDI_OUT_B
3 MIDI_IN_A (to opto)
4 MIDI_IN_B
5 +5V (OUT drive)
6 GND / shield

8. BOM

Full part list with manufacturer numbers and rough costs in hardware/BOM.csv. Headline parts: RP2350A · W25Q128JV · PCM5102A · THAT1240 + THAT1646 · OPA1641 · OPA1612 · TPS65131 + TPS7A4901/3001 · RV-8803 · USBLC6-2SC6 · 3× Panasonic TQ2SA gold-contact relays · H11L1 (DNP).

9. Manufacturing

  • PCB: ENIG (gold) finish — non-negotiable for decades of reliable contacts/solderability.
  • Assembly: JLCPCB/PCBWay PCBA, ~5-board prototype minimum; ~$80200 first run. Core parts cost ~$2540/board one-off (pro op-amps + relays dominate), trending toward ~$1520 at qty 100.
  • Most expensive items are the THAT audio ICs and the relays — that's where "heirloom" lives.

10. Open items

  • PCB layout/routing is the interactive next step — placement, controlled-impedance USB pair, star ground, switcher isolation, copper pours, DRC. The KiCad project under hardware/kicad/ is a documented schematic canvas + design-of-record; symbol placement and wiring happen in Eeschema. kicad-cli is used here for ERC and PDF export verification.
  • Confirm the exact 3.5" ST7796/GT911 panel connector (FPC vs header) before finalizing the face.
  • Decide MIDI connector (TRS-MIDI Type-A vs DIN-5) per form factor — face decision.