Releases: Source-Robotics/STEPFOC-stepper-controller
Releases · Source-Robotics/STEPFOC-stepper-controller
Release list
Release 106
STEPFOC firmware V106 — application image for flashing via the Spectral bootloader.
CAN bus
- The controller now drains up to 8 CAN messages per pass instead of just 1, so short bursts (multiple commands sent back-to-back, or a busy multi-node bus) no longer silently drop messages once the 3-deep hardware FIFO fills.
- A CAN peripheral that fails to initialize no longer bricks the board — UART stays fully usable, only the CAN bus is skipped.
Safety
- Added a hardware watchdog (100ms). If the control loop ever stops running, the board resets instead of leaving the motor driven at a stale duty cycle.
- Fixed a bug where
Torque_modecould silently overwrite your commanded Iq setpoint when clamping to the current limit — reading it back after clamping now shows what you actually asked for, and raising the current limit afterward immediately restores the original commanded torque instead of requiring the command to be resent. - Fixed undefined behavior in a serial-protocol integer conversion (
fourBytesToInt). - Synced default configuration values that had drifted between two locations in the code, so a fresh
#Defaultand a freshly-flashed board's built-in defaults now agree.
EEPROM / configuration integrity
- Added CRC validation over the saved configuration, split into two independent halves: calibration data (resistance, inductance, Kt/KV, angle offset, current-loop gains, etc.) and settings (PID tuning, limits, watchdog config, CAN ID, etc.).
- This means a corrupted save (e.g. from a power loss mid-write) is detected and safely defaulted instead of silently running with garbage values — and critically, a future firmware update that only adds a new setting can no longer wipe your calibration, since the two are validated independently.
- Boards upgrading from older, pre-CRC firmware keep their existing calibration automatically — no need to recalibrate after this update.
- A few unused slots were reserved in the calibration block for upcoming features (e.g. magnet alignment), so those can be added later without another migration.
Performance
- PWM output no longer re-resolves which timer/channel it's writing to on every single call (it was doing this 4x per control tick) — resolved once and cached, freeing up ISR headroom.
- Velocity calculation switched from a floating-point divide to an integer multiply.
Usability
- New
#Helpcommand — prints a summary of the available commands. - Serial now responds with "Unknown command" for unrecognized input instead of silently ignoring it.
- Calibration now prints progress during the angle-offset search (previously up to ~40 seconds of silence that could look like the board had hung).
#Errornow also reports driver faults (undervoltage/thermal/overcurrent), not just the other error types.#Infonow always reports live ISR execution time, useful for checking control-loop headroom on the bench.
Assets
stepfoc-firmware-V106.bin— application firmware image (flash at0x08003000, target STM32F103CB).firmware.json— manifest with version, size, and SHA-256 for download verification by the web flasher.
Integrity
- SHA-256:
bc061fb273e7c836e3180fa597ecd373e7e357b0eab9130b63a7fd19b70a6073 - Size: 98940 bytes
Built from commit 661e7d3 on bootloader-version. Includes bootloader entry support (CAN/UART reset-into-bootloader).
Release 105
STEPFOC firmware V105 — application image for flashing via the Spectral bootloader.
What's new
- Reversed stepper phase wiring now calibrates automatically — no more "switch phases and try again." The firmware detects the wiring and compensates it in software, so all 8 phase-wiring permutations calibrate identically and symmetrically.
#Infonow reports the firmware's own build version, so the version is correct immediately after flashing (no#Defaultneeded).
Assets
stepfoc-firmware-V105.bin— application firmware image (flash at0x08003000, target STM32F103CB).firmware.json— manifest with version, size, and SHA-256 for download verification by the web flasher.
Integrity
- SHA-256:
0d80ce3cf78109f6ff54697425ed475ffca4e97e220d72fe0823ce1bd60a4908 - Size: 95924 bytes
Built from commit bda57d6 on bootloader-version. Includes bootloader entry support (CAN/UART reset-into-bootloader).
Release 103
Release 102
release 101
Initial fully functional release based on spectral micro firmware.