techmannih/nema34-mounted-stepper-controller

A 48 V USB‑C PD 3.1 EPR NEMA‑34 stepper controller PCB combining STM32/TMC5160 control, external MOSFET motor bridges, protected power and regenerative braking, USB data, telemetry, diagnostics, status LEDs, and buzzer alarms.

Version
0.3.92
License
unset
Stars
1

docs/firmware-pinmap.json

{
  "mcu": "STM32G0B1CEU6",
  "status": "firmware-contract",
  "package": "UFQFPN48",
  "pin_to_gpio": {
    "pin1": "PC13",
    "pin2": "PC14",
    "pin3": "PC15",
    "pin8": "PF0",
    "pin9": "PF1",
    "pin10": "PF2",
    "pin11": "PA0",
    "pin12": "PA1",
    "pin13": "PA2",
    "pin14": "PA3",
    "pin15": "PA4",
    "pin16": "PA5",
    "pin17": "PA6",
    "pin18": "PA7",
    "pin19": "PB0",
    "pin20": "PB1",
    "pin21": "PB2",
    "pin22": "PB10",
    "pin23": "PB11",
    "pin24": "PB12",
    "pin25": "PB13",
    "pin26": "PB14",
    "pin27": "PB15",
    "pin28": "PA8",
    "pin29": "PA9",
    "pin30": "PC6",
    "pin31": "PC7",
    "pin32": "PA10",
    "pin33": "PA11",
    "pin34": "PA12",
    "pin35": "PA13",
    "pin36": "PA14",
    "pin37": "PA15",
    "pin38": "PD0",
    "pin39": "PD1",
    "pin40": "PD2",
    "pin41": "PD3",
    "pin42": "PB3",
    "pin43": "PB4",
    "pin44": "PB5",
    "pin45": "PB6",
    "pin46": "PB7",
    "pin47": "PB8",
    "pin48": "PB9"
  },
  "pin_to_net": {
    "pin1": "STATUS_GPIO",
    "pin4": "V3V3_MCU",
    "pin5": "V3V3_MCU",
    "pin6": "V3V3_MCU",
    "pin7": "GND",
    "pin8": "OSC_IN",
    "pin9": "OSC_OUT",
    "pin10": "NRST",
    "pin11": "PHASE_A_ADC",
    "pin12": "PHASE_B_ADC",
    "pin15": "TMC_CS_N",
    "pin16": "SPI_SCK",
    "pin17": "SPI_MISO",
    "pin18": "SPI_MOSI",
    "pin19": "USB_VBUS_SENSE",
    "pin20": "BOARD_POWER_SENSE",
    "pin21": "EFUSE_FAULT_N",
    "pin23": "ENC_CS_N",
    "pin24": "FLASH_CS_N",
    "pin28": "SD_MODE",
    "pin30": "USER_BUTTON_N",
    "pin33": "USB_DM",
    "pin34": "USB_DP",
    "pin35": "SWDIO",
    "pin36": "SWCLK",
    "pin37": "MCU_RUN",
    "pin42": "TMC_DIAG0",
    "pin43": "MOTOR_PG",
    "pin44": "POWER_PERMIT",
    "pin45": "PD_SCL",
    "pin46": "PD_SDA",
    "pin47": "TMC_DIAG1",
    "pin48": "VMOTOR_OK"
  },
  "reset_safe_outputs": {
    "POWER_PERMIT": 0,
    "MCU_RUN": 0,
    "SD_MODE": 0,
    "TMC_CS_N": 1,
    "ENC_CS_N": 1,
    "FLASH_CS_N": 1
  },
  "clock": {
    "hse_hz": 16000000,
    "usb": "HSI48 + CRS or a qualified 48 MHz clock setup"
  },
  "external_release_inputs": [
    "TI PD configuration image",
    "encoder calibration"
  ],
  "manufacturer_reference": {
    "url": "https://www.st.com/resource/en/datasheet/stm32g0b1ne.pdf",
    "document": "DS13560 Rev 6, figure 5, page 38, GP version STM32G0B1CxT",
    "review": "Pins 42..48 = PB3..PB9. Original firmware contract incorrectly inserted PD4 at pin42."
  },
  "diagnostic_devices": {
    "TMP102": {
      "address": 72,
      "high_deci_c": 700,
      "low_deci_c": 550
    },
    "ADS1115": {
      "address": 73,
      "ain0": "VMON_ADC",
      "ain1": "IIN_MON",
      "full_scale_mv": 4096
    },
    "INA240A1": {
      "phase_a_gpio": "PA0",
      "phase_b_gpio": "PA1",
      "shunt_milliohm": 5,
      "gain_v_per_v": 20
    }
  },
  "chip_select_mode": "Open-drain released; external pullups on board V3V3. Never drive high into unpowered peripherals."
}