d103b2732c
- BOM with LCSC part numbers for PCBWay assembly - Hand-solder module sources (RP2040-Zero, OLED) - Design doc with block diagram, specs, GPIO pinout - Panel layout concept for 6 HP
4.1 KiB
4.1 KiB
SN-L00 Design Document
Overview
The SN-L00 is a 6 HP Eurorack module that measures round-trip latency in audio/CV signal chains.
Block Diagram
+12V ──┬── LDO ──── 3.3V ──── RP2040-Zero ──── OLED Display
│ │ │
│ │ └── I2C (SDA/SCL)
│ │
GND ───┴──────────────────────────┤
│
┌───────────────────┼───────────────────┐
│ │ │
TRIG OUT RETURN IN BUTTON
│ │ │
74LVC1G17 MCP6001 Tactile
(buffer) (buffer) switch
│ │
▼ ▼
3.5mm Jack 3.5mm Jack
Signal Flow
Trigger Output
- RP2040 GPIO generates 5ms pulse (configurable)
- 74LVC1G17 Schmitt buffer cleans edge, provides drive strength
- Output: 0-3.3V trigger compatible with Eurorack gate inputs
Return Input
- Eurorack signal (0-5V typical, can be ±5V audio)
- Protection diodes clamp to 3.3V rail
- MCP6001 op-amp buffers signal
- Voltage divider if needed for >3.3V signals
- RP2040 GPIO reads with internal Schmitt trigger
Measurement
- RP2040 starts timer on trigger output rising edge
- Timer stops on return input rising edge
- Latency = timer count × timer resolution
- Display updates with result in ms
Specifications
| Parameter | Value |
|---|---|
| Width | 6 HP (30.00mm) |
| Depth | <25mm (skiff-friendly) |
| Power +12V | ~20mA |
| Power -12V | 0mA (not used) |
| Trigger output | 0-3.3V, 5ms default |
| Input threshold | ~1.5V (adjustable in firmware) |
| Resolution | <10μs (RP2040 @ 125MHz) |
| Range | 0.01ms - 999ms |
| Display | 128x32 OLED, I2C |
Operating Modes
Mode 1: Single Shot
- Press button to trigger measurement
- Display shows result until next measurement
- LED blinks on trigger
Mode 2: Continuous
- Hold button 2s to enter continuous mode
- Triggers every 500ms, displays live reading
- Shows min/max/average
- Press button to exit
Mode 3: Statistics
- After measurements, short press cycles through:
- Last reading
- Minimum
- Maximum
- Average (last 10)
Panel Layout (6 HP)
┌─────────────────────┐
│ SN-L00 │
│ │
│ ┌───────────┐ │
│ │ OLED │ │
│ │ 12.4 ms │ │
│ └───────────┘ │
│ │
│ [BTN] │
│ │
│ ○ OUT ○ IN │
│ TRIG RETURN │
│ │
│ ● PWR │
└─────────────────────┘
Firmware Architecture
main.c
├── init_gpio() # Configure pins
├── init_i2c() # OLED communication
├── init_timer() # High-resolution timer
│
├── trigger_pulse() # Generate output pulse
├── wait_for_return() # Monitor input with timeout
├── calculate_latency() # Timer math
│
├── display_update() # OLED rendering
├── button_handler() # Mode switching
└── main_loop() # State machine
GPIO Assignments (RP2040-Zero)
| GPIO | Function | Notes |
|---|---|---|
| GP0 | I2C SDA | OLED |
| GP1 | I2C SCL | OLED |
| GP2 | Trigger Out | Via 74LVC1G17 |
| GP3 | Return In | Via MCP6001 |
| GP4 | Button | Internal pullup |
| GP5 | Power LED | Optional |
Future Expansion Ideas
- CV output proportional to latency
- MIDI output (latency as CC)
- USB logging to computer
- Multiple trigger patterns (burst, random)
- Frequency response mode (sweep test)