Ok, so I’ve studied theory of an LR network, and came up with following to understand what is happening when using the DRV8824 in microstepping mode.

I came up with the following. The motor can be modelled as an L/R network with a resistor and inductance in series, in which the resistance is both the motor resistance Rmotor and Rds(on). In general, the formula for such an L/R network given a step response input voltage is given by:

Vstep(t) = Vdifferential * (1-exp(-(R/L)*t))

Where Vdifferential is the differential voltage, which equals the motor voltage Vmot in initial state.

When the voltage is removed again, the voltage across the L/R network is given by:

Vdecay(t’) = Vdifferential * exp(-(R/L)*t’)

So both are essentially exponentials with time constant R/L and amplitude given by the voltage differential. For the first PWM with duty cycle given by the blank time Tblank, the voltage across the stepper motor is:

V1 = Vmot * ( 1 - exp(-(R/L)*Tblank))

Then using slow decay, the voltage decays to:

V2 = V1 * exp(-(R/L)*Toff)

If this voltage is not decayed to zero volt, e.g. when Toff is too small, we end up with a residual voltage. With the next PWM cycle, voltage is again increase by approximately the value of V1, and the residual voltage is approximately twice the residual voltage of the first PWM cycle. This voltage increase continues until equilibrium state is reached.

An estimate of this can be calculated by linearising both exponential functions around the voltage in this equilibrium state. This equilibrium state is when the voltage increase due to Tblank is equal to the voltage decrease of Toff. Both are given by the linearisation of the first to formulae:

Vincrease(t) ~ (Vmot - Veq) * (R/L) * t

Vdecrease(t) ~ Veq * (R/L) * t

In equilibrium state Vincrease(Tblank) equals Vdecrease(Toff):

(Vmot - Veq) * (R/L) * Tblank = Veq * (R/L) * Toff

or

Veq = Vmot * Tblank / (Toff + Tblank)

So the equilibrium state depends on the motor voltage, and the ratio between Toff and Tblank, and is independant of R/L. The DRV8824 has a minimum duty cycle (Tblank) of 3.65 microseconds. Given the PWM frequency of 50kHz (or 20 microseconds period), the remaining time (Toff) the motor voltage is switched off is then 16.3 microseconds. The minimum motor voltage is 8.2V for this driver, which results in a minimum voltage of:

Veq = 8.2 * 3.65 / 20 = 1.49V

That’s 18% of Vmot. It’s also possible to simulate this behaviour using the first two formulae, giving the graphs attached / below. Within about 6 msecs, equilibrium state is reached.

So, that would explain the behaviour seen? The issue with the 8824 driver is the slow decay mode used when increasing current during micro stepping, combined with the rather high minimum duty cycle given by Tblank.

Now the tricky thing here is: why is the DRV8824 advertised as being able to do micro stepping up to 1/32 steps? I came to the conclusion the driver is not able to do this as it is hard-wired and not configurable to another decay mode needed for micro stepping.