Devesh36/pocket-audio-player
A portable, rechargeable microSD audio player built around an RP2040, SPI flash, USB‑C charging/power management, LCD/button controls, PCM5102A I²S DAC, and TPA6132A headphone amplifier in a 3D‑printed enclosure.
- Version
- 1.0.12
- License
- unset
- Stars
- 0
imports/RP2040.tsx
import type { ChipProps } from "@tscircuit/props";
const pinLabels = {
pin1: ["IOVDD6"],
pin2: ["GPIO0"],
pin3: ["GPIO1"],
pin4: ["GPIO2"],
pin5: ["GPIO3"],
pin6: ["GPIO4"],
pin7: ["GPIO5"],
pin8: ["GPIO6"],
pin9: ["GPIO7"],
pin10: ["IOVDD5"],
pin11: ["GPIO8"],
pin12: ["GPIO9"],
pin13: ["GPIO10"],
pin14: ["GPIO11"],
pin15: ["GPIO12"],
pin16: ["GPIO13"],
pin17: ["GPIO14"],
pin18: ["GPIO15"],
pin19: ["TESTEN"],
pin20: ["XIN"],
pin21: ["XOUT"],
pin22: ["IOVDD4"],
pin23: ["DVDD2"],
pin24: ["SWCLK"],
pin25: ["SWD"],
pin26: ["RUN"],
pin27: ["GPIO16"],
pin28: ["GPIO17"],
pin29: ["GPIO18"],
pin30: ["GPIO19"],
pin31: ["GPIO20"],
pin32: ["GPIO21"],
pin33: ["IOVDD3"],
pin34: ["GPIO22"],
pin35: ["GPIO23"],
pin36: ["GPIO24"],
pin37: ["GPIO25"],
pin38: ["GPIO26_ADC0"],
pin39: ["GPIO27_ADC1"],
pin40: ["GPIO28_ADC2"],
pin41: ["GPIO29_ADC3"],
pin42: ["IOVDD2"],
pin43: ["ADC_AVDD"],
pin44: ["VREG_IN"],
pin45: ["VREG_VOUT"],
pin46: ["USB_DM"],
pin47: ["USB_DP"],
pin48: ["USB_VDD"],
pin49: ["IOVDD1"],
pin50: ["DVDD1"],
pin51: ["QSPI_SD3"],
pin52: ["QSPI_SCLK"],
pin53: ["QSPI_SD0"],
pin54: ["QSPI_SD2"],
pin55: ["QSPI_SD1"],
pin56: ["QSPI_SS"],
pin57: ["GND"],
} as const;
const pinAttributes = {
pin1: {
requiresPower: true,
requiresVoltage: "3.3V",
mustBeConnected: true,
},
pin2: {
isInput: true,
isOutput: true,
},
pin3: {
isInput: true,
isOutput: true,
},
pin4: {
isInput: true,
isOutput: true,
},
pin5: {
isInput: true,
isOutput: true,
},
pin6: {
isInput: true,
isOutput: true,
},
pin7: {
isInput: true,
isOutput: true,
},
pin8: {
isInput: true,
isOutput: true,
},
pin9: {
isInput: true,
isOutput: true,
},
pin10: {
requiresPower: true,
requiresVoltage: "3.3V",
mustBeConnected: true,
},
pin11: {
isInput: true,
isOutput: true,
},
pin12: {
isInput: true,
isOutput: true,
},
pin13: {
isInput: true,
isOutput: true,
},
pin14: {
isInput: true,
isOutput: true,
},
pin15: {
isInput: true,
isOutput: true,
},
pin16: {
isInput: true,
isOutput: true,
},
pin17: {
isInput: true,
isOutput: true,
},
pin18: {
isInput: true,
isOutput: true,
},
pin19: {
isInput: true,
mustBeConnected: true,
},
pin20: {
isInput: true,
mustBeConnected: true,
},
pin21: {
isOutput: true,
mustBeConnected: true,
},
pin22: {
requiresPower: true,
requiresVoltage: "3.3V",
mustBeConnected: true,
},
pin23: {
requiresPower: true,
requiresVoltage: "1.1V",
mustBeConnected: true,
},
pin24: {
isInput: true,
mustBeConnected: true,
},
pin25: {
isInput: true,
isOutput: true,
},
pin26: {
isInput: true,
mustBeConnected: true,
},
pin27: {
isInput: true,
isOutput: true,
},
pin28: {
isInput: true,
isOutput: true,
},
pin29: {
isInput: true,
isOutput: true,
},
pin30: {
isInput: true,
isOutput: true,
},
pin31: {
isInput: true,
isOutput: true,
},
pin32: {
isInput: true,
isOutput: true,
},
pin33: {
requiresPower: true,
requiresVoltage: "3.3V",
mustBeConnected: true,
},
pin34: {
isInput: true,
isOutput: true,
},
pin35: {
isInput: true,
isOutput: true,
},
pin36: {
isInput: true,
isOutput: true,
},
pin37: {
isInput: true,
isOutput: true,
},
pin38: {
isInput: true,
isOutput: true,
},
pin39: {
isInput: true,
isOutput: true,
},
pin40: {
isInput: true,
isOutput: true,
},
pin41: {
isInput: true,
isOutput: true,
},
pin42: {
requiresPower: true,
requiresVoltage: "3.3V",
mustBeConnected: true,
},
pin43: {
requiresPower: true,
requiresVoltage: "3.3V",
mustBeConnected: true,
},
pin44: {
requiresPower: true,
requiresVoltage: "3.3V",
mustBeConnected: true,
},
pin45: {
providesPower: true,
providesVoltage: "1.1V",
mustBeConnected: true,
},
pin46: {
isInput: true,
isOutput: true,
mustBeConnected: true,
},
pin47: {
isInput: true,
isOutput: true,
mustBeConnected: true,
},
pin48: {
requiresPower: true,
requiresVoltage: "3.3V",
mustBeConnected: true,
},
pin49: {
requiresPower: true,
requiresVoltage: "3.3V",
mustBeConnected: true,
},
pin50: {
requiresPower: true,
requiresVoltage: "1.1V",
mustBeConnected: true,
},
pin51: {
isInput: true,
isOutput: true,
},
pin52: {
isOutput: true,
mustBeConnected: true,
},
pin53: {
isInput: true,
isOutput: true,
},
pin54: {
isInput: true,
isOutput: true,
},
pin55: {
isInput: true,
isOutput: true,
},
pin56: {
isOutput: true,
mustBeConnected: true,
},
pin57: {
requiresGround: true,
mustBeConnected: true,
},
} as const;
export const RP2040 = (props: ChipProps<typeof pinLabels>) => {
return (
<chip
pinLabels={pinLabels}
pinAttributes={pinAttributes}
supplierPartNumbers={{
jlcpcb: ["C2040"],
}}
manufacturerPartNumber="RP2040"
footprint={
<footprint>
<smtpad
portHints={["pin57"]}
pcbX="-0mm"
pcbY="0.000127mm"
width="3.0999938mm"
height="3.0999938mm"
shape="rect"
/>
<smtpad
portHints={["pin56"]}
pcbX="-2.599944mm"
pcbY="3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin55"]}
pcbX="-2.200148mm"
pcbY="3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin54"]}
pcbX="-1.800098mm"
pcbY="3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin53"]}
pcbX="-1.400048mm"
pcbY="3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin52"]}
pcbX="-0.999998mm"
pcbY="3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin51"]}
pcbX="-0.599948mm"
pcbY="3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin50"]}
pcbX="-0.200152mm"
pcbY="3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin49"]}
pcbX="0.199898mm"
pcbY="3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin48"]}
pcbX="0.599948mm"
pcbY="3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin47"]}
pcbX="0.999998mm"
pcbY="3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin46"]}
pcbX="1.400048mm"
pcbY="3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin45"]}
pcbX="1.799844mm"
pcbY="3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin44"]}
pcbX="2.199894mm"
pcbY="3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin43"]}
pcbX="2.599944mm"
pcbY="3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin42"]}
pcbX="3.424936mm"
pcbY="2.600071mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin41"]}
pcbX="3.424936mm"
pcbY="2.200021mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin40"]}
pcbX="3.424936mm"
pcbY="1.799971mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin39"]}
pcbX="3.424936mm"
pcbY="1.399921mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin38"]}
pcbX="3.424936mm"
pcbY="1.000125mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin37"]}
pcbX="3.424936mm"
pcbY="0.600075mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin36"]}
pcbX="3.424936mm"
pcbY="0.200025mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin35"]}
pcbX="3.424936mm"
pcbY="-0.200025mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin34"]}
pcbX="3.424936mm"
pcbY="-0.600075mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin33"]}
pcbX="3.424936mm"
pcbY="-0.999871mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin32"]}
pcbX="3.424936mm"
pcbY="-1.399921mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin31"]}
pcbX="3.424936mm"
pcbY="-1.799971mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin30"]}
pcbX="3.424936mm"
pcbY="-2.200021mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin29"]}
pcbX="3.424936mm"
pcbY="-2.600071mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin28"]}
pcbX="2.599944mm"
pcbY="-3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin27"]}
pcbX="2.199894mm"
pcbY="-3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin26"]}
pcbX="1.799844mm"
pcbY="-3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin25"]}
pcbX="1.400048mm"
pcbY="-3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin24"]}
pcbX="0.999998mm"
pcbY="-3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin23"]}
pcbX="0.599948mm"
pcbY="-3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin22"]}
pcbX="0.199898mm"
pcbY="-3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin21"]}
pcbX="-0.200152mm"
pcbY="-3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin20"]}
pcbX="-0.599948mm"
pcbY="-3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin19"]}
pcbX="-0.999998mm"
pcbY="-3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin18"]}
pcbX="-1.400048mm"
pcbY="-3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin17"]}
pcbX="-1.800098mm"
pcbY="-3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin16"]}
pcbX="-2.200148mm"
pcbY="-3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin15"]}
pcbX="-2.599944mm"
pcbY="-3.425063mm"
width="0.1999996mm"
height="0.850011mm"
shape="rect"
/>
<smtpad
portHints={["pin14"]}
pcbX="-3.424936mm"
pcbY="-2.600071mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin13"]}
pcbX="-3.424936mm"
pcbY="-2.200021mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin12"]}
pcbX="-3.424936mm"
pcbY="-1.799971mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin11"]}
pcbX="-3.424936mm"
pcbY="-1.399921mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin10"]}
pcbX="-3.424936mm"
pcbY="-0.999871mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin9"]}
pcbX="-3.424936mm"
pcbY="-0.600075mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin8"]}
pcbX="-3.424936mm"
pcbY="-0.200025mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin7"]}
pcbX="-3.424936mm"
pcbY="0.200025mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin6"]}
pcbX="-3.424936mm"
pcbY="0.600075mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin5"]}
pcbX="-3.424936mm"
pcbY="1.000125mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin4"]}
pcbX="-3.424936mm"
pcbY="1.399921mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin3"]}
pcbX="-3.424936mm"
pcbY="1.799971mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin2"]}
pcbX="-3.424936mm"
pcbY="2.200021mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<smtpad
portHints={["pin1"]}
pcbX="-3.424936mm"
pcbY="2.600071mm"
width="0.850011mm"
height="0.1999996mm"
shape="rect"
/>
<silkscreenpath
route={[
{ x: -3.2409891999999445, y: 3.500018399999931 },
{ x: -3.2409891999999445, y: 3.403168199999868 },
{ x: -3.5000691999999844, y: 3.144062800000029 },
]}
/>
<silkscreenpath
route={[
{ x: -3.5000691999999844, y: 2.931185400000004 },
{ x: -2.9311854000001176, y: 3.500018399999931 },
]}
/>
<silkscreenpath
route={[
{ x: -3.5000691999999844, y: 2.931185400000004 },
{ x: -3.5000691999999844, y: 3.500018399999931 },
]}
/>
<silkscreenpath
route={[
{ x: -2.9311854000001176, y: -3.499916799999937 },
{ x: -3.40004399999998, y: -3.499916799999937 },
{ x: -3.5000691999999844, y: -3.499916799999937 },
{ x: -3.5000691999999844, y: -2.9310838000000103 },
]}
/>
<silkscreenpath
route={[
{ x: 3.499942199999964, y: -2.9310838000000103 },
{ x: 3.499942199999964, y: -3.499916799999937 },
{ x: 2.931083800000124, y: -3.499916799999937 },
]}
/>
<silkscreenpath
route={[
{ x: 2.931083800000124, y: 3.500018399999931 },
{ x: 3.499942199999964, y: 3.500018399999931 },
{ x: 3.499942199999964, y: 2.931185400000004 },
]}
/>
<silkscreenpath
route={[
{ x: -3.5000691999999844, y: 3.500018399999931 },
{ x: -2.9311854000001176, y: 3.500018399999931 },
]}
/>
<silkscreenpath
route={[
{ x: -3.2409891999999445, y: 3.5001453999999512 },
{ x: -3.2409891999999445, y: 3.4032952000000023 },
{ x: -3.5000691999999844, y: 3.144215200000076 },
]}
/>
<silkscreenpath
route={[
{ x: -3.5000691999999844, y: 2.9313124000000244 },
{ x: -2.9311854000001176, y: 3.5001453999999512 },
]}
/>
<silkscreenpath
route={[
{ x: -3.5000691999999844, y: 2.9313124000000244 },
{ x: -3.5000691999999844, y: 3.5001453999999512 },
]}
/>
<silkscreenpath
route={[
{ x: -2.9311854000001176, y: -3.4997898000000305 },
{ x: -3.40004399999998, y: -3.4997898000000305 },
{ x: -3.5000691999999844, y: -3.4997898000000305 },
{ x: -3.5000691999999844, y: -2.93095679999999 },
]}
/>
<silkscreenpath
route={[
{ x: 3.499916800000051, y: -2.93095679999999 },
{ x: 3.499916800000051, y: -3.4997898000000305 },
{ x: 2.931083800000124, y: -3.4997898000000305 },
]}
/>
<silkscreenpath
route={[
{ x: 2.931083800000124, y: 3.5001453999999512 },
{ x: 3.499916800000051, y: 3.5001453999999512 },
{ x: 3.499916800000051, y: 2.9313124000000244 },
]}
/>
<silkscreenpath
route={[
{ x: -3.5000691999999844, y: 3.5001453999999512 },
{ x: -2.9311854000001176, y: 3.5001453999999512 },
]}
/>
<silkscreencircle
pcbX="-3.999992mm"
pcbY="3.700272mm"
radius="0.127mm"
/>
<silkscreencircle
pcbX="-3.999992mm"
pcbY="3.700145mm"
radius="0.127mm"
/>
<silkscreentext
text="{NAME}"
pcbX="-0.140208mm"
pcbY="4.859022mm"
anchorAlignment="center"
fontSize="1mm"
/>
<courtyardoutline
outline={[
{ x: -4.0999415, y: 4.10006850000002 },
{ x: 4.0999415, y: 4.10006850000002 },
{ x: 4.0999415, y: -4.10006850000002 },
{ x: -4.0999415, y: -4.10006850000002 },
{ x: -4.0999415, y: 4.10006850000002 },
]}
/>
</footprint>
}
cadModel={{
objUrl:
"https://modelcdn.tscircuit.com/easyeda_models/assets/C2040.obj?uuid=76b360a9d4c54384a4e47d7e5af156df",
stepUrl:
"https://modelcdn.tscircuit.com/easyeda_models/assets/C2040.step?uuid=76b360a9d4c54384a4e47d7e5af156df",
pcbRotationOffset: 0,
modelOriginPosition: {
x: 0.000012699999956566899,
y: -0.0001269999999067295,
z: -0.02,
},
}}
{...props}
/>
);
};