From c83b850f42769c4b27c4518702f1df8dab0a5faf Mon Sep 17 00:00:00 2001 From: tungnguyentu Date: Fri, 15 May 2026 02:05:59 +0700 Subject: [PATCH] feat: add SparkFun MicroMod RP2040 Processor board MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implements the SparkFun MicroMod RP2040 Processor in the MicroMod M.2 Key E form factor (22.86mm × 22.86mm). Includes RP2040 QFN-56 MCU, W25Q128JV 128Mbit QSPI flash, 12MHz crystal, decoupling capacitors, USB series resistors, MicroMod 75-pin edge connector, and BOOT button with pull-up resistor. Closes #175 --- .../README.md | 43 ++ .../RP2040.tsx | 139 +++++++ ...kFun-MicroMod-RP2040-Processor.circuit.tsx | 376 ++++++++++++++++++ .../W25Q128JV.tsx | 30 ++ .../index.tsx | 3 + 5 files changed, 591 insertions(+) create mode 100644 boards/SparkFun-MicroMod-RP2040-Processor/README.md create mode 100644 boards/SparkFun-MicroMod-RP2040-Processor/RP2040.tsx create mode 100644 boards/SparkFun-MicroMod-RP2040-Processor/SparkFun-MicroMod-RP2040-Processor.circuit.tsx create mode 100644 boards/SparkFun-MicroMod-RP2040-Processor/W25Q128JV.tsx create mode 100644 boards/SparkFun-MicroMod-RP2040-Processor/index.tsx diff --git a/boards/SparkFun-MicroMod-RP2040-Processor/README.md b/boards/SparkFun-MicroMod-RP2040-Processor/README.md new file mode 100644 index 00000000..9c0d9868 --- /dev/null +++ b/boards/SparkFun-MicroMod-RP2040-Processor/README.md @@ -0,0 +1,43 @@ +# SparkFun MicroMod RP2040 Processor + +SparkFun product page: https://www.sparkfun.com/sparkfun-micromod-rp2040-processor.html + +## Overview + +The SparkFun MicroMod RP2040 Processor board features the Raspberry Pi RP2040 +dual-core ARM Cortex-M0+ microcontroller in the MicroMod M.2 Key E form factor. + +## Key Components + +| Reference | Part | Description | +|-----------|------|-------------| +| U1 | RP2040 | Dual-core ARM Cortex-M0+ MCU, QFN-56 | +| U2 | W25Q128JV | 128Mbit QSPI Flash, SOIC-8 | +| Y1 | 12 MHz Crystal | External oscillator for USB clock | +| J1 | M.2 Key E 75-pin | MicroMod edge connector to carrier board | + +## MicroMod Pin Mapping (RP2040 → M.2) + +| M.2 Signal | RP2040 GPIO | Function | +|-----------|-------------|---------| +| UART_TX1 | GPIO0 | UART TX | +| UART_RX1 | GPIO1 | UART RX | +| I2C_SDA | GPIO4 | I2C data | +| I2C_SCL | GPIO5 | I2C clock | +| SPI_CIPO | GPIO16 | SPI RX | +| SPI_CS | GPIO17 | SPI chip select | +| SPI_SCK | GPIO18 | SPI clock | +| SPI_COPI | GPIO19 | SPI TX | +| A0 | GPIO26/ADC0 | Analog input 0 | +| A1 | GPIO27/ADC1 | Analog input 1 | +| PWM0 | GPIO21 | PWM output 0 | +| PWM1 | GPIO22 | PWM output 1 | +| D0 | GPIO6 | Digital I/O | +| D1 | GPIO7 | Digital I/O | +| G0–G5 | GPIO8–13 | General purpose I/O | + +## Resources + +- [RP2040 Datasheet](https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf) +- [MicroMod Interface Specification](https://cdn.sparkfun.com/assets/learn_tutorials/1/2/0/6/SparkFun_MicroMod_Interface_v1.0_-_Pin_Descriptions.pdf) +- [SparkFun MicroMod Getting Started](https://learn.sparkfun.com/tutorials/getting-started-with-micromod) diff --git a/boards/SparkFun-MicroMod-RP2040-Processor/RP2040.tsx b/boards/SparkFun-MicroMod-RP2040-Processor/RP2040.tsx new file mode 100644 index 00000000..055ecc76 --- /dev/null +++ b/boards/SparkFun-MicroMod-RP2040-Processor/RP2040.tsx @@ -0,0 +1,139 @@ +import type { ChipProps } from "@tscircuit/props" + +const pinLabels = { + // GPIO and ADC (left side) + pin1: "IOVDD", + pin2: "GPIO0", + pin3: "GPIO1", + pin4: "GPIO2", + pin5: "GPIO3", + pin6: "GPIO4", + pin7: "GPIO5", + pin8: "GPIO6", + pin9: "GPIO7", + pin10: "GPIO8", + pin11: "GPIO9", + pin12: "GPIO10", + pin13: "GPIO11", + pin14: "GPIO12", + pin15: "GPIO13", + pin16: "GPIO14", + pin17: "GPIO15", + pin18: "GPIO16", + pin19: "GPIO17", + pin20: "GPIO18", + pin21: "GPIO19", + pin22: "GPIO20", + pin23: "GPIO21", + pin24: "GPIO22", + pin25: "GPIO23", + pin26: "GPIO24", + pin27: "GPIO25", + pin28: "GPIO26_ADC0", + pin29: "GPIO27_ADC1", + pin30: "GPIO28_ADC2", + pin31: "GPIO29_ADC3", + pin32: "ADC_AVDD", + pin33: "VREG_VIN", + pin34: "VREG_VOUT", + pin35: "USB_DM", + pin36: "USB_DP", + pin37: "USB_VDD", + pin38: "XIN", + pin39: "XOUT", + pin40: "SWCLK", + pin41: "SWD", + pin42: "RUN", + // QSPI flash interface + pin43: "QSPI_SD3", + pin44: "QSPI_SCLK", + pin45: "QSPI_SD0", + pin46: "QSPI_SD2", + pin47: "QSPI_SD1", + pin48: "QSPI_SS_N", + // Power + pin49: "DVDD", + pin50: "DVDD2", + pin51: "GND", + pin52: "GND2", + pin53: "IOVDD2", + pin54: "IOVDD3", + pin55: "IOVDD4", + pin56: "TESTEN", +} as const + +export const RP2040 = (props: ChipProps) => ( + +) diff --git a/boards/SparkFun-MicroMod-RP2040-Processor/SparkFun-MicroMod-RP2040-Processor.circuit.tsx b/boards/SparkFun-MicroMod-RP2040-Processor/SparkFun-MicroMod-RP2040-Processor.circuit.tsx new file mode 100644 index 00000000..404c2836 --- /dev/null +++ b/boards/SparkFun-MicroMod-RP2040-Processor/SparkFun-MicroMod-RP2040-Processor.circuit.tsx @@ -0,0 +1,376 @@ +import { sel } from "@tscircuit/core" +import { RP2040 } from "./RP2040" +import { W25Q128JV } from "./W25Q128JV" + +// RP2040 pin-number → signal name reference (QFN-56, datasheet Table 2) +// pin2=GPIO0 pin3=GPIO1 pin28=GPIO26/ADC0 pin29=GPIO27/ADC1 +// pin35=USB_DM pin36=USB_DP pin38=XIN pin39=XOUT pin42=RUN +// pin43=QSPI_SD3 pin44=QSPI_SCLK pin45=QSPI_SD0 +// pin46=QSPI_SD2 pin47=QSPI_SD1 pin48=QSPI_SS_N + +// MicroMod M.2 Key E edge connector (75-pin, SparkFun MicroMod spec v1.0) +const MicroModEdge = (props: any) => ( + +) + +const SparkFunMicroModRP2040Processor = () => ( + + {/* RP2040 dual-core ARM Cortex-M0+ MCU */} + + + {/* 128Mbit QSPI flash — connected via pins 43-48 (QSPI interface) */} + + + {/* 12 MHz crystal for USB PLL reference */} + + + {/* Crystal load capacitors (15 pF) */} + + + + {/* VREG output decoupling (pin34 = VREG_VOUT) */} + + + + {/* IOVDD / 3V3 bulk decoupling */} + + + + + {/* ADC supply decoupling (pin32 = ADC_AVDD) */} + + + {/* USB series resistors for signal integrity (27 Ω) */} + + + + {/* MicroMod M.2 Key E edge connector */} + + + {/* BOOT button — pulls BOOT net low to force USB bootloader */} + + + {/* 10 kΩ pull-up keeps BOOT high during normal operation */} + + + {/* Power net labels */} + + + + + + + + + +) + +export default SparkFunMicroModRP2040Processor diff --git a/boards/SparkFun-MicroMod-RP2040-Processor/W25Q128JV.tsx b/boards/SparkFun-MicroMod-RP2040-Processor/W25Q128JV.tsx new file mode 100644 index 00000000..70bfefad --- /dev/null +++ b/boards/SparkFun-MicroMod-RP2040-Processor/W25Q128JV.tsx @@ -0,0 +1,30 @@ +import type { ChipProps } from "@tscircuit/props" + +const pinLabels = { + pin1: "CS", + pin2: "DO", + pin3: "WP", + pin4: "GND", + pin5: "DI", + pin6: "CLK", + pin7: "HOLD", + pin8: "VCC", +} as const + +export const W25Q128JV = (props: ChipProps) => ( + +) diff --git a/boards/SparkFun-MicroMod-RP2040-Processor/index.tsx b/boards/SparkFun-MicroMod-RP2040-Processor/index.tsx new file mode 100644 index 00000000..3ebb6f02 --- /dev/null +++ b/boards/SparkFun-MicroMod-RP2040-Processor/index.tsx @@ -0,0 +1,3 @@ +import SparkFunMicroModRP2040Processor from "./SparkFun-MicroMod-RP2040-Processor.circuit" + +export default SparkFunMicroModRP2040Processor