Microstepping controllers and Stepper Motors

I just did a little project that implements a On Semiconductor AMIS20512 stepper controller. This controller allows microstepping to 1/32nd of a step. Very impressive. But I am not 100% sure what microstepping is or what the point is. It just seems to make the motor action smoother and slower. I gather it does this by easing the motor from step to step using current control rather than snapping it over all at once. So, am I right in assuming this is more for getting fluid motion rather than actual accurate intermediate positions? Or what is the point? This is the driver:


I noticed at Pololu they seem to like this driver, it has similar capabilities:


One thing that is different is that it is "programmed" directly by pin inputs rather than by sending SPI packets to update internal registers. For example, you choose the stepping action on 3 pins. The AMIS20512 chip you update register zero (3 bits of it). To regulate current, the TI chip uses two analog voltage references which set the current choppers. Very 1970s. The AMIS20512 again uses register zero for this (5 bits). How do companies come to different design conclusions like this? It seems that the On chip has more features simply because it doesn't take more pins to implement more features when you can communicate settings over SPI rather than additional pins.

Anyway, thanks for any insight.

Microstepping will give more accuracy if the motor has torque to spare.

Microstepping much more importantly will reduce resonance and pull-out at resonant frequencies. In a system like a CNC machine where the motor is expected to perform at any speed upto a maximum, resonance/vibration is the limiting factor to performance.

There are also mechanical ways to dampen resonances which can help, which may be essential if a full-step driver is used, but optional for a microstepping drive. For simpler applications than CNC you can arrange to never go at the resonant speeds (or at least to accelerate straight past the troublesome speeds).

Basically microstepping drives the motor using sine waves rather than square waves.