With PowerSTEP01, L6470 and L6480, the BEMF compensation does not work with step-clock mode (the motor status is stop). The output (to motor) voltage won't be increased when speeding up the motor by changing PWM frequency. without BEMF compensation, the output current is too low at high speed. Thus, step-clock mode is totally useless in voltage mode.
I have a temporary solution for this problem, I set KVAL_HOLD register to change the voltage when changing speed. But the SPI communications eat many CPU circles, so there is a limitation of speed because the interval can't be less than a SPI communication needs. It is even worse with daisy chain: more devices on the bus, more time is consumed by SPI communications. So, changing voltage between two step pulses is difficult.
And there is a question: after the SPI communication (setting KVAL_HOLD) ends (all bytes are sent from MCU), how long does it take before the voltage is actually changed? we must guarantee the voltage is high enough before the pulses achieve a higher rate, so I think this is a important question. Without the knowledge about elapsed time between command (setting parameters) and action actually executed, we cannot estimate a proper lead (time to send the command) to satisfy the condition. Could anybody give us an answer please ?
Or, Could any body give us a better solution to use step-clock mode in voltage mode? IMHO, using the RUN command and speed profiles can't do everything the step-clock mode can do. And only voltage mode has 1/128 micro-step. So how to make the combination of step-clock mode and voltage mode work is important to me.
(I haven't tried current mode yet, because the 1/16 micro-step is not good enough for my project. So I don't know if current mode have similar problems. Does step-clock mode work better in current mode? If somebody know, you may provide some info here, others can get benefits from your knowledge and advice.).
Any suggestions is appreciated. Thank you.