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."
}