English
Language : 

AMIS-30622 Datasheet, PDF (17/42 Pages) AMI SEMICONDUCTOR – I2C Microstepping Motordriver
AMIS-30622
9.2.1.2. Position initialization
After power-up or when a Vdd reset has been acknowledged to the master, a position initialization of the
stepper-motor can be requested by the application, by use of the RunInit command (see § 0). The position
initialization is performed by the position controller under the control of the Main control block. This operation
cannot be interrupted or influenced by any further command. A position initialization can only be interrupted by
the occurrence of the conditions driving to a Motor shutdown (see § 9.2.2.7) or by a HardStop command. On
the other hand, sending a RunInit command while a motion is already ongoing is not recommended.
A position initialization consists of 2 successive motions, as illustrated below.
Vmax
Velocity
1st m otion
2nd motion
end of INIT
V m in
tim e
26.6 ms
26.6 ms
The first motion is done with the specified Vmin and Vmax velocities in the RunInit command, with the
acceleration (deceleration) parameter already in RAM, to a position Pos1[15:0] also specified in RunInit.
The goal here is to perform a motion large enough to reach a stall position (considered to be the reference
position).
Then a second motion to a position Pos2[15:0] is done at the specified Vmin velocity in the RunInit
command (no acceleration). The purpose of this second motion is to confirm with a low velocity the positioning of
the motor at the stall position, assuming that the stepper motor may have bounced against the stall position.
Therefore, Pos2 should only be a few half or micro steps further than Pos1, in order to perform a displacement
of at least one electrical period.
Once the second motion is achieved, the ActPos register (see § 0) is reset to zero, to set the reached position
as the reference position, whereas TagPos register is not changed.
Notes
(1) The priority encoder (see 9.2.2.11 Priority encoder) is describing the management of states and commands. The
notes below are to be considered illustrative.
(2) The last SetPosition command issued during an initialization sequence will be kept in memory and executed
afterwards. This applies also for the commands SetMotorParam and GotoSecurePosition.
(3) Commands such as GetActualPos or GetStatus will be executed while the position initialization is running.
(4) An initialization sequence starts by setting TagPos register to SecPos value, provided secure position is enabled
otherwise TagPos is reset to zero.
(5) The acceleration/deceleration value applied during an initialization sequence is the one stored in RAM before the
RunInit command is sent. The same applies for Shaft bit, but not for Irun, Ihold and StepMode, which can
be changed during an initialization sequence.
(6) The Pos1, Pos2, Vmax and Vmin values programmed in a RunInit command apply only for this initialization
sequence. All further positioning will use the parameters stored in RAM (programmed for instance by a former
SetMotorParam command).
(7) Commands ResetPosition, RunInit, and SoftStop will be ignored while an initialization sequence is
ongoing, and will not be executed afterwards.
(8) A SetMotorParam command should not be sent during an initialization sequence.
(9) If for some reason ActPos equals Pos1[15:0] at the moment the RunInit command is issued, the circuit will
enter in deadlock state. Therefore, the application should check the actual position by a GetPosition or a
GetFullStatus command prior to an initialization. Another solution may consist in programming a value out of
the stepper motor range for Pos1[15:0].
Rev. 3 | Page 17 of 42 | www.onsemi.com