TMC5031 DATASHEET (Rev. 1.11 / 2016-APR-28)
58
When the microstep sequencer advances within the table, it calculates the actual current values for
the motor coils with each microstep and stores them to the registers CUR_A and CUR_B. However the
incremental coding requires an absolute initialization, especially when the microstep table becomes
modified. Therefore CUR_A and CUR_B become initialized whenever MSCNT passes zero.
Two registers control the starting values of the tables:
-
As the starting value at zero is not necessarily 0 (it might be 1 or 2), it can be programmed
into the starting point register START_SIN.
-
In the same way, the start of the second wave for the second motor coil needs to be stored
in START_SIN90_120. This register stores the resulting table entry for a phase shift of 90° for
2-phase stepper motors.
Hint
Refer chapter 5.3 for the register set and for the default table function stored in the drivers. The
default table is a good base for realizing an own table.
The TMC5031-EVAL comex with a calculation tool for own waves.
Initialization example for the default microstep table:
MSLUTx[0]= %10101010101010101011010101010100 = 0xAAAAB554
MSLUTx[1]= %01001010100101010101010010101010 = 0x4A9554AA
MSLUTx[2]= %00100100010010010010100100101001 = 0x24492929
MSLUTx[3]= %00010000000100000100001000100010 = 0x10104222
MSLUTx[4]= %11111011111111111111111111111111 = 0xFBFFFFFF
MSLUTx[5]= %10110101101110110111011101111101 = 0xB5BB777D
MSLUTx[6]= %01001001001010010101010101010110 = 0x49295556
MSLUTx[7]= %00000000010000000100001000100010 = 0x00404222
MSLUTSELx= 0xFFFF8056:
X1=128, X2=255, X3=255
W3=%01, W2=%01, W1=%01, W0=%10
MSLUTSTARTx= 0x00F70000:
START_SIN_0= 0, START_SIN90_120= 247
www.trinamic.com