abse/rp2350-mcu-board
This code defines a compact, four-layer PCB hardware layout for the Raspberry Pi RP2350A microcontroller module, including the main IC, power regulation, USB-C connector, STM32-compatible headers, and associated passive components, with detailed component footprints, net connections, and copper pour zones for powering and ground references.
- Version
- 0.0.11
- License
- unset
- Stars
- 0
index.circuit.tsx
PCB
Schematic
import { W25Q16JVUXIQ } from "./imports/W25Q16JVUXIQ"
import { SKRPACE010 } from "./imports/SKRPACE010"
import { TYPE_C_16PIN_2MD_073_ } from "./imports/TYPE_C_16PIN_2MD_073_"
import { AP2112K_3_3TRG1 } from "./imports/AP2112K_3_3TRG1"
import { XL_1608SURC_06 } from "./imports/XL_1608SURC_06"
import { XL_5050RGBC_2812B_S } from "./imports/XL_5050RGBC_2812B_S"
import { SN74AHCT1G125DBVR } from "./imports/SN74AHCT1G125DBVR"
import { SM04B_SRSS_TB_LF__SN_ } from "./imports/SM04B_SRSS_TB_LF__SN_"
import { SM06B_SRSS_TB_LF__SN_ } from "./imports/SM06B_SRSS_TB_LF__SN_"
import { RP2350AEssentialKiCadReference } from "./RP2350A_Essential_KiCad_Reference.circuit"
import { Fragment } from "react"
const gndLabel = { displayName: "GND", schDisplayLabel: "GND" } as const
const groundPlaneTraceProps = { ...gndLabel, thickness: "0.1mm" } as const
const v3v3Label = { displayName: "V3V3", schDisplayLabel: "V3V3" } as const
const vbusLabel = { displayName: "VBUS", schDisplayLabel: "VBUS" } as const
const denseTraceProps = { thickness: "0.1mm" } as const
const signalTraceProps = { thickness: "0.12mm" } as const
const powerTraceProps = { thickness: "0.3mm" } as const
const leftHeaderSignals = [
"V3V3_EN",
"V3V3",
"GPIO29_ADC3",
"GPIO28_ADC2",
"GPIO27_ADC1",
"GPIO26_ADC0",
"GND",
"GPIO25",
"GPIO24",
"GPIO23",
"GPIO22",
"GND",
"GPIO21",
"GPIO20",
"GPIO19",
"GND",
"GPIO18",
"GPIO17",
"GPIO16",
"RUN",
"SWDIO",
"SWCLK",
] as const
const rightHeaderSignals = [
"GPIO0",
"GPIO1",
"GND",
"GPIO2",
"GPIO3",
"GPIO4",
"GPIO5",
"GND",
"GPIO6",
"GPIO7",
"GPIO8",
"GPIO9",
"GND",
"GPIO10",
"GPIO11",
"GPIO12",
"GPIO13",
"GND",
"GPIO14",
"GPIO15",
"V3V3",
"VBUS",
] as const
const leftHeaderLabels = Object.fromEntries(
leftHeaderSignals.map((signal, index) => [
`pin${index + 1}`,
signal === "GND" ? `GND_${index + 1}` : signal.replace("GPIO", "GP"),
]),
)
const rightHeaderLabels = Object.fromEntries(
rightHeaderSignals.map((signal, index) => [
`pin${index + 1}`,
signal === "GND" ? `GND_${index + 1}` : signal.replace("GPIO", "GP"),
]),
)
/**
* Standalone RP2350A USB-C development board.
*
* The RP2350A symbol and QFN-60 footprint are imported from JLCPCB part
* C42411118. Its surrounding flash, crystal, reset, debug, and supply
* topology follows Raspberry Pi's RP2350 hardware design guidance, with a
* local 3.3 V regulator and physical headers for every GPIO and SWD signal.
*/
export const RP2350DevelopmentBoard = () => (
<board
title="RP2350A USB-C Development Board"
width="44mm"
height="64mm"
layers={4}
thickness="0.8mm"
allowBlindAndBuriedVias={false}
minTraceWidth="0.1mm"
defaultTraceWidth="0.12mm"
minViaHoleDiameter="0.2mm"
minViaHoleEdgeToViaHoleEdgeClearance="0.2mm"
minViaPadDiameter="0.45mm"
autorouterVersion="beta_pipeline9"
schAutoLayoutEnabled
>
<net name="GND" isGroundNet />
<net name="VBUS" isPowerNet nominalTraceWidth="0.3mm" />
<net name="V3V3" isPowerNet />
<net name="USB_DP_OUT" />
<net name="USB_DM_OUT" />
{/* Ground pour clears the automatically routed copper on inner1. */}
<copperpour
name="GND_PLANE_INNER1"
layer="inner1"
connectsTo="net.GND"
clearance="0.2mm"
boardEdgeMargin="0.3mm"
useThermalReliefs
/>
{/* One automatic routing pass; no stored copper paths or routing cache. */}
<autoroutingphase minTraceWidth="0.12mm" />
<schematicsheet
name="core"
displayName="RP2350 MCU and GPIO"
sheetIndex={0}
>
<schematicsection name="rp2350" displayName="RP2350A MCU" />
<schematicsection name="left_header" displayName="Left GPIO Header" />
<schematicsection name="right_header" displayName="Right GPIO Header" />
<schematicsection name="controls" displayName="Reset and Boot Controls" />
<schematicsection name="i2c" displayName="STEMMA QT I2C" />
<schematicsection name="spi" displayName="JST-SH SPI" />
<schematicsection name="debug" displayName="SWD Test Points" />
</schematicsheet>
<schematicsheet
name="interfaces"
displayName="Power, USB and Peripherals"
sheetIndex={1}
>
<schematicsection name="power" displayName="Power Regulation" />
<schematicsection name="decoupling" displayName="Supply Decoupling" />
<schematicsection name="usb" displayName="USB-C Interface" />
<schematicsection name="flash" displayName="QSPI Flash and Boot" />
<schematicsection name="clock" displayName="12 MHz Clock" />
<schematicsection name="status" displayName="Status and Test LEDs" />
</schematicsheet>
<RP2350AEssentialKiCadReference
name="MCU_CORE"
pcbX={0}
pcbY={0}
pcbRotation={180}
noConnectUnusedPins={false}
>
{/* Keep the QSPI boot circuit in the MCU routing scope. */}
<W25Q16JVUXIQ
name="U2"
schSheetName="interfaces"
schSectionName="flash"
pcbX={-6.5}
pcbY={12}
pcbRotation={270}
schX={-1}
schY={5.5}
schHeight={1}
/>
<SKRPACE010
name="U_BOOTSEL"
schSheetName="core"
schSectionName="controls"
schX={-12.56}
schY={-6.5}
pcbX={-11}
pcbY={16.5}
pcbRotation={180}
/>
<resistor
name="R_BOOT"
resistance="10k"
footprint="0402"
supplierPartNumbers={{ jlcpcb: ["C25744"] }}
schSheetName="interfaces"
schSectionName="flash"
schX={-4}
schY={3.5}
pcbX={-10}
pcbY={13}
pcbRotation={180}
/>
<capacitor
name="C_FLASH"
capacitance="100nF"
maxDecouplingTraceLength={5.5}
footprint="0402"
supplierPartNumbers={{ jlcpcb: ["C1525"] }}
schSheetName="interfaces"
schSectionName="flash"
schX={2}
schY={3.5}
schOrientation="vertical"
pcbX={-3.5}
pcbY={13.25}
pcbRotation={90}
/>
<testpoint
name="TP_SWCLK"
footprintVariant="pad"
padShape="circle"
padDiameter="1.1mm"
schSheetName="core"
schSectionName="debug"
schX={13}
schY={-5.7}
pcbX={9.5}
pcbY={-12}
/>
{/* BOOTSEL series protection; no manual copper path. */}
<resistor
name="R_BOOT_SERIES"
resistance="1kohm"
footprint="res_p0.8656mm_pw0.5657mm_ph0.54mm"
supplierPartNumbers={{ jlcpcb: ["C106235"] }}
tolerance="1%"
schSheetName="interfaces"
schSectionName="flash"
pcbX={-7}
pcbY={16.5}
/>
<trace name="QSPI_SS" from=".U1 > .QSPI_SS" to=".U2 > .CS" {...denseTraceProps} />
<trace name="QSPI_SD0" from=".U1 > .QSPI_SD0" to=".U2 > .pin5" {...denseTraceProps} />
<trace name="QSPI_SD1" from=".U1 > .QSPI_SD1" to=".U2 > .pin2" {...denseTraceProps} />
<trace name="QSPI_SD2" from=".U1 > .QSPI_SD2" to=".U2 > .pin3" {...denseTraceProps} />
<trace name="QSPI_SD3" from=".U1 > .QSPI_SD3" to=".U2 > .pin7" {...denseTraceProps} />
<trace name="QSPI_SCLK" from=".U1 > .QSPI_SCLK" to=".U2 > .CLK" {...denseTraceProps} />
<trace name="FLASH_VCC" from=".U2 > .VCC" to="net.V3V3" />
<trace name="FLASH_GND" from=".U2 > .GND" to="net.GND" thickness="0.1mm" />
<trace name="FLASH_EP" from=".U2 > .EP" to="net.GND" thickness="0.1mm" />
<trace name="C_FLASH_P" from=".C_FLASH > .pin1" to=".U2 > .VCC" thickness="0.1mm" />
<trace name="C_FLASH_G" from=".C_FLASH > .pin2" to="net.GND" thickness="0.1mm" />
<trace name="BOOT_PULLUP" from=".R_BOOT > .pin1" to=".U1 > .QSPI_SS" />
<trace name="BOOT_PULLUP_3V3" from=".R_BOOT > .pin2" to="net.V3V3" />
<trace name="BOOTSEL" from=".U_BOOTSEL > .pin1" to=".R_BOOT_SERIES > .pin1" />
<trace name="BOOTSEL_PROTECTED" from=".R_BOOT_SERIES > .pin2" to=".U1 > .QSPI_SS" />
<trace name="BOOTSEL_GND" from=".U_BOOTSEL > .pin3" to="net.GND" thickness="0.1mm" />
<trace name="SWCLK_TEST" from=".U1 > .SWCLK" to=".TP_SWCLK > .pin1" />
</RP2350AEssentialKiCadReference>
<pinheader
name="J_LEFT"
pinCount={22}
pitch="2.54mm"
gender="male"
footprint="pinrow22_p2.54mm"
pinLabels={leftHeaderLabels}
pcbPinLabels={leftHeaderLabels}
pcbX={-19}
pcbY={0}
pcbRotation={90}
schSheetName="core"
schSectionName="left_header"
schX={-12.5}
schY={1.5}
schWidth={1.055}
/>
<pinheader
name="J_RIGHT"
pinCount={22}
pitch="2.54mm"
gender="male"
footprint="pinrow22_p2.54mm"
pinLabels={rightHeaderLabels}
pcbX={19}
pcbY={0}
pcbRotation={90}
schSheetName="core"
schSectionName="right_header"
schX={10}
schY={1.5}
schWidth={0.77}
/>
<SKRPACE010 name="U_RUN" schSheetName="core" schSectionName="controls" schX={-9.44} schY={-6.5} pcbX={-6.4} pcbY={18} />
{/* Feather-compatible STEMMA QT / Qwiic I2C port. */}
<SM04B_SRSS_TB_LF__SN_
name="J_STEMMA_QT"
schSheetName="core"
schSectionName="i2c"
pcbX={0.8}
pcbY={28.5}
pcbRotation={180}
schX={0}
schY={-6.5}
/>
<SM06B_SRSS_TB_LF__SN_
name="J_SPI"
schSheetName="core"
schSectionName="spi"
pcbX={-8.55}
pcbY={28.5}
pcbRotation={180}
schX={6.5}
schY={-6.5}
/>
{/* USB-C receptacle, matching the Pico's USB 2.0 device-side topology. */}
<TYPE_C_16PIN_2MD_073_
name="J_USB"
pinAttributes={{ B8: { doNotConnect: true }, A8: { doNotConnect: true } }}
schSheetName="interfaces"
schSectionName="usb"
pcbX={1}
pcbY={-28}
schX={-11}
schY={5.5}
/>
<AP2112K_3_3TRG1
name="U_3V3"
schSheetName="interfaces"
schSectionName="power"
schHeight={0.6}
schX={-10}
schY={-4}
pcbX={9.5}
pcbY={-21}
/>
<resistor name="R_LDO_EN" resistance="100k" footprint="0402" supplierPartNumbers={{ jlcpcb: ["C25741"] }} schSheetName="interfaces" schSectionName="power" schX={-7} schY={-4} pcbX={6.8} pcbY={-18.9} pcbRotation={90} />
<resistor name="R_RUN" resistance="10k" footprint="0402" supplierPartNumbers={{ jlcpcb: ["C25744"] }} schSheetName="core" schSectionName="controls" schX={-6.5} schY={-6.5} pcbX={-10} pcbY={18} pcbRotation={90} />
<resistor name="R_CC1" resistance="5.1k" footprint="0402" supplierPartNumbers={{ jlcpcb: ["C25905"] }} schSheetName="interfaces" schSectionName="usb" schX={-13} schY={3.5} pcbX={-3.2} pcbY={-22.8} />
<resistor name="R_CC2" resistance="5.1k" footprint="0402" supplierPartNumbers={{ jlcpcb: ["C25905"] }} schSheetName="interfaces" schSectionName="usb" schX={-9.5} schY={3.5} pcbX={4.6} pcbY={-22.9} pcbRotation={270} />
<resistor name="R_PWR_LED" resistance="1k" footprint="0402" supplierPartNumbers={{ jlcpcb: ["C11702"] }} schSheetName="interfaces" schSectionName="status" schX={-3} schY={-4} pcbX={-7.5} pcbY={-17.8} pcbRotation={90} />
<XL_1608SURC_06
name="D_PWR"
color="red"
schSheetName="interfaces"
schSectionName="status"
schX={0}
schY={-4}
schRotation={180}
pcbX={-7.5}
pcbY={-20.5}
pcbRotation={90}
/>
{/* 5 V addressable RGB test LED, level-shifted from RP2350 GPIO15. */}
<SN74AHCT1G125DBVR
name="U_RGB_BUF"
schSheetName="interfaces"
schSectionName="status"
schHeight={0.6}
schX={-4.96}
schY={-6}
pcbX={8.5}
pcbY={15.5}
pcbRotation={90}
/>
<resistor
name="R_RGB_DATA"
resistance="330"
footprint="0402"
supplierPartNumbers={{ jlcpcb: ["C100375"] }}
schSheetName="interfaces"
schSectionName="status"
schX={0.96}
schY={-6}
pcbX={5.5}
pcbY={18}
pcbRotation={90}
/>
<XL_5050RGBC_2812B_S
name="D_RGB"
noConnect={["DO"]}
schSheetName="interfaces"
schSectionName="status"
schX={4}
schY={-6}
pcbX={8.5}
pcbY={24}
pcbRotation={270}
/>
<capacitor name="C_VBUS" capacitance="10uF" footprint="0603" supplierPartNumbers={{ jlcpcb: ["C19702"] }} schSheetName="interfaces" schSectionName="usb" schX={-7.5} schY={5.5} schOrientation="vertical" pcbX={-6.8} pcbY={-25.5} />
{/* Explicit local limits include the short pad escape and ground-plane via.
The original net-only regulator capacitors had no decoupling limit. */}
<capacitor name="C_LDO_IN" capacitance="4.7uF" maxDecouplingTraceLength={2.5} footprint="0402" supplierPartNumbers={{ jlcpcb: ["C23733"] }} schSheetName="interfaces" schSectionName="power" schX={-13} schY={-4} schOrientation="vertical" pcbX={12.5} pcbY={-21.44} pcbRotation={90} />
<capacitor name="C_LDO_OUT" capacitance="4.7uF" maxDecouplingTraceLength={2.5} footprint="0402" supplierPartNumbers={{ jlcpcb: ["C23733"] }} schSheetName="interfaces" schSectionName="power" schX={-7} schY={-5.5} schOrientation="vertical" pcbX={6.4} pcbY={-21.7} pcbRotation={180} />
<capacitor name="C_RGB_BUF" capacitance="100nF" maxDecouplingTraceLength={5.5} footprint="0402" supplierPartNumbers={{ jlcpcb: ["C1525"] }} schSheetName="interfaces" schSectionName="status" schX={-4} schY={-8} schOrientation="vertical" pcbX={8.5} pcbY={12.4} pcbRotation={180} />
<capacitor name="C_RGB" capacitance="100nF" maxDecouplingTraceLength={6.5} footprint="0402" supplierPartNumbers={{ jlcpcb: ["C1525"] }} schSheetName="interfaces" schSectionName="status" schX={4} schY={-8} schOrientation="vertical" pcbX={12} pcbY={24} pcbRotation={270} />
<testpoint name="TP_SWDIO" footprintVariant="pad" padShape="circle" padDiameter="1.1mm" schSheetName="core" schSectionName="debug" schX={13} schY={-3.5} pcbX={-12} pcbY={12} />
<testpoint name="TP_GND" footprintVariant="pad" padShape="circle" padDiameter="1.1mm" schSheetName="core" schSectionName="debug" schX={13} schY={-7.9} pcbX={-7} pcbY={12} />
<testpoint name="TP_3V3" footprintVariant="pad" padShape="circle" padDiameter="1.1mm" schSheetName="core" schSectionName="debug" schX={13} schY={-10.1} pcbX={-4.5} pcbY={12} />
{/* Board supplies feed the MCU's ordinary placement group. */}
<trace name="LDO_VIN" from=".U_3V3 > .VIN" to=".J_USB > .A4B9" {...vbusLabel} {...powerTraceProps} />
<trace name="LDO_ENABLE_PULLUP" from="net.VBUS" to=".R_LDO_EN > .pin1" {...vbusLabel} />
<trace name="LDO_ENABLE" from=".R_LDO_EN > .pin2" to=".U_3V3 > .EN" thickness="0.12mm" />
<trace name="LDO_GND" from=".U_3V3 > .GND" to=".J_RIGHT > .pin3" {...gndLabel} {...powerTraceProps} />
<trace name="LDO_VOUT" from=".U_3V3 > .VOUT" to=".J_RIGHT > .pin21" {...v3v3Label} {...powerTraceProps} />
<trace name="C_LDO_IN_P" from=".C_LDO_IN > .pin1" to=".U_3V3 > .VIN" {...vbusLabel} {...powerTraceProps} />
<trace name="C_LDO_IN_G" from=".C_LDO_IN > .pin2" to="net.GND" {...groundPlaneTraceProps} />
<trace name="C_LDO_OUT_P" from=".C_LDO_OUT > .pin1" to=".U_3V3 > .VOUT" {...v3v3Label} {...powerTraceProps} />
<trace name="C_LDO_OUT_G" from=".C_LDO_OUT > .pin2" to="net.GND" {...groundPlaneTraceProps} />
<trace name="PWR_LED_3V3" from=".U_3V3 > .VOUT" to=".R_PWR_LED > .pin1" {...v3v3Label} />
<trace name="PWR_LED_D" from=".R_PWR_LED > .pin2" to=".D_PWR > .anode" />
<trace name="PWR_LED_GND" from=".D_PWR > .cathode" to="net.GND" {...groundPlaneTraceProps} />
<trace name="RGB_BUF_VBUS" from=".U_RGB_BUF > .VCC" to=".C_RGB_BUF > .pin1" {...vbusLabel} {...powerTraceProps} />
<trace name="RGB_VBUS_DISTRIBUTION" from=".U_RGB_BUF > .VCC" to=".D_RGB > .VDD" {...vbusLabel} {...powerTraceProps} />
<trace name="RGB_BUF_DECOUPLING_VBUS" from=".U_RGB_BUF > .VCC" to="net.VBUS" {...vbusLabel} />
<trace name="RGB_BUF_GND" from=".U_RGB_BUF > .GND" to=".C_RGB_BUF > .pin2" {...gndLabel} thickness="0.1mm" />
<trace name="RGB_BUF_OE" from=".U_RGB_BUF > .OE" to=".C_RGB_BUF > .pin2" {...gndLabel} thickness="0.1mm" />
<trace name="RGB_BUF_DECOUPLING_GND" from=".C_RGB_BUF > .pin2" to="net.GND" {...groundPlaneTraceProps} />
<trace name="RGB_GPIO15" from=".J_RIGHT > .pin20" to=".U_RGB_BUF > .A" />
<trace name="RGB_BUFFERED_DATA" from=".U_RGB_BUF > .Y" to=".R_RGB_DATA > .pin1" />
<trace name="RGB_DATA_IN" from=".R_RGB_DATA > .pin2" to=".D_RGB > .DI" />
<trace name="RGB_VBUS" from=".D_RGB > .VDD" to=".C_RGB > .pin1" {...vbusLabel} {...powerTraceProps} />
<trace name="RGB_DECOUPLING_VBUS" from=".D_RGB > .VDD" to=".J_RIGHT > .pin22" {...vbusLabel} {...powerTraceProps} />
<trace name="RGB_GND" from=".D_RGB > .GND" to=".C_RGB > .pin2" {...gndLabel} {...powerTraceProps} />
<trace name="RGB_DECOUPLING_GND" from=".D_RGB > .GND" to=".J_LEFT > .pin16" {...gndLabel} {...powerTraceProps} />
{/* Reset, USB-C, and SWD connect to the ordinary MCU placement group. */}
<trace name="RUN_PULLUP" from=".R_RUN > .pin1" to=".MCU_CORE .U1 > .RUN" />
<trace name="RUN_PULLUP_3V3" from=".R_RUN > .pin2" to="net.V3V3" {...v3v3Label} />
<trace name="RUN_SWITCH" from=".U_RUN > .pin1" to=".MCU_CORE .U1 > .RUN" />
<trace name="RUN_SWITCH_GND" from=".U_RUN > .pin3" to="net.GND" {...groundPlaneTraceProps} />
<trace name="VBUS_A" from=".J_USB > .A4B9" to="net.VBUS" {...vbusLabel} />
<trace name="VBUS_B" from=".J_USB > .B4A9" to="net.VBUS" {...vbusLabel} />
<trace name="C_VBUS_P" from=".C_VBUS > .pin1" to="net.VBUS" {...vbusLabel} />
<trace name="C_VBUS_G" from=".C_VBUS > .pin2" to="net.GND" {...groundPlaneTraceProps} />
<trace name="USB_DM_A" from=".J_USB > .A7" to="net.USB_DM_OUT" {...denseTraceProps} />
<trace name="USB_DM_B" from=".J_USB > .B7" to="net.USB_DM_OUT" {...denseTraceProps} />
<trace name="USB_DP_A" from=".J_USB > .A6" to="net.USB_DP_OUT" {...denseTraceProps} />
<trace name="USB_DP_B" from=".J_USB > .B6" to="net.USB_DP_OUT" {...denseTraceProps} />
<trace name="CC1" from=".J_USB > .A5" to=".R_CC1 > .pin1" />
<trace name="CC2" from=".J_USB > .B5" to=".R_CC2 > .pin1" />
<trace name="CC1_GND" from=".R_CC1 > .pin2" to="net.GND" {...groundPlaneTraceProps} />
<trace name="CC2_GND" from=".R_CC2 > .pin2" to="net.GND" {...groundPlaneTraceProps} />
<trace name="USB_GND_A" from=".J_USB > .A1B12" to="net.GND" {...groundPlaneTraceProps} />
<trace name="USB_GND_B" from=".J_USB > .B1A12" to="net.GND" {...groundPlaneTraceProps} />
<trace name="USB_SHIELD_1" from=".J_USB > .EH1" to="net.GND" {...groundPlaneTraceProps} />
<trace name="USB_SHIELD_1_ALT" from=".J_USB > .pin13_alt1" to=".J_USB > .EH1" {...gndLabel} thickness="0.1mm" />
<trace name="USB_SHIELD_2" from=".J_USB > .EH2" to="net.GND" {...groundPlaneTraceProps} />
<trace name="USB_SHIELD_2_ALT" from=".J_USB > .pin14_alt1" to=".J_USB > .EH2" {...gndLabel} thickness="0.1mm" />
<trace name="SWDIO" from=".J_LEFT > .pin21" to=".TP_SWDIO > .pin1" />
<trace name="T_TP_GND" from=".TP_GND > .pin1" to="net.GND" {...groundPlaneTraceProps} />
<trace name="T_TP_3V3" from=".TP_3V3 > .pin1" to="net.V3V3" {...v3v3Label} />
{leftHeaderSignals.map((signal, index) => (
<Fragment key={`left-${index + 1}`}>
<trace
name={`LEFT_${index + 1}_${signal}`}
from={`.J_LEFT > .pin${index + 1}`}
to={
signal === "GND"
? "net.GND"
: signal === "V3V3"
? "net.V3V3"
: signal === "V3V3_EN"
? ".U_3V3 > .EN"
: `.MCU_CORE .U1 > .${signal}`
}
{...(signal === "GND"
? groundPlaneTraceProps
: signal === "V3V3"
? v3v3Label
: signalTraceProps)}
/>
</Fragment>
))}
{rightHeaderSignals.map((signal, index) => (
<Fragment key={`right-${index + 1}`}>
<trace
name={`RIGHT_${index + 1}_${signal}`}
from={`.J_RIGHT > .pin${index + 1}`}
to={
signal === "GND"
? "net.GND"
: signal === "V3V3"
? "net.V3V3"
: signal === "VBUS"
? "net.VBUS"
: `.MCU_CORE .U1 > .${signal}`
}
{...(signal === "GND"
? groundPlaneTraceProps
: signal === "V3V3"
? v3v3Label
: signal === "VBUS"
? vbusLabel
: signalTraceProps)}
/>
</Fragment>
))}
<trace name="STEMMA_QT_GND" from=".J_STEMMA_QT > .GND" to="net.GND" {...groundPlaneTraceProps} />
<trace name="STEMMA_QT_3V3" from=".J_STEMMA_QT > .V3V3" to=".J_RIGHT > .pin21" {...v3v3Label} {...powerTraceProps} />
<trace name="STEMMA_QT_SDA" from=".J_STEMMA_QT > .SDA" to=".MCU_CORE .U1 > .GPIO2" {...signalTraceProps} />
<trace name="STEMMA_QT_SCL" from=".J_STEMMA_QT > .SCL" to=".MCU_CORE .U1 > .GPIO3" {...signalTraceProps} />
<trace name="SPI_JST_GND" from=".J_SPI > .GND" to="net.GND" {...groundPlaneTraceProps} />
<trace name="SPI_JST_3V3" from=".J_SPI > .V3V3" to=".J_STEMMA_QT > .V3V3" {...v3v3Label} {...powerTraceProps} />
<trace name="SPI_JST_SCK" from=".J_SPI > .SCK" to=".MCU_CORE .U1 > .GPIO18" {...signalTraceProps} />
<trace name="SPI_JST_MOSI" from=".J_SPI > .MOSI" to=".MCU_CORE .U1 > .GPIO19" {...signalTraceProps} />
<trace name="SPI_JST_MISO" from=".J_SPI > .MISO" to=".MCU_CORE .U1 > .GPIO16" {...signalTraceProps} />
<trace name="SPI_JST_CS" from=".J_SPI > .CS" to=".MCU_CORE .U1 > .GPIO17" {...signalTraceProps} />
<silkscreentext text="RP2350A" fontSize="1mm" pcbX={0} pcbY={14} />
<silkscreentext text="USB-C" fontSize="0.8mm" pcbX={1} pcbY={-26} />
<silkscreentext text="PWR" fontSize="0.8mm" pcbX={-7.5} pcbY={-22} />
<silkscreentext text="RGB GP15" fontSize="0.7mm" pcbX={8.5} pcbY={30.3} />
<silkscreentext text="STEMMA QT" fontSize="0.65mm" pcbX={0.8} pcbY={24.2} />
<silkscreentext text="SPI JST" fontSize="0.65mm" pcbX={-8.55} pcbY={24.2} />
</board>
)
export default RP2350DevelopmentBoard