nater_tot/generic-motion-ctrl-v1

A 70×55 mm RP2040 motion-control board with USB‑C/3.3 V regulation, QSPI flash, dual TMC2209 stepper drivers for 12–24 V motors, encoder/limit-switch I/O, and protected power/ground hardware.

Version
1.0.1
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 = {
  pin57: {capabilities: [], requiresGround: true, requiresVoltage: 0, mustBeConnected: true},
  pin56: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_cs"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin55: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_miso"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin54: {isInput: true, isOutput: true, isBidirectional: true, capabilities: [], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin53: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_mosi"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin52: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_sck"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin51: {isInput: true, isOutput: true, isBidirectional: true, capabilities: [], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin50: {isInput: true, capabilities: [], requiresPower: true, mustBeConnected: true, shouldHaveDecouplingCapacitor: true, recommendedDecouplingCapacitorCapacitance: "100nF"},
  pin49: {isInput: true, capabilities: [], requiresPower: true, mustBeConnected: true, shouldHaveDecouplingCapacitor: true, recommendedDecouplingCapacitorCapacitance: "100nF"},
  pin48: {isInput: true, capabilities: [], requiresPower: true, mustBeConnected: true, shouldHaveDecouplingCapacitor: true, recommendedDecouplingCapacitorCapacitance: "100nF"},
  pin47: {isInput: true, isOutput: true, isBidirectional: true, capabilities: [], canUseInternalPullup: true, canUseInternalPulldown: true},
  pin46: {isInput: true, isOutput: true, isBidirectional: true, capabilities: [], canUseInternalPullup: true, canUseInternalPulldown: true},
  pin45: {isOutput: true, canUseTriState: true, capabilities: [], providesPower: true, shouldHaveDecouplingCapacitor: true, recommendedDecouplingCapacitorCapacitance: "1uF"},
  pin44: {isInput: true, capabilities: [], requiresPower: true, mustBeConnected: true, shouldHaveDecouplingCapacitor: true, recommendedDecouplingCapacitorCapacitance: "1uF"},
  pin43: {isInput: true, capabilities: [], requiresPower: true, mustBeConnected: true, shouldHaveDecouplingCapacitor: true, recommendedDecouplingCapacitorCapacitance: "100nF"},
  pin42: {isInput: true, capabilities: [], requiresPower: true, mustBeConnected: true, shouldHaveDecouplingCapacitor: true, recommendedDecouplingCapacitorCapacitance: "100nF"},
  pin41: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_cs","i2c_scl","uart_rx"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin40: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_miso","i2c_sda","uart_tx"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin39: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_mosi","i2c_scl"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin38: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_sck","i2c_sda"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin37: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_cs","i2c_scl","uart_rx"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin36: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_miso","i2c_sda","uart_tx"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin35: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_mosi","i2c_scl"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin34: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_sck","i2c_sda"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin33: {isInput: true, capabilities: [], requiresPower: true, mustBeConnected: true, shouldHaveDecouplingCapacitor: true, recommendedDecouplingCapacitorCapacitance: "100nF"},
  pin32: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_cs","i2c_scl","uart_rx"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin31: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_miso","i2c_sda","uart_tx"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin30: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_mosi","i2c_scl"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin29: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_sck","i2c_sda"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin28: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_cs","i2c_scl","uart_rx"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin27: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_miso","i2c_sda","uart_tx"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin26: {isInput: true, capabilities: [], canUseInternalPullup: true},
  pin25: {isInput: true, isOutput: true, isBidirectional: true, capabilities: [], canUseInternalPullup: true, canUseInternalPulldown: true},
  pin24: {isInput: true, capabilities: [], canUseInternalPullup: true, canUseInternalPulldown: true},
  pin23: {isInput: true, capabilities: [], requiresPower: true, mustBeConnected: true, shouldHaveDecouplingCapacitor: true, recommendedDecouplingCapacitorCapacitance: "100nF"},
  pin22: {isInput: true, capabilities: [], requiresPower: true, mustBeConnected: true, shouldHaveDecouplingCapacitor: true, recommendedDecouplingCapacitorCapacitance: "100nF"},
  pin21: {isOutput: true, capabilities: []},
  pin20: {isInput: true, capabilities: []},
  pin19: {isInput: true, capabilities: [], requiresGround: true, requiresVoltage: 0, mustBeConnected: true},
  pin18: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_mosi","i2c_scl"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin17: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_sck","i2c_sda"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin16: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_cs","i2c_scl","uart_rx"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin15: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_miso","i2c_sda","uart_tx"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin14: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_mosi","i2c_scl"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin13: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_sck","i2c_sda"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin12: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_cs","i2c_scl","uart_rx"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin11: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_miso","i2c_sda","uart_tx"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin10: {isInput: true, capabilities: [], requiresPower: true, mustBeConnected: true, shouldHaveDecouplingCapacitor: true, recommendedDecouplingCapacitorCapacitance: "100nF"},
  pin9: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_mosi","i2c_scl"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin8: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_sck","i2c_sda"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin7: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_cs","i2c_scl","uart_rx"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin6: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_miso","i2c_sda","uart_tx"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin5: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_mosi","i2c_scl"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin4: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_sck","i2c_sda"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin3: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_cs","i2c_scl","uart_rx"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin2: {isInput: true, isOutput: true, isBidirectional: true, capabilities: ["spi_miso","i2c_sda","uart_tx"], canUseInternalPullup: true, canUseInternalPulldown: true, canUsePushPull: true, isGpio: true},
  pin1: {isInput: true, capabilities: [], requiresPower: true, mustBeConnected: true, shouldHaveDecouplingCapacitor: true, recommendedDecouplingCapacitorCapacitance: "100nF"}
} satisfies NonNullable<ChipProps["pinAttributes"]>

const footprinterPinLabels = {
  ...pinLabels,
  "pin57": [...pinLabels["pin57"], "thermalpad"],
} as const

export const RP2040 = (props: ChipProps<typeof pinLabels>) => {
  return (
    <chip
      pinLabels={footprinterPinLabels}
      pinAttributes={pinAttributes}
      supplierPartNumbers={{
  "jlcpcb": [
    "C2040"
  ]
}}
      manufacturerPartNumber="RP2040"
      footprint="qfn56_thermalpad3.1mmx3.1mm_p0.4mm_h7.9mm_pw0.2mm_pl0.85mm"
      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}
    />
  )
}