diff --git a/boards/SparkFun-MicroMod-RP2040-Processor/README.md b/boards/SparkFun-MicroMod-RP2040-Processor/README.md new file mode 100644 index 00000000..c4e840ed --- /dev/null +++ b/boards/SparkFun-MicroMod-RP2040-Processor/README.md @@ -0,0 +1,15 @@ +# SparkFun MicroMod RP2040 Processor + +Recreation of the [SparkFun MicroMod RP2040 Processor](https://www.sparkfun.com/products/17720) in tscircuit. + +## Features +- RP2040 dual-core ARM Cortex-M0+ microcontroller +- 128Mbit (16MB) external QSPI flash +- MicroMod M.2 edge connector interface +- Status LED +- 12MHz crystal oscillator + +## Reference +- [Product Page](https://www.sparkfun.com/sparkfun-micromod-rp2040-processor.html) +- [Schematic](https://cdn.sparkfun.com/assets/1/8/3/5/8/MicroMod-RP2040-ProcessorBoard_Schematic.pdf) +- [GitHub Hardware Repo](https://github.com/sparkfun/MicroMod_Processor-RP2040) diff --git a/boards/SparkFun-MicroMod-RP2040-Processor/RP2040.tsx b/boards/SparkFun-MicroMod-RP2040-Processor/RP2040.tsx new file mode 100644 index 00000000..e297a171 --- /dev/null +++ b/boards/SparkFun-MicroMod-RP2040-Processor/RP2040.tsx @@ -0,0 +1,147 @@ +import type { ChipProps } from "@tscircuit/props" + +const pinLabels = { + pin1: ["IOVDD1"], + pin2: ["GPIO0"], + pin3: ["GPIO1"], + pin4: ["GPIO2"], + pin5: ["GPIO3"], + pin6: ["GPIO4"], + pin7: ["GPIO5"], + pin8: ["GPIO6"], + pin9: ["GPIO7"], + pin10: ["IOVDD2"], + pin11: ["GPIO8"], + pin12: ["GPIO9"], + pin13: ["GPIO10"], + pin14: ["GPIO11"], + pin15: ["GPIO12"], + pin16: ["GPIO13"], + pin17: ["GPIO14"], + pin18: ["GPIO15"], + pin19: ["TESTEN"], + pin20: ["XIN"], + pin21: ["XOUT"], + pin22: ["IOVDD3"], + pin23: ["DVDD1"], + pin24: ["SWCLK"], + pin25: ["SWD"], + pin26: ["RUN"], + pin27: ["GPIO16"], + pin28: ["GPIO17"], + pin29: ["GPIO18"], + pin30: ["GPIO19"], + pin31: ["GPIO20"], + pin32: ["GPIO21"], + pin33: ["IOVDD4"], + pin34: ["GPIO22"], + pin35: ["GPIO23"], + pin36: ["GPIO24"], + pin37: ["GPIO25"], + pin38: ["GPIO26_ADC0"], + pin39: ["GPIO27_ADC1"], + pin40: ["GPIO28_ADC2"], + pin41: ["GPIO29_ADC3"], + pin42: ["IOVDD5"], + pin43: ["ADC_AVDD"], + pin44: ["VREG_VIN"], + pin45: ["VREG_VOUT"], + pin46: ["USB_DM"], + pin47: ["USB_DP"], + pin48: ["USB_VDD"], + pin49: ["IOVDD6"], + pin50: ["DVDD2"], + pin51: ["QSPI_SCLK"], + pin52: ["QSPI_SS"], + pin53: ["QSPI_SD0"], + pin54: ["QSPI_SD1"], + pin55: ["QSPI_SD2"], + pin56: ["QSPI_SD3"], + pin57: ["GND"], +} as const + +export const RP2040 = (props: ChipProps) => { + return ( + + {/* QFN-56 7x7mm package - pads around perimeter */} + {/* Bottom side - pins 1-14 */} + + + + + + + + + + + + + + + + {/* Right side - pins 15-28 */} + + + + + + + + + + + + + + + + {/* Top side - pins 29-42 */} + + + + + + + + + + + + + + + + {/* Left side - pins 43-56 */} + + + + + + + + + + + + + + + + {/* GND pad (center) */} + + + } + {...props} + /> + ) +} 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..256eaf58 --- /dev/null +++ b/boards/SparkFun-MicroMod-RP2040-Processor/SparkFun-MicroMod-RP2040-Processor.circuit.tsx @@ -0,0 +1,354 @@ +import { RP2040 } from "./RP2040" +import { W25Q128JV } from "./W25Q128JV" +import { sel } from "tscircuit" + +const MicroModRP2040Processor = () => ( + + {/* RP2040 Microcontroller */} + + + {/* 128Mbit QSPI Flash */} + + + {/* 12MHz Crystal Oscillator */} + + + {/* Crystal load capacitors */} + + + + {/* Power decoupling capacitors */} + + + + + + {/* 1.1V core voltage capacitor */} + + + {/* USB decoupling */} + + + {/* Flash decoupling */} + + + {/* Status LED with current limiting resistor */} + + + + {/* BOOT button pull-up resistor */} + + + {/* USB termination resistor */} + + + + {/* M.2 Edge Connector - simplified representation with key pins */} + + + {/* Silkscreen labels */} + + + + {/* Board mounting holes */} + + + + {/* Net labels for schematic clarity */} + + + + + + + + +) + +export default MicroModRP2040Processor diff --git a/boards/SparkFun-MicroMod-RP2040-Processor/W25Q128JV.tsx b/boards/SparkFun-MicroMod-RP2040-Processor/W25Q128JV.tsx new file mode 100644 index 00000000..a1f1bc32 --- /dev/null +++ b/boards/SparkFun-MicroMod-RP2040-Processor/W25Q128JV.tsx @@ -0,0 +1,58 @@ +import type { ChipProps } from "@tscircuit/props" + +const pinLabels = { + pin1: ["CS"], + pin2: ["DO_IO1"], + pin3: ["WP_IO2"], + pin4: ["GND"], + pin5: ["DI_IO0"], + pin6: ["CLK"], + pin7: ["HOLD_IO3"], + pin8: ["VCC"], +} as const + +export const W25Q128JV = (props: ChipProps) => { + return ( + + {/* SOIC-8 package */} + + + + + + + + + + {/* Silkscreen outline */} + + {/* Pin 1 indicator */} + + + } + {...props} + /> + ) +} diff --git a/boards/SparkFun-MicroMod-RP2040-Processor/index.tsx b/boards/SparkFun-MicroMod-RP2040-Processor/index.tsx new file mode 100644 index 00000000..60b9bf63 --- /dev/null +++ b/boards/SparkFun-MicroMod-RP2040-Processor/index.tsx @@ -0,0 +1,2 @@ +import MicroModRP2040Processor from "./SparkFun-MicroMod-RP2040-Processor.circuit.tsx" +export default MicroModRP2040Processor diff --git a/boards/SparkFun-MicroMod-RP2040-Processor/tscircuit.config.json b/boards/SparkFun-MicroMod-RP2040-Processor/tscircuit.config.json new file mode 100644 index 00000000..782f3950 --- /dev/null +++ b/boards/SparkFun-MicroMod-RP2040-Processor/tscircuit.config.json @@ -0,0 +1,3 @@ +{ + "mainEntrypoint": "./index.tsx" +}