Skip to main content
Firmware Stable

Changelog

For ESC module For ESC driver and common block for controllers

[6.0.0] - unreleased

  • Smoother, more precise measurement (no more current-reading steps or intermittent temperature dropouts)
  • Torque modes deliver the full torque also at low speed; soft limits now cap the torque instead of rescaling the command map
  • New command flags: fixed rated command scale (bit 7) and sign-locked speed loop (bit 6)
  • Voltage modes work through field weakening - no-load speed proportional to the command over the whole range (new fwp parameter)
  • Voltage modes keep the command-to-voltage equivalence under load when dxc is set (optional vcf flag)
  • MTPA reworked: dxc is now the d-axis current limit/side-selector (re-verify PMSM tunings with dxc < 1)
  • Reworked saturation model: identified Da/Dc no longer over-derate (use them as-is), the d-axis derating is direction-aware, and Dc now also saturates the q-inductance on non-barrier (SPM) rotors - better MTPA and torque estimates; Da = Dc = 0 configs unchanged
  • Fix operation at high speeds (re-check tuned edc values)
  • Auto-sensorless thresholds assl/assh accept ratios of the maximum RPM
  • Smoother auto-sensorless handover (hall <-> sensorless fail-safe switching)
  • A reduced uref also shifts the field weakening range; the Range telemetry now streams the resolved voltage
  • Automatic ppr identification for encoders/resolvers
  • New diagnostics: bus-voltage measurement fault at init, idle over-speed detection
  • More robust settings storage (fixes occasional reset during flash writes)
  • PID parameters accessible through the driver API
  • New esc7 platform; experimental BLHS high-speed core

[5.3.1]

CMIO:

  • Fix contactor indexing bugs: tick loop now init/set/ticks each contactor (contactor[i]) instead of only contactor[0]; fix CCNT1 reading contactor[0] current instead of contactor[1]

[5.3.0]

  • Add over-speed detection while idle
  • Reduced flash footprint
  • Add esc3 sl2 board
  • Contactor overcurrent threshold and PWM period are now adjustable at runtime (enables embedded fan control)
  • On SL,SC invalidate ptc temp value, on expander timeout

[5.2.1]

  • Improved measurement accuracy for high-inductance motors
  • Several encoder homing reliability fixes
  • Fix position-loop behaviour during freewheel

[5.2.0]

  • Fix seamless transition between motor modes
  • Encoder fixes for esc5

[5.1.1]

  • Add flux-weakening retrieval and over-speed (no-margin) detection
  • More robust motor temperature sensor handling
  • More songs available, with a compile flag to remove them
  • Increase precharge voltage to 120V for MV controllers
  • Add esc3-am2 board variant

[5.1.0]

  • Add simplified sensorless mode - alternative low-complexity startup/estimation option (no zero-speed torque)
  • Fix ACIM speed readout error on esc5
  • Adjustable contactor timing on the main MCU, with a safety option to force-close on driver errors
  • esc6: add block-commutation (BLDC) motor support
  • More flexible PWM input handling, refined help strings

Parameters

  • Added: dcr, lfamp, lfreq

[5.0.0]

  • Major driver rework: extends speed range to ~150k ERPM, supports up to 120V and low-inductance motors
  • Quieter operation at low inductance and high speed
  • Faster within-cycle overcurrent and over/under-voltage protection (safer on MV / low-inductance setups)
  • More reliable startup and identification, with automatic current-loop tuning during identification
  • Beeper volume now adapts to the identified motor dynamics
  • Better analog monitoring on esc5 (motor temperature, supply voltages)
  • stop now also disables beeping; run re-enables it (use run 0 0 to stop the motor but keep beeping)
  • Default peak current set to the controller current range
  • Calibration: voltage limits unified/adjusted across controllers; esc3-sl1 now reports battery voltage ~2.5% lower (corrected measurement error)
  • More PWM input channels (up to 6), new isolated PWM capture on ch5 (gpio4, needs custom 5V-threshold HW); improved expander error reporting

Parameters

  • Added: COREOVP_K

[4.1.1]

Fixed

  • [esc5] discont function generating reset during metadata write because of wwdg

[4.1.0]

Changed

  • Driver override levels. From this version the run and stop commands override CAN API.

[4.0.2]

Fix

  • Refactor cmio code
  • Fix mctim glitch after driver error
  • Fix/add missing imult,umult for BLDC driver for esc3
  • Tune calib for ed1 board

[4.0.1]

Fix/Changed

  • ACIM odo calculation
  • beep modulation in VECTOR esc3/esc5: run-time compatible
  • Fix RC (PWM) input for esc3-sc1 and esc3-sl1

[4.0.0]

Added

  • Support for esc6 family
  • encoder msens with PWM homing and reference input

Changed

  • PPM_CAPT is removed from default build configuration
  • DRIVER_STAT_SPEED dropped and replaced by DRIVER_STAT_RANGE (signalizing that an operational range was exceeded)
  • Open contactor on driver error now exclude service mode and cmio error.

[3.3.0]

Fix/Changed

  • For esc5, fix problem with disconnected motor temperature sensor (power is limited)
  • Changed - Now doesnt matter if motor temp sensor is disconnected or shorted, power is limited always.

[3.2.1]

Fix

  • [auxiliary] refine plot set-up ordering to defeat missed features when using identXXX

Changed

  • [vector] cmd 0 disables DXC feed

[3.2.0]

Added

  • Getter for /permanents/err_counter

[3.1.1]

Added

  • [msgconf] enable umsg DMA reception fifo for all ESC3 controllers

Changed

  • [msg_pool] make fifo free space variable (if-dependent) to prioritize messages from ioexp's over CAN
  • [limiter] separate positive and negative battery current multipliers and corresponding api

[3.1.0]

Added

  • [CMIO] invalidate inputs for while, after ioconf is changed (only for ioexp)

Fix

  • [CMIO] fix ioexp problems - random cmio inputs invalid

[3.0.0]

Changed - BREAKING CHANGE

  • remove default support for HALL sensors and sensoreless mode. Now it is necessary to define HALL or SENSORLESS compile flag in application.
  • Some work on ioexp

[2.3.0]

Added

  • add getters for imult, umult, rmult

Fixed

  • fix uabc_gain correction application (for psi calculaion)
  • add back scope scrolling flag reset during idents
  • fix sensor error reporting when duing sensorless identrun

[2.2.6]

Fixed

  • esc3 BLDC - fix RThermistor and VThermistor - move them to /driver/motor

[2.2.5]

Fixed

  • msgpool - limit print of rx fifo ovf

[2.2.4]

Fixed

  • OBD2:
    • Signal OBD2 support
    • Fix message lenght of extended messages (CALID, CVN,...)
  • fix emulator compilation for Linux
  • make emulator to support all controllers
  • ESC5/BLDC low speed commutation problem (late measurement in phase ON-state due to MCU ADC bug patch)
  • measure coeff and apply correction to phase voltage measurement (to better PSI measurement)

[2.2.3]

Fixed

  • Remove ioexp_tim state from common block

[2.2.0-2]

Added

  • phase imbalance API
  • IBNEG, IBPOS modesels
  • ioexp add ack from ioexp, after receive config
  • vcf 1 (extended d current priority)
  • motor sensor error reported from identrun
  • fix bcfq preload (now with filtered current)
  • mctim now remembers imult, umult and rmult
  • printout of the union module version
  • ioconf 104 for wheel magnet sensors

Changed

  • bcfq compensator is now preloaded with measured q current
  • identrun return -3 in case of HALL sensor err
  • [esc3] MCU temp is now using factory calibrated data (more precision of MCU temp reading)

Removed

  • some unnecessary driver debug outputs during init

Fixed

  • PARAM_ALIGNMENT 4 for driver params (VMS unaligned warning fix)
  • CCTL compensator in BLDC causing limiters not to work when motor backdriven
  • ioexp allow unexpected msg
  • identX fixes of crash, better scope control, shared identification data

[2.1.1]

Added

  • phase-specific i2r limiter in all controllers
  • motor mode 7: battery current control

Changed

  • a0 diag - motor state decission new thresholds
  • turn off mosfet equalization at CMD_SHORT
  • unify compile flags. SENSORED -> HALL
  • /driver/motor/odo is independent from application
  • change to real KV calculation in identrun output
  • set higher maxval for the tcc param
  • driver_aux_set_command() allow set imult to zero
  • GDIN treshold for -1 on AM/AX

Fixed

  • compilability with the emulator/SX
  • torque estimation calculation with IPM motors
  • DMA shutdown in process_safe callback - solve permanents saving problem
  • negative ipeak wrong behavior in BLDC
  • setprm_indirect() spurious behaviour caused by acceess rights
  • driver_get_epos() now works comparably in both BLDC and VECTOR
  • high priority limiter problem in BLDC
  • problem with DIN on SX
  • do not log IOvolt error from expander
  • ioexp message timeouts behavior revert back to original logic
  • fix fwc api when FW is not defined
  • shutdown() function doesn't force 100ms delay, aux api supports argument

[2.1.0]

Added

  • AX controller
  • Add support for new revision of AMP board
  • ebmult - external battery current multiplier

Changed

  • Removed warnings
  • Unify driver compile flags

[2.0.0]

  • Complete refactored. ESC3, ESC4 and ESC5 driver and common block unified.

Added

  • SX controller

Changed

  • Permanents changed to integer values, instead of float
  • RThermistor and VThermistor moved to /driver/motor
  • Default values:
    • By default all contactors are open on startup
  • /common folder:
    • States names and type is unified
    • ichg and uchg moved and renamed: /powerswitch/ps_curr and /powerswitch/ps_volt
  • Parameter rename:
    • gpio_thr [lsb] -> pulsethr [mV]
    • gpio_thr2 [lsb] -> adin_thr [10mV]
  • State rename:
    • ccnt1-3 -> contactor1-3/current

[1.2.0]

Init commit. Changelog starts.