Hardware: MIDI 1 in + 3 hardwired mirror out jacks
One UART0 TX fans to 3 identical TRS-A output jacks (J4/J5/J6) via a shared MIDI_TX node — a hardwired MIDI-thru splitter for cabling convenience, no per-jack channel separation. Refdes cascade: CV outs shift J5-J8 -> J7-J10, keypad header J9 -> J11. BOM jack count 6 -> 8.
This commit is contained in:
+30
-22
@@ -27,6 +27,7 @@ USB-C 5V ── BQ24075 (charger + power-path) ── SYS (~3.0-4.2 V)
|
|||||||
│
|
│
|
||||||
RP2040: PIO0 SPI ── RM2 | USB DP/DM ── USB-MIDI composite | UART0 ── MIDI TRS
|
RP2040: PIO0 SPI ── RM2 | USB DP/DM ── USB-MIDI composite | UART0 ── MIDI TRS
|
||||||
I2C0 ── keypad | SPI0 ── keypad LEDs | SPI1 ── DAC | I2C1 ── OLED + fuel gauge
|
I2C0 ── keypad | SPI0 ── keypad LEDs | SPI1 ── DAC | I2C1 ── OLED + fuel gauge
|
||||||
|
UART0 RX ── MIDI in (6N138) UART0 TX ── MIDI out (×3 mirror jacks)
|
||||||
GPIOs ── 4× tact + charge-status LED
|
GPIOs ── 4× tact + charge-status LED
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -125,13 +126,17 @@ comfortable; WiFi TX would push ~600 mA peak and halve battery life.
|
|||||||
- **Output protection:** 1 kΩ series + **bidirectional TVS** per output (outputs
|
- **Output protection:** 1 kΩ series + **bidirectional TVS** per output (outputs
|
||||||
swing negative) to TRS tip/ring.
|
swing negative) to TRS tip/ring.
|
||||||
|
|
||||||
## 5. MIDI TRS (3.5 mm) — 2 jacks (in + out), TRS-A wiring
|
## 5. MIDI TRS (3.5 mm) — 1 in + 3 mirror out, TRS-A wiring
|
||||||
|
|
||||||
- **In:** tip → 220 Ω → 6N138 optocoupler LED → cathode to ring. Transistor:
|
- **In (J3):** tip → 220 Ω → 6N138 optocoupler LED → cathode to ring.
|
||||||
collector to 3.3 V via 1 k pull-up → UART0 RX (GP1); emitter to GND; base
|
Transistor: collector to 3.3 V via 1 k pull-up → UART0 RX (GP1); emitter to
|
||||||
speed-up (1N4148 + 1 k). Isolated; powered from the input loop.
|
GND; base speed-up (1N4148 + 1 k). Isolated; powered from the input loop.
|
||||||
- **Out:** UART0 TX (GP0) → 220 Ω → tip; ring to 3.3 V. (3.3 V/220 Ω ≈ 15 mA,
|
- **Out (J4/J5/J6 — hardwired mirror):** UART0 TX (GP0) → 220 Ω series →
|
||||||
fine for MIDI-out LED.)
|
drives all 3 output jacks in parallel (tip = signal on each; ring = 3.3 V).
|
||||||
|
One TX, three identical outputs — a hardwired MIDI-thru/splitter. All 3
|
||||||
|
jacks emit byte-for-byte the same stream; the router decides what's on that
|
||||||
|
stream (per *port-type* routing), the 3 jacks are one logical "TRS out"
|
||||||
|
port fanned out for cabling convenience. No per-jack channel separation.
|
||||||
- TRS-A: tip = signal, ring = return (Korg / Make Noise convention).
|
- TRS-A: tip = signal, ring = return (Korg / Make Noise convention).
|
||||||
|
|
||||||
## 6. Display + UI
|
## 6. Display + UI
|
||||||
@@ -177,7 +182,7 @@ Host PCB responsibilities (from the RM2 datasheet):
|
|||||||
| +12 V boost | TPS61088 | QFN | 5→12 V, low-noise + LC filter |
|
| +12 V boost | TPS61088 | QFN | 5→12 V, low-noise + LC filter |
|
||||||
| −12 V inverter | TPS63700 | SOT-23-6 / QFN | 5→−12 V, low-noise + LC filter (LM2611 alt) |
|
| −12 V inverter | TPS63700 | SOT-23-6 / QFN | 5→−12 V, low-noise + LC filter (LM2611 alt) |
|
||||||
| Display | SSD1306 64×32 OLED | 0.42" I2C | — |
|
| Display | SSD1306 64×32 OLED | 0.42" I2C | — |
|
||||||
| Jacks | 6× 3.5 mm TRS | SMD | 2 MIDI + 4 CV stereo |
|
| Jacks | 8× 3.5 mm TRS | SMD | 1 MIDI in + 3 MIDI out (mirror) + 4 CV stereo |
|
||||||
| USB | USB-C receptacle | SMD | 5 V data + power |
|
| USB | USB-C receptacle | SMD | 5 V data + power |
|
||||||
| UI | 4× low-profile tact | SMD | Up/Down/Select/Back (no encoder) |
|
| UI | 4× low-profile tact | SMD | Up/Down/Select/Back (no encoder) |
|
||||||
| Debug | 2×3 SWD header | THT | Picoprobe first-flash |
|
| Debug | 2×3 SWD header | THT | Picoprobe first-flash |
|
||||||
@@ -250,9 +255,10 @@ at `hardware/netlist.net`.
|
|||||||
| DISP1 | SSD1306 | 64×32 OLED (I2C) |
|
| DISP1 | SSD1306 | 64×32 OLED (I2C) |
|
||||||
| J1 | USB-C | 5 V + USB data |
|
| J1 | USB-C | 5 V + USB data |
|
||||||
| J2 | 2×3 header | SWD (Picoprobe) |
|
| J2 | 2×3 header | SWD (Picoprobe) |
|
||||||
| J3, J4 | 3.5 mm TRS | MIDI in / out |
|
| J3 | 3.5 mm TRS | MIDI in |
|
||||||
| J5–J8 | 3.5 mm TRS | 4× stereo CV out |
|
| J4, J5, J6 | 3.5 mm TRS | MIDI out (×3 hardwired mirror) |
|
||||||
| J9 | 2×5 header | Pimoroni keypad |
|
| J7–J10 | 3.5 mm TRS | 4× stereo CV out |
|
||||||
|
| J11 | 2×5 header | Pimoroni keypad |
|
||||||
| SW1–SW4 | tact | UI (Up/Down/Select/Back) |
|
| SW1–SW4 | tact | UI (Up/Down/Select/Back) |
|
||||||
| FB1 | polyfuse | 5 V input protection |
|
| FB1 | polyfuse | 5 V input protection |
|
||||||
| L1, L2 | inductors | boost/inverter LC filters |
|
| L1, L2 | inductors | boost/inverter LC filters |
|
||||||
@@ -322,16 +328,16 @@ Rin=10.0 k, Rfb=48.7 k (ratio 4.87 → ±9.98 V span; firmware calibrates exact)
|
|||||||
One op-amp = 1/4 of an OPA4192 (U9 = ch1-4, U10 = ch5-8).
|
One op-amp = 1/4 of an OPA4192 (U9 = ch1-4, U10 = ch5-8).
|
||||||
|
|
||||||
```
|
```
|
||||||
Channel 1 (J5.tip = pitch, J5.ring = gate):
|
Channel 1 (J7.tip = pitch, J7.ring = gate):
|
||||||
U8.VOUTA ── Rin1a ── U9.1IN- ; Vdac into subtractor V-
|
U8.VOUTA ── Rin1a ── U9.1IN- ; Vdac into subtractor V-
|
||||||
VMID2V048 ── Rin1b ── U9.1IN+ ; mid-ref into V+
|
VMID2V048 ── Rin1b ── U9.1IN+ ; mid-ref into V+
|
||||||
U9.1OUT ── Rfb1 ── U9.1IN- ; feedback
|
U9.1OUT ── Rfb1 ── U9.1IN- ; feedback
|
||||||
Rgnd1 (48.7k) ── U9.1IN+ ── GND ; balance resistor
|
Rgnd1 (48.7k) ── U9.1IN+ ── GND ; balance resistor
|
||||||
U9.1OUT ── Rser1 (1k) ── D1 ── J5.tip
|
U9.1OUT ── Rser1 (1k) ── D1 ── J7.tip
|
||||||
U9.1OUT ── (rail) +12V / −12V ; OPA4192 supply
|
U9.1OUT ── (rail) +12V / −12V ; OPA4192 supply
|
||||||
Channel 2 (J5.ring): U8.VOUTB → U9.2... → J5.ring
|
Channel 2 (J7.ring): U8.VOUTB → U9.2... → J7.ring
|
||||||
...channels 3,4 → U9.3/4 → J6.tip/ring
|
...channels 3,4 → U9.3/4 → J8.tip/ring
|
||||||
...channels 5-8 → U10.1-4 → J7.tip/ring, J8.tip/ring
|
...channels 5-8 → U10.1-4 → J9.tip/ring, J10.tip/ring
|
||||||
```
|
```
|
||||||
Pattern repeats: VOUTx → Rin → subtractor → Rfb feedback, Rgnd on V+, output
|
Pattern repeats: VOUTx → Rin → subtractor → Rfb feedback, Rgnd on V+, output
|
||||||
→ 1 k series → TVS → TRS tip/ring. U9/U10 V+ = +12 V, V− = −12 V.
|
→ 1 k series → TVS → TRS tip/ring. U9/U10 V+ = +12 V, V− = −12 V.
|
||||||
@@ -345,9 +351,11 @@ MIDI in (J3):
|
|||||||
U11.OC-collector ── +3V3 via R_pull (1k) ── U1.GPIO1 (UART0 RX)
|
U11.OC-collector ── +3V3 via R_pull (1k) ── U1.GPIO1 (UART0 RX)
|
||||||
U11.OC-emitter ── GND
|
U11.OC-emitter ── GND
|
||||||
U11.base ── 1N4148 + 1k speed-up ── GND/+3V3 (per 6N138 app note)
|
U11.base ── 1N4148 + 1k speed-up ── GND/+3V3 (per 6N138 app note)
|
||||||
MIDI out (J4):
|
MIDI out — hardwired mirror (J4, J5, J6):
|
||||||
U1.GPIO0 (UART0 TX) ── R_lim (220Ω) ── J4.tip
|
U1.GPIO0 (UART0 TX) ── R_lim (220Ω) ── MIDI_TX node
|
||||||
J4.ring ── +3V3
|
MIDI_TX ── J4.tip ── J5.tip ── J6.tip ; one TX fans to all 3 tips
|
||||||
|
J4.ring ── J5.ring ── J6.ring ── +3V3 ; common return
|
||||||
|
(all 3 jacks emit byte-for-byte the same stream — no per-jack isolation)
|
||||||
```
|
```
|
||||||
|
|
||||||
### Display + UI + keypad
|
### Display + UI + keypad
|
||||||
@@ -357,10 +365,10 @@ DISP1.SDA ── U1.GPIO2 (I2C1 SDA) DISP1.SCL ── U1.GPIO3 (I2C1 SCL)
|
|||||||
DISP1.VDD ── +3V3 DISP1.GND ── GND
|
DISP1.VDD ── +3V3 DISP1.GND ── GND
|
||||||
SW1 ── U1.GPIO6 SW2 ── U1.GPIO7 SW3 ── U1.GPIO8 SW4 ── U1.GPIO9
|
SW1 ── U1.GPIO6 SW2 ── U1.GPIO7 SW3 ── U1.GPIO8 SW4 ── U1.GPIO9
|
||||||
(each SW: other side to GND; internal pull-up)
|
(each SW: other side to GND; internal pull-up)
|
||||||
Keypad header J9 (Pimoroni RGB Keypad):
|
Keypad header J11 (Pimoroni RGB Keypad):
|
||||||
J9.SDA ── U1.GPIO4 (I2C0 SDA) J9.SCL ── U1.GPIO5 (I2C0 SCL)
|
J11.SDA ── U1.GPIO4 (I2C0 SDA) J11.SCL ── U1.GPIO5 (I2C0 SCL)
|
||||||
J9.CS ── U1.GPIO17 J9.SCK ── U1.GPIO18 J9.MOSI ── U1.GPIO19
|
J11.CS ── U1.GPIO17 J11.SCK ── U1.GPIO18 J11.MOSI ── U1.GPIO19
|
||||||
J9.VDD ── +3V3 J9.GND ── GND
|
J11.VDD ── +3V3 J11.GND ── GND
|
||||||
```
|
```
|
||||||
|
|
||||||
### Spare GPIOs
|
### Spare GPIOs
|
||||||
|
|||||||
Reference in New Issue
Block a user