Micro Stepping Stepper Motor
Controller / Driver with Two Wire Serial Interface
TRINAMIC® Motion Control GmbH & Co. KG
SDA
SCL
VDD
GND
TST
open
GND
HW
CPN
CPP
1
2
3
4
5
6
7
8
9
10
TRINAMIC
TMC222
20
SWI
19
VBAT
18
OA1
GND
OA2
OB1
GND
OB2
VBAT
VCP
OB2
OB2
VBAT
VBAT
VBAT
VCP
CPP
CPN
17
16
15
14
13
12
11
GND
1718192021222324
NC
GND
HW
OB1
GND
OA2
OB1
TMC 222
QFN32
Top view
open
TST
OA2
GND
GND
VDD
GND
3231302928272625
910111213141516
SCL
Sternstraße 67
D – 20357 Hamburg
GERMANY
12345678
OA1
OA1
VBAT
VBAT
VBAT
SWI
NC
SDA
P +49 - (0) 40 - 51 48 06 - 0
F +49 - (0) 40 - 51 48 06 - 60
www.trinamic.com
info@trinamic.com
1 Features
The TMC222 is a combined micro-stepping stepper motor motion controller and driver with RAM and
OTP memory. The RAM or OTP memory is used to store motor parameters and configuration
settings. The TMC222 allows up to four bit of micro stepping and a coil current of up to 800 mA. After
initialization it performs all time critical tasks autonomously based on target positions and velocity
parameters. Communications to a host takes place via a two wire serial interface. Together with an
inexpensive micro controller the TMC222 forms a complete motion control system. The main benefits
of the TMC222 are:
• Motor driver
• Controls one stepper motor with four bit micro stepping
• Programmable Coil current up to 800 mA
• Supply voltage range operating range 8V ... 29V
• Fixed frequency PWM current control with automatic selection of fast and slow decay mode
• Full step frequencies up to 1 kHz
• High temperature, open circuit, short, over-current and under-voltage diagnostics
• Motion controller
• Internal 16-bit wide position counter
• Configurable speed and acceleration settings
• Build-in ramp generator for autonomous positioning and speed control
• On-the-fly alteration of target position
• reference switch input available for read out
• Two wire serial interface
• Transfer rates up to 350 kbps
• Diagnostics and status information as well as motion parameters accessible
TRINAMIC Motion Control GmbH & Co. KG does
not authorize or warrant any of its products for
use in life support systems, without the specific
written consent of TRINAMIC Motion Control
GmbH & Co. KG.
Life support systems are equipment intended to
support or sustain life, and whose failure to
perform, when properly used in accordance with
instructions provided, can be reasonably
expected to result in personal injury or death.
be accurate and reliable. However no
responsibility is assumed for the consequences
of its use nor for any infringement of patents or
other rights of third parties which may result form
its use.
Motor parameters, e.g. acceleration, velocity and position parameters are passed to the main control
block via the serial interface. These information are stored internally in RAM or OTP memory and are
accessible by the position controller. This block takes over all time critical tasks to drive a stepper
motor to the desired position under abiding the desired motion parameters.
The main controller gets feedback from the stepper motor driver block and is able to arrange internal
actions in case of possible problems. Diagnostics information about problems and errors are
transferred to the serial interface block.
2.3 Stepper Motor Driver
Two H-bridges are employed to drive both windings of a bipolar stepper motor. The internal
transistors can reach an output current of up to 800 mA. The PWM principle is used to force the given
current through the coils. The regulation loop performs a comparison between the sensed output
current and the internal reference. The PWM signals to drive the power transistors are derived from
the output of the current comparator.
2.4 Two Wire Serial Interface
Communication between a host and the TMC222 takes places via the two wire bi-directional serial
interface. Motion instructions and diagnostics information are provided to or from the Main Control
block. It is possible to connect up to 32 devices on the same bus. Slave addresses are programmable
via OTP memory or an external pin.
TST 5 12 test pin (to be tied to ground in normal operation)
open 6 13 must be left open
HW 8 15 hard-wired serial interface address bit input
CPN 9 17 negative connection of external charge pump capacitor
CPP 10 18 positive connection of external charge pump capacitor
VCP 11 19 connection of external charge pump filter capacitor
VBAT 12, 19 3-5,20-22 battery voltage supply
OB2 13 23,24 negative end of phase B coil
OB1 15 27,28 positive end of phase B coil
OA2 16 29,30 negative end of phase A coil
OA1 18 1,2 positive end of phase A coil
SWI 20 6 reference switch input
NC 7,16 internally not connected (shields when connected to ground)
The TMC222 supports up to 16 micro steps per full step, which leads to smooth and low torque ripple
motion of the stepping motor. Four stepping modes (micro step resolutions) are selectable by the user
(see also Table 11):
• Half step Mode
• 1/4 Micro stepping
• 1/8 Micro stepping
• 1/16 Micro stepping
5.1.2 Velocity Ramp
A common velocity ramp where a motor drives to a desired position is shown in the figure below. The
motion consists of a acceleration phase, a phase of constant speed and a final deceleration phase.
Both the acceleration and the deceleration are symmetrical. The acceleration factor can be chosen
from a table with 16 entries. (Table 5: Acc Parameter on page 11). A typical motion begins with a start
velocity Vmin. During acceleration phase the velocity is increased until Vmax is reached. After
acceleration phase the motion is continued with velocity Vmax until the velocity has to be decreased
in order to stop at the desired target position. Both velocity parameters Vmin and Vmax are
programmable, whereas Vmin is a programmable ratio of Vmax. (See Table 3: Vmax Parameter on
page 10 and Table 4: Vmin on page 11). The user has to take into account that Vmin is not allowed
to change while a motion is ongoing. Vmax is only allowed to change under special circumstances.
(See 5.1.4 Vmax Parameter on page 10).
The peak current value to be fed to each coil of the stepper-motor is selectable from a table with 16
possible values. It has to be distinguished between the run current Irun and the hold current Ihold.
Irun is fed through the stepper motor coils while a motion is performed, whereas Ihold is the current to
hold the stepper motor before or after a motion. More details about Irun and Ihold can be found in
5.3.1. and 5.3.2.
Velocity resp. acceleration parameters are accessable via the serial interface. These parameters are
written via the SetMotorParam command (see 6.8.9) and read via the GetFullStatus1 command (see
The following figures show some examples of typical motions under different conditions:
Velocity V
V
max
V
min
X
start
X
target_1
X
target_2
time
Figure 2: Motion with change of target position
Velocity V
V
max
V
min
X
start
X
target_1
X
target_2
time
Figure 3: Motion with change of target position while in deceleration phase
Velocity V
V
max
V
min
X
start
X
target
time
Figure 4: Short Motion Vmax is not reached
Velocity V
V
max
V
min
X
start
X
target_1
X
target_2
time
Figure 5: Linear Zero crossing (change of target position in opposite direction)
The motor crosses zero velocity with a linear shape. The velocity can be smaller than the
programmed Vmin value during zero crossing. Linear zero crossing provides very low torque ripple to
the stepper motor during crossing.
Under special circumstances it is possible to change the Vmax parameters while a motion is ongoing.
All 16 entries for the Vmax parameter are divided into four groups A, B, C and D. When changing
Vmax during a motion take care that the new Vmax value is within the same group. Background: The
TMC222 uses an internal pre-divider for positioning calculations. Within one group the pre-divider is
equal. When changing Vmax between different groups during a motion, correct positioning is not
ensured anymore.
The minimum velocity parameter is a programmable ratio between 1/32 and 15/32 of Vmax. It is also
possible to set Vmin to the same velocity as Vmax by setting Vmin index to zero. The table below
shows the possible rounded values of Vmin given within unit [FS/s].
Table 4: Vmin values [FS/s] for all Vmin index – Vmax index combinations
5.1.6 Acceleration Parameter
The acceleration parameter can be chosen from a wide range of available values as described in the
table below. Please note that the acceleration parameter is not to change while a motion is ongoing.
The amount of equivalent full steps during acceleration phase can be computed by the next equation:
Nstep
2
V
?
?
V
2
minmax
?
5.1.7 Position Ranges
Position information is coded by using two’s complement format. Depending on the stepping mode
(See 5.1.1) the position ranges are as listed in the following table:
Stepping Mode Position Range Full range excursion
Half-stepping -4096…+4095
(-212…+212-1)
1/4 micro-stepping -8192…+8191
(-213…+213-1)
1/8 micro-stepping -16384…+16383
(-214…+214-1)
1/16 micro-stepping -32768…+32767
(-215…+215-1)
8192 half-steps
213
16384 micro-steps
214
32768 micro-steps
215
65536 micro-steps
216
Table 6: Position Ranges
Target positions can be programmed via serial interface by using the SetPosition command (see
6.8.11). The actual motor position can be read by the GetFullStatus2 command (see 6.8.2).
5.1.8 Secure Position
The GotoSecurePosition command drives the motor to a pre-programmed secure position (see 6.8.4).
The secure position is programmable by the user. Secure position is coded with 11 bits, therefore the
resolution is lower than for normal positioning commands, as shown in the following table.
Pin SWI (see Figure 1, on page 7) will attempt to source and sink current in/from the external switch
pin. This is to check whether the external switch is open or closed, resp. if the pin is connected to
ground or Vbat. The status of the switch can be read by using the GetFullStatus1 command. As long
as the switch is open, the <ESW> flag is set to zero.
The ESW flag just represents the status of the input switch. The SWI input is intended as a physical
interface for a mechanical switch that requires a cleaning current for proper operation. The SWI input
detects if the switch is open or connected either to ground or to Vbat. The SWI input is not a digital
logic level input. The status of the switch does not automatically perform actions as latching of the
actual position. Those actions have to be realized by the application software.
A stepper motor does not provide information about the actual position of the motor. Therefore it is
recommended to perform a reference drive after power-up or if a motor shutdown happened in case
of a problem. The RunInit command initiates the reference search. The RunInit command consists of
a Vmin and Vmax parameter and also position information about the end of first and second motion
(6.8.8 RunInit).
A reference drive consists of two motions (Figure 6: RunInit): The first motion is to drive the motor
into a stall position or a reference switch. The first motion is performed under compliance of the
selected Vmax and Vmin parameter and the acceleration parameter specified in the RAM. The
second motion has got a rectangular shape, without a acceleration phase and is to drive the motor out
of the stall position or slowly towards the stall position again to compensate for the bouncing of the
faster first motion to stop as close to the stall position as possible. The maximum velocity of the
second motion equals to Vmin. The positions of Pos1 and Pos2 can be chosen freely (Pos1 > Pos2 or
Pos1 < Pos2). After the second motion the actual position register is set to zero. Finally, the secure
position will be traveled to if it is enabled (different from the most negative decimal value of –1024).
Once the RunInit command is started it can not be interrupted by any other command except a
condition occurs which leads to a motor shutdown (See 5.1.10 Motor Shutdown Management ) or a
HardStop command is received. Furthermore the master has to ensure that the target position of the
first motion is not equal to the actual position of the stepper motor and that the target positions of the
first and the second motion are not equal. This is very important otherwise the circuit goes into a
deadlock state. Once the circuit finds itself in a deadlock state only a HardStop command followed by
a GetFullStatus1 command will cause the circuit to leave the deadlock state.
The TMC222 provides an internal battery voltage monitoring. The circuit goes into shutdown mode if
the battery voltage falls below threshold UV2, furthermore one threshold UV1 is implemented to
generate a low voltage warning.
The internal handling of commands and flags differs. Commands are handled with different priorities
depending on the current state and the current status of internal flags, see figure below. SetPosition
or GotoSecurePosition commands are ignored as long as the <StepLoss> flag is set. Details can be
found in Table 8: Priority Encoder.
Note: A HardStop command is sent by the master or triggered internally in case of an electrical
defect or over temperature.
A description of the available commands can be found in 6.8 Command Description. A list of the
internal flags can be found in 5.2.2 Status Flags.
As an example: When the circuit drives the motor to its programmed target position, state “GotoPos”
is entered. There are three events which can cause to leave this state: HardStop command received,
SoftStop command received or target position reached. If all three events occur at the same time the
HardStop command is executed since it has the highest priority. The Motion finished event (target
position reached) has the lowest priority and thus will only cause transition to “Stopped” state when
both other events do not occur.
I²C in-frame
I²C in-frame
response;
if (<TSD> or
<HS>) = ‘1’
then ? Stopped
OTP refresh;
OTP to RAM;
AccShape reset
TagPos and
ActPos reset
n.a.
Table 8: Priority Encoder
Color code:
Command ignored
Transition to another state
Master is responsible for proper update (see note 5)
Notes:
1 After Power on reset, the Shutdown state is entered. The Shutdown state can only be left after a GetFullStatus1 command
(so that the Master could read the <VddReset> flag).
2 A RunInit sequence runs with a separate set of RAM registers. The parameters which are not specified in a RunInit
command are loaded with the values stored in RAM at the moment the RunInit sequence starts. AccShape is forced to ‘1’
during second motion even if a ResetToDefault command is issued during a RunInit sequence, in which case AccShape at
‘0’ will be taken into account after the RunInit sequence. A GetFullStatus1 command will return the default parameters for
Vmax and Vmin stored in RAM.
3 Shutdown state can be left only when <TSD> and <HS> flags are reset.
4 Flags can be reset only after the master could read them via a GetFullStatus1 command, and provided the physical
conditions allow for it (normal temperature, correct battery voltage and no electrical or charge pump defect).
5 A SetMotorParam command sent while a motion is ongoing (state GotoPos) should not attempt to modify Acc and Vmin
values. This can be done during a RunInit sequence since this motion uses its own parameters, the new parameters will be
taken into account at the next SetPosition command.
6 <SecEn> = ‘1’ when register SecPos is loaded with a value different from the most negative value (i.e. different from 0x400 =
7 <Stop> flag allows to distinguish whether state Stopped was entered after HardStop/SoftStop or not. <Stop> is set to ‘1’
when leaving state HardStop or SoftStop and is reset during first clock edge occurring in state Stopped.
8
While in state Stopped, if ActPos ? TagPos there is a transition to state GotoPos. This transition has the lowest priority,
meaning that <Stop>, <TSD>, etc. are first evaluated for possible transitions.
9 If <StepLoss> is active, then SetPosition and GotoSecurePosition commands are ignored (they will not modify TagPos
register whatever the state) and motion to secure position is forbidden. Other commands like RunInit or ResetPosition will be
executed if allowed by current state. <StepLoss> can only be cleared by a GetFullStatus1 command.
5.2 RAM and OTP Memory
Some RAM registers (e.g. Ihold, Irun) are initialized with the content of the OTP (One Time
Programmable) memory. The content of RAM registers that are initialized via OTP can be changed
afterwards. This allows user initialization default values, whereas the default values are one time
programmable by the user. Some OTP bits are address bits of the TMC222.
5.2.1 RAM Registers
Register Mnemonic Length
Actual Position ActPos 16 GetFullStatus2
Target Position TagPos 16 SetPosition
Acceleration Shape AccShape 1 GetFullStatus1
Coil Peak Current Irun 4 GetFullStatus1
Coil Hold Current Ihold 4 GetFullStatus1
Minimum Velocity Vmin 4 GetFullStatus1
Maximum Velocity Vmax 4 GetFullStatus1
Shaft Shaft 1 GetFullStatus1
Acceleration /
Deceleration
Secure Position SecPos 11
Stepping Mode StepMode 2 GetFullStatus1
Acc 4 GetFullStatus1
(bit)
Related commands Comment Reset
ResetPosition
GetFullStatus2
ResetPosition
SetMotorParam
ResetToDefault
SetMotorParam
ResetToDefault
SetMotorParam
ResetToDefault
SetMotorParam
ResetToDefault
SetMotorParam
ResetToDefault
SetMotorParam
ResetToDefault
SetMotorParam
ResetToDefault
GetFullStatus2
ResetToDefault
GetFullStatus2
ResetToDefault
Actual Position of the Stepper Motor. 16-bit
signed
Target Position of the Stepper Motor. 16-bit
signed
0 = Acceleration with Acc Parameter.
1 = Velocity set to Vmin, without acceleration
Coil current when motion is ongoing
(Table 12: Irun / Ihold Settings)
Coil current when motor stands still
(Table 12: Irun / Ihold Settings)
Start Velocity of the stepper motor
(Table 4: Vmin )
Target Velocity of the stepper motor
(Table 3: Vmax Parameter)
Direction of motion
Parameter for acceleration
(Table 5: Acc Parameter)
Target Position for GotoSecurePosition
command (6.8.4 GotoSecurePosition); 11
MSBs of 16-bit position (LSBs fixed to ‘0’)
Micro stepping mode
(5.1.1 Stepping Modes)
The table below shows the flags which are accessable by the serial interface in order to receive
information about the internal status of the TMC222.
Flag Mnemonic Length
Digital supply Reset VddReset 1 GetFullStatus1 Set to ‘1’ after power-up or after a micro-cut in the supply
Over current in coil A OVC1 1 GetFullStatus1 Set to ‘1’ if an over current in coil #1 was detected. Is set to ‘0’
Over current in coil B OVC2 1 GetFullStatus1 Set to ‘1’ if an over current in coil #2 was detected. Is set to ‘0’
StepLoss StepLoss 1 GetFullStatus1 Set to ‘1’ when under voltage, over current or over temperature
Secure position
enabled
Electrical Defect ElDef 1 GetFullStatus1 Set to ‘1’ if open circuit or a short was detected, (<OVC1> or
Temperature Info Tinfo 2 GetFullStatus1 Indicates the chip temperature
Thermal Warning TW 1 GetFullStatus1 Set to one if temperature raises above 145 °C. Is set to ‘0’
Thermal Shutdown TSD 1 GetFullStatus1 Set to one if temperature raises above 155° C. Is set to ‘0’
Motion Status Motion 3 GetFullStatus1 Indicates the actual behavior of the position controller.
External Switch
Status
Charge Pump
failure
Electrical flag HS 1 Internal use <CPFail> or <UV2> or <ElDef> ‘0’
SecEn 1 Internal use
ESW 1 GetFullStatus1 Indicates the status of the external switch.
CPFail 1 GetFullStatus1 ‘0’ charge pump OK
(bit)
Related
Command
Comment Reset
voltage to warn that RAM contents may have been lost.
Is set to ‘0’ after GetFullStatus1 command.
after GetFullStatus1 command.
after GetFullStatus1 command.
event was detected. Is set to ‘0’ after GetFullStatus1
command. SetPosition and GotoSecurePosition commands
are ignored when <StepLoss> = 1
‘0’ if SecPos = “100 0000 0000”
‘1’ otherwise
<OVC2>). Is. Is set to ‘0’ after GetFullStatus1 command.
“00” = normal temperature
“01 = low temperature warning
“10” = high temperature warning
“11” = motor shutdown
after GetFullStatus1 command.
after GetFullStatus1 command and Tinfo = “00”.
“000”: Actual Position = Target Position; Velocity = 0
The table below shows where the OTP parameters are stored in the OTP memory.
Note: If the OTP memory has not been programmed, or if the RAM has not be programmed by a
SetMotorParam command, or if anyhow <VddReset> = ‘1’, any positioning command will be ignored,
in order to avoid any consequence due to unwanted RAM content. Please check that the correct
supply voltage is applied to the circuit before zapping the OTP (See: Table 21: DC Parameters
Supply and Voltage regulator on page 45), otherwise the circuit will be destroyed.
Parameters stored at address 0x00 and 0x01 and bit LOCKBT are already programmed in the OTP
memory at circuit delivery, they correspond to the calibration of the circuit and are just documented
here as an indication. Each OPT bit is at ‘0’ when not zapped. Zapping a bit will set it to ‘1’. Thus only
bits having to be at ‘1’ must be zapped. Zapping of a bit already at ‘1’ is disabled, to avoid any
damage of the Zener diode. It is important to note that only one single OTP byte can be programmed
at the same time (see command SetOTPParam).
Once OTP programming is completed, bit LOCKBG can be zapped, to disable unwanted future
zapping, otherwise any OTP bit at ‘0’ could still be zapped.
Lock bit Protected byte
Table 10: OTP Lock bits
The command used to load the application parameters via the serial bus into the RAM prior to an
OTP Memory programming is SetMotorParam. This allows for a functional verification before using a
SetOTPParam command to program and zap separately one OTP memory byte. A GetOTPParam
command issued after each SetOTPParam command allows to verify the correct byte zapping.
5.3 Stepper Motor Driver
The StepMode parameter in SetMotorParam command (6.8.9 SetMotorParam on page 34) is used to
select between different stepping modes. Following modes are available:
At the end of a motor motion the actual coil currents Irun are maintained in the coils at their actual DC
level for a quarter of an electrical period (two half steps) at minimum velocity. Afterwards the currents
are then set to their hold values Ihold. The figure below illustrates the mechanism:
i
t
I = I
run
I = I
hold
Figure 12: Transition Irun to Ihold
Both currents Irun and Ihold are parameterizeable using the command SetMotorParam. 16 values are
available for Irun current and 16 values for Ihold current. The table below shows the corresponding
current values.
The chopper frequency is fixed as specified in chapter 10.4 AC Parameters on page 46. The TMC222
uses an intelligent chopper algorithm to provide a smooth operation with low resonance. The TMC222
uses internal measurements to derive current flowing through coils. If the current is less than the
desired current, the TMC222 switches a H-bridge in a way that the current will increase. Otherwise if
the current is too high, the H-bridge will be switched to decrease the current. For decreasing two
modes are available, slow decay and fast decay, whereas fast decay decreases the current faster
than slow decay. The figure below shows the chopper behavior.
Figure 13: Different Chopper Cycles with Fast and Slow Decay
Both SDA and SCL lines are connected to positive supply voltage via a current source or pull-up
resistor (see figure below). When there is no traffic on the bus both lines are high. Analog glitch filters
are implemented to suppress spikes with a length of up to 50 ns.
+ 5V
SDA line
SCL line
SCL_IN
SCL_OUT
TMC222
SDA_IN
SDA_OUT
SCL_IN
SCL_OUT
Master
SDA_IN
SDA_OUT
Figure 14: Two Wire Serial Interface - Physical Layer
6.2 Communication on Two Wire Serial Bus Interface
Each datagram starts with a Start condition and ends with a Stop condition. Both conditions are
unique and cannot be confused with data. A high to low transition on the SDA line while SCL is high
indicates a Start condition. A low to high transition on the SDA line while SCL is high defines a Stop
condition (see figure below).
SDA
SCL
START
condition
Figure 15: Two Wire Serial Interface - Start / Stop Conditions
STOP
condition
The SCL clock is always generated by the master. On every rising transition of the SCL line the data
on SDA is valid. Data on SDA line is only allowed to change as long as SCL is low (see figure below).
SDA
SCL
data line
stable,
data valid
data change
allowed
Figure 16: Two Wire Serial Interface - Bit transfer
Every byte put on the SDA line must have a length of 8 bits, where the most significant bit (MSB) is
transferred first. The number of bytes that can be transmitted to the TCM222 is restricted to 8 bytes.
Each byte is followed by an acknowledge bit, which is issued by the receiving node (see figure below).
SDA
MSBACKACK
SCL
START
condition
1
278991
STOP
condition
Figure 17: Two Wire Serial Interface - Data Transfer
6.3 Physical Address of the circuit
The circuit must be provided with a physical address in order to discriminate this circuit from other
ones on the serial bus. This address is coded on seven bits (two bits are internally hardwired to ‘1’),
yielding the theoretical possibility of 32 different circuits on the same bus. It is a combination of four
OTP memory bits (see Table 9: OTP Memory Structure) and one hardwired address bit (pin HW).
HW must either be connected to ground or Vbat. When HW is not connected and left floating correct
functionality of the serial interface is not guaranteed. Pin HW uses the same principle to check
whether it is connected to ground or Vbat like the SWI input (see 5.1.9 External Switch).
The TMC222 supports a “general call” address. Therefore the circuit is addressable using either the
physical slave address or address “000 0000”.
AD5AD6AD1AD2AD3AD4AD0
OTP_AD3OTP_AD1OTP_AD2OTP_AD0'1''1'
Figure 18: Two Wire Serial Interface - Physical Address resp. Address Field
HW2
Physical address
OTP Memory
Hardwired Bit
(Connect to 0 or 1)
With un-programmed OTP address bits (OTP_AD3=o, OTP_AD2=o, OTP_AD1=o, OTP_AD0=o) and
HW='0' (pin HW @ GND), the slave address resp. the address field of the TMC222 for reading is
11oooo01 (0xC1, 193) and for writing the slave address resp. the address field is 11oooo00 (0xC0,
192). The LSB of the address field selects read (='1') and write (='0'). With un-programmed OTP
address bits and HW='1' (pin HW @ Vbat), the slave address resp. the address field of the TMC222
for reading is 11oooo11 (0xC3, 195) and for writing the salve address resp. the address field is
11oooo10 (0xC2, 194).
6.4 Write data to TMC222
A complete datagram consists of the following: a Start condition, the slave address (7 bit), a
read/write bit (‘0’ = write, ‘1’ = read), an acknowledge bit, a number of data bytes (8 bit) each followed
by an acknowledge bit, and a Stop condition. The acknowledge bit is used to signal to the transmitter
the correct reception of the preceding byte, in this case the TMC222 pulls the SDA line low.
The TMC222 reads the incoming data at SDA with every rising edge of the SCL line. To finish the
transmission the master has to transmit a Stop condition. Some commands for the TMC222 are
supporting eight bytes of data, other commands are transmitting two bytes of data.
Figure 19: Two Wire Serial Interface - Writing Data to Slave
6.5 Read data from TMC222
When reading data from a slave two datagrams are needed. The first datagram consists of two bytes
of data. The first byte consists of the slave address and the write bit. The second byte consists of the
address of an internal register of the TMC222. The internal register address is stored in the circuits
RAM. The second datagram consists of the slave address and the read bit. Then the master can read
the data bits on the SDA line with every rising edge of the SCL line. After each byte of data the
master has to acknowledge correct data reception by pulling SDA low. The last byte must not be
acknowledged by the master so that the slave knows the end of transmission (see figure below).
6.6 Timing characteristics of the serial interface
START
STARTSTOPSTART
SDA
t
f
t
LOW
t
r
t
SU;DAT
t
f
t
HD;STA
t
t
r
BUF
SCL
t
HD;STA
t
HD;DAT
t
HIGH
t
SU;STA
t
SU;STO
Figure 21: Definition of Timing
Parameter Symbol
Low level input voltage:
Fixed input levels
High level input voltage:
Fixed input levels
Pulse width of spikes which must be
suppressed by the input filter
VIL -0.5
VIH 3.0
tSP n/a n/a 50 50 ns
Capacitance for each I/O pin Ci - 10 - 10 pF
SCL Clk frequency <= 100KHz SCL Clk frequency <= 350KHz
Min. Max. Min. Max.
(1)
1.5 -0.5
(2)
(1)
0.3VDD V
0.7VDD
(2)
Unit
V
Table 13: Two Wire Serial Interface - Characteristics of the SDA and SCL I/O Stages
Notes
(1): If Input voltage = < -0.3 Volts, then 20…100 Ohms resistor must be added in series
(2): Maximum VIH = V
n/a: not applicable
Parameter Symbol
SCL clock frequency f
Hold time (repeated) START
condition. After this period, the first
clock pulse is generated.
LOW period of the SCL clock t
HIGH period of the SCL clock t
Set-up time for a repeated START
condition
Data set-up time t
Rise time of both SDA and SCL
signals
Fall time of both SDA and SCL
signals
Set-up time for STOP condition t
Bus free time between a STOP and
START condition
Capacitive load for each bus line Cb 0 400 - 400 pF
Noise margin at the LOW level for
each connected device (including
hysteresis)
Noise margin at the HIGH level for
each connected device (including
hysteresis)
DDmax
+ 0.5 Volt
SCL Clk frequency <= 100KHz SCL Clk frequency <= 350KHz
Min. Max. Min. Max.
0 100 0 350 KHz
SCL
t
4.0 - 0.6 - µs
HD;STA
4.7 - 1.3 - µs
LOW
4.0 - 0.6 - µs
HIGH
t
4.7 - 0.6 - µs
SU;STA
250 - 100 - ns
SU;DAT
tr - 1000 20+0.1C
tf - 300 20+0.1C
4.0 - 0.6 - µs
SU;STO
t
4.7 - 1.3 - µs
BUF
(1)
300 ns
b
(1)
300 ns
b
VnL 0.1VDD - 0.1VDD - V
VnH 0.2VDD - 0.2VDD - V
Unit
Table 14: Two Wire Serial Interface - Characteristics of the SDA and SCL bus lines
Notes
(1): Cb = total capacitance of one bus line in pF.
Communications between the TMC222 and a Two Wire Serial Bus Master takes place via a set of
commands.
Reading commands are used to:
• Get actual status information, e.g. error flags
• Get actual position of the Stepper Motor
• Verify the right programming and configuration of the TMC222
Writing commands are used to:
• Program the OTP Memory
• Configure the TMC222 with motion parameters (e.g. max/min speed, acceleration, stepping
mode, etc.)
• Provide target positions to the Stepper motor
Command
Mnemonic
GetFullStatus1 Returns complete status of the chip 0x81
GetFullStatus2 Returns actual, target and secure position 0xFC
GetOTPParam Returns OTP parameter 0x82
GotoSecurePosition Drives motor to secure position 0x84
HardStop Immediate full stop 0x85
ResetPosition Sets actual position to zero 0x86
ResetToDefault Overwrites the chip RAM with OTP contents
RunInit Reference Search 0x88
SetMotorParam Sets motor parameter 0x89
SetOTPParam Zaps the OTP memory 0x90
SetPosition Programmers a target and secure position 0x8B
SoftStop Motor stopping with deceleration phase 0x8F
Function
Command Byte
(hexadecimal)
0x87
Table 15: Two-Wire-Serial-Interface - Command Overview (in alphabetical order)
There are data fields labeled as "N/A = not applicable". Within the command description tables, the
contend is normally given as '1'. Data fields labeled by N/A might be reserved for later variants of the
TMC222 and the content should be ignored for the TMC222.
Concerning response datagrams, the byte 0 is the slave address that is applied for addressing, where
the byte 1 is the slave address that is sent back within the response data frame.
6.8.1 GetFullStatus1
This command is provided to the circuit by the Master to get a complete status of the circuit and of
the stepper-motor. The parameters sent via the two wire serial bus to the Master are:
• coil peak and hold current values (Irun and Ihold)
• maximum and minimum velocities for the stepper-motor (Vmax and Vmin)
• direction of motion clockwise / counterclockwise (Shaft)
• stepping mode (StepMode) (Table 11: StepMode on page 21)
• acceleration (deceleration) for the Stepper motor (Acc)
• acceleration shape (AccShape)
• status information:
• motion status <Motion [2:0]>
• over current flags for coil A <OVC1> and coil B <OVC2>
• digital supply reset <VddReset>
• charge pump status <CPFail>
• external switch status <ESW>
• step loss <StepLoss>
• electrical defect <ElDef>
• under voltage <UV2>
• temperature information <Tinfo>
• temperature warning <TW>
• temperature shutdown <TSD>
GetFullStatus1 command
Content
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
0 Slave Address 1 1 OTP3 OTP2 OTP1 OTP0 HW 0
1 GetFullStatus1 1 0 0 0 0 0 0 1
This command is provided to the circuit by the Master to get the actual position of the stepper-motor.
The position is provided by the circuit in 16-bit format, with the 3 LSBs at ‘0’ when in half stepping
mode (StepMode = “00”). Furthermore programmed target position and secure position are also
provided.
GetFullStatus2 command
Structure Byte Content
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
0 Slave Address 1 1 OTP3 OTP2 OTP1 OTP0 HW 0
1 GetFullStatus2
Content
0 Slave Address 1 1 OTP3 OTP2 OTP1 OTP0 HW 1
1 Address 0 0 0 OTP3 OTP2 OTP1 OTP0 HW
2 Actual Position 1 ActPos(15:8)
3 Actual Position 2 ActPos(7:0)
4 Target Position 1 TagPos(15:8)
5 Target Position 2 TagPos(7:0)
6 Secure Position SecPos(7:0)
7 Secure Position 1 1 1 1 1 SecPos(10:8)
8 N/A 1 1 1 1 1 1 1 1
Note: N/A = not applicable
6.8.3 GetOTPParam
This command is provided to the circuit by the master to read the content of the OTP Memory. For
more information refer to Table 9: OTP Memory Structure on page 21.
This command is provided by the Master to one or all the stepper-motors to move to the secure
position SecPos[10:0]. It can also be triggered at the end of a RunInit initialization phase. If
SecPos[10:0] equals 0x400 (the most negative decimal value of -1024) the secure position is disabled
and the GotoSecurePosition command is ignored.
GotoSecurePosition command
Structure Byte Content
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
This command is internally triggered when an electrical problem is detected in one or both coils,
leading to switch off the H-bridges. If this problem is detected while the motor is moving, the
<StepLoss> flag is raised allowing to warn the Master that steps may have been lost at the next
GetFullStatus1 command. A HardStop command can also be issued by the Master for some safety
reasons.
HardStop command
Structure Byte Content
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
This command is provided to the circuit by the Master to reset ActPos and TagPos registers, in order
to allow for an initialization of the stepper-motor position.
Hint: This command is ignored during motion. It has no effect during motion. The Status Flags
(section 5.2.2, page 20) named 'Motion Status' indicate if the motor is at rest (velocity=0).
ResetPosition command
Structure Byte Content
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
0 Slave Address 1 1 OTP3 OTP2 OTP1 OTP0 HW 0
1 ResetPosition 1 0 0 0 0 1 1 0
This command is provided to the circuit by the Master in order to reset the whole slave node into the
initial state. ResetToDefault will for instance overload the RAM with the reset state of the register
parameters. This is another way for the Master to initialize a slave node in case of emergency, or
simply to refresh the RAM content.
Note: ActPos is not modified by a ResetToDefault command, and it’s value is copied into TagPos
register in order to avoid an attempt to position the motor to ‘0’.
ResetToDefault command
Structure Byte Content
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
0 Slave Address 1 1 OTP3 OTP2 OTP1 OTP0 HW 0
1 ResetToDefault
6.8.8 RunInit
This command is provided to the circuit by the Master in order to initialize positioning of the motor by
seeking the zero (or reference) position. Refer to 5.1.11 Reference Search / Position initialization on
page 14. It leads to a sequence of the following commands:
• SetMotorParam(Vmax, Vmin);
• SetPosition(Pos1);
• SetMotorParam(Vmin, Vmin);
• SetPosition(Pos2);
• ResetPosition
• GotoSecurePosition
Once the RunInit command is started it can not be interrupted by any other command except when a
condition occurs which leads to a motor shutdown (See 5.1.10 Motor Shutdown Management ) or a
HardStop command is received. If SecPos[10:0] equals 0x400 (the most negative decimal value of
-1024) the final travel to the secure position is omitted.
The master has to ensure that the target position of the first motion is not equal to the actual position
of the stepper motor and that the target positions of the first and second motion are different, too.
This is very important otherwise the circuit goes into a deadlock state. Once the circuit is in deadlock
state only a HardStop command followed by a GetFullStatus1 command will cause the circuit to leave
the deadlock state.
This command is provided to the circuit by the Master to set the values for the following stepper
motor parameters in RAM:
• coil peak current value (Irun)
• coil hold current value (Ihold)
• maximum velocity for the Stepper-motor (Vmax)
• minimum velocity for the Stepper-motor (Vmin)
• acceleration shape (AccShape)
• stepping mode (StepMode)
• direction of the Stepper-motor motion (Shaft)
• acceleration (deceleration) for the Stepper-motor (Acc)
• secure position for the Stepper-motor (SecPos)
If SecPos[10:0] is set to 0x400 (the most negative decimal value of –1024) the secure position is
disabled and the GotoSecurePosition command is ignored.
SetMotorParam command
Content
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
0 Slave Address 1 1 OTP3 OTP2 OTP1 OTP0 HW 0
1 SetMotorParam 1 0 0 0 1 0 0 1
2 N/A 1 1 1 1 1 1 1 1
3 N/A 1 1 1 1 1 1 1 1
4 Irun & I hold Irun(3:0) Ihold(3:0)
5 Vmax & Vmin Vmax(3:0) Vmin(3:0)
6 Status SecPos(10:8) Shaft Acc(3:0)
7 SecurePos SecPos(7:0)
8 StepMode AccShape StepMode[1:0]
Note: N/A = not applicable
6.8.10 SetOTPParam
This command is provided to the circuit by the Master in order to zap the OTP memory. The OTPA
address (OTPA) addresses the OTP word (please refer section 5.2.3, page 21) within the OTP
Memory structure. The Pbit byte represents the bit pattern to be programmed, where a one programs
an un-programmed OTP bit. For example, if one wants to OTP the defaults to Irun := 0xD and Ihold =
0x5, one has to execute the SetOTPParam with OTPA = 0x03 and Pbit := 0xD5. Those OTP bits that
are un-programmed can be programmed to '1' by corresponding Pbit chosen as '1' . For OTP the
supply voltage Vbat has to be within the valid range specified as VbbOTP within Table 21, page 45.
SetOTPParam command
Content
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
0 Slave Address 1 1 OTP3 OTP2 OTP1 OTP0 HW 0
1 SetOTPParam
2 N/A 1 1 1 1 1 1 1 1
3 N/A 1 1 1 1 1 1 1 1
4 OTP Address 1 1 1 1 1 OTPA(2:0)
5 Pbit Pbit(7:0)
This command is provided to the circuit by the Master to drive the motor to a given position relative to
the zero position, defined in number of half or micro steps, according to StepMode[1:0] value.
SetPosition will not be performed if one of the following flags is set to one:
• temperature shutdown <TSD>
• under voltage <UV2>
• step loss <StepLoss>
• electrical defect <ElDef>
SetPosition command
Content
Structure Byte
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
0 Slave Address 1 1 OTP3 OTP2 OTP1 OTP0 HW 0
1 SetPosition 1 0 0 0 1 0 1 1
2 N/A 1 1 1 1 1 1 1 1
3 N/A 1 1 1 1 1 1 1 1
4 Position byte1 TagPos(15:8)
5 Position byte2 TagPos(7:0)
Note: N/A = not applicable
6.8.12 SoftStop
If a SoftStop command occurs during a motion of the Stepper motor, it provokes an immediate
deceleration to Vmin followed by a stop, regardless of the position reached. This command occurs in
the following cases:
• The chip temperature rises above the Thermal shutdown threshold.
• The Master requests a SoftStop.
SoftStop command
Structure Byte Content
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
0 Slave Address 1 1 OTP3 OTP2 OTP1 OTP0 HW 0
1 SoftStop 1 0 0 0 1 1 1 1
The TMC222 has to perform a positioning task, where the actual position of the stepper motor is
unknown. The desired target position is 3000 µsteps away from position 0. See figure below.
Stop
?
Actual
Position
=
unknown
?
Target
Position
?
= 3000
X [µsteps]
Position 0
Figure 22: Positioning Example: Initial situation
The following sequence of commands has to be sent to the slave in order to complete the scenario
described above (assumed after power on):
GetFullStatus1
The command is used to read the current status of the TMC222. Electrical or environmental problems
will be reported, furthermore the circuit leaves the shutdown state and is ready for action. See 6.8.1
GetFullStatus1 on page 30.
GetFullStatus2
The circuit will enter a deadlock state if the actual position corresponds to the first target position of
the RunInit command. This command is used to read the actual position. The master must take care
that both positions are containing different values. For deadlock conditions see 5.1.11 Reference
Search / Position initialization on page 14.
SetMotorParam
In order to drive the stepper motor with a desired motion parameters like torque, velocity, aso. the
SetMotorParam command must issued. See 6.8.9 SetMotorParam on page 34.
RunInit
Hence the actual position is unknown, a position initialization has to be performed. The first motion
must drive the stepper motor into the stop for sure. The second motion is a very short motion to bring
the motor out of the stop. The actual position is then set to zero automatically after the second motion
is finished. See 6.8.8 RunInit on page 33.
After reference search the situation is as depicted in the figure below. Actual position of the stepper
motor corresponds to zero, the target position is 3000 µsteps away from the actual position.
Stop
Actual
Position
= 0
Figure 23: Positioning Example: Situation after reference search
Target
Position
= 3000
X [µsteps]
Now the positioning command SetPosition can be issued in order to drive the stepper motor to the
desired position.
This command will cause the stepper motor to move to the desired target position. See 6.8.11
SetPosition on page 35. After the motion has been finished, the situation is as depicted in the figure
below.
Stop
Actual Position
= Target Position
= 3000
X [µsteps]
Figure 24: Positioning Example: Motion finished
Afterwards the actual status and position can be verified by GetFullStatus1 and GetFullStatus2
commands. The master can check if a problem, caused by electrical or temperature problems,
occurred. Furthermore the actual position is read.
Q: How many devices can be operated on the same bus?
A: 32 devices can be discriminated by means of the physical address. However, it depends on some
factors if this high number really makes sense. First of all it has to be checked if each device can be
serviced under any circumstances in the maximum allowed time taking the bus speed and the
individual real-time requirements of each device into account. Second, the idea of reserving address
0 for OTP physical address programming during system installation and defective parts replacement
reduces the number to 30.
Q: How to program the OTP physical address bits of a device if there are more devices
connected to the same bus?
A: The problem here is that all new devices are shipped with the OTP physical address bits set to
zero making it difficult to address just one device with the SetOTPParam command. Use HW input as
chip select line to address just one device by SetOTPParam. If this is impractible since the HW input
is hardwired or not controllable for any other reason the only alternative is to assemble and program
one device after the other. I.e., assemble only first device and program the desired non-zero address,
then assemble the second device and program the desired non-zero address, and so on until all
devices are assembled and programmed. This is also a good service concept when replacing
defective devices in the field: The idea is that all devices are programmed to different non-zero
physical addresses at production/installation time. Once a defective device is being replaced the
replacement part can easily be addressed by SetOTPParam since it is the only part with physical
address zero.
7.2 General problems when getting started
Q: What is the meaning of ElDef?
A: The ElDef flag (‘Electrical Defect’) is the logical ORing of the OVC1 and OVC2 flags. OVC1 is set
to one in case of an overcurrent (coil short) or open load condition (selected coil current is not
reached) for coil A. OVC2 is the equivalent for coil B.
Q: What could be the reason for ElDef / OVC1 / OVC2 being set to one?
A: There are a number of possible causes:
• Motor not connected (? open load)
• Connected motor has shorted coils (? overcurrent) or broken coils (? open load)
• Motor coils connected to the wrong device pins
• Selected coil current can not be reached (? open load) due to high coil impedance or low
supply voltage. Solution: Select a lower coil run/hold current or rise the supply voltage.
Generally: the calculated voltage required to reach a desired coil current at a given coil
resistance (V = I • R) must be significantly lower than actual supply voltage due to the coil
inductivity.
Q: Should the external switch be normally closed or open when the reference position is hit?
A: The SWI input resp. the ESW flag have neither effect on any internal state machine nor on
command processing, even not on the RunInit command. ESW must be polled by software using
GetFullStatus1 command. The software can simply be adapted to whatever state the switch is in
when the reference position is hit, i.e. closed or open.
A: The Shaft bit determines the rotating direction of the motor, i.e. clockwise or counter-clockwise
rotation.
Q: How to generate an interrupt when the target position is reached?
A: This is not possible. The device hasn’t any interrupt output at all. Just poll ActPos or Motion[2:0]
using an appropriate command.
Q: How can I ensure that I always get consistent data for ActPos and ESW?
A: There isn’t a single command to read both ActPos and ESW simultaneously. GetFullStatus1 will
read ESW whereas GetFullStatus2 will read ActPos. Thus it is not possible to read consistent values
as long as a motion is in progress.
Q: How to specify a second target position to go to immediately after a first target position
has been reached?
A: This is possible using the RunInit command. Note, that after the second target position has been
reached the internal position counter ActPos is reset to zero.
Q: Is it possible to change Vmax on-the-fly?
A: Yes, it is, if the new velocity is in the same group as the old one (see Vmax Parameters).
Otherwise correct positioning is not ensured anymore. Vmax values are divided into four groups:
• group A: Vmax index = 0
• group B: Vmax index = 1, 2, 3, 4 ,5 or 6
• group C: Vmax index = 7, 8, 9, 10 ,11 or 12
• group D: Vmax index = 13, 14 or 15
Q: Is it possible to change the stepping mode on-the-fly?
A: Yes, it is possible and it has immediate effect on the current motion.
Q: How to operate in continuous velocity mode rather than positioning (ramp) mode?
A: There is no velocity mode. The device was designed primarily for positioning tasks so for each
motion there has to be specified a target position by the respective command. However, velocity
mode can be emulated by repeating the following two commands again and again:
• Read ActPos using GetFullStatus2 command
• Set lower 16 bits of [ActPos+32767] as the next target position using SetPosition command
For real continuous motion this sequence has to be repeated before the current target position has
been reached.
Q: Which units, formats and ranges does position information have?
A: All 16-bit position data fields in commands and responses are coded in two’s complement format
with bit 0 representing 1/16 micro-steps. Hence a position range of –32768…+32767 in units of 1/16
micro-steps is covered regardless of the selected stepping mode (1/2, 1/4, 1/8 or 1/16 microstepping). The difference between the stepping modes is the resolution resp. the position of the LSB
in the 16-bit position data field: it’s bit 0 for 1/16, bit 1 for 1/8, bit 2 for 1/4 and bit 3 for 1/2 microstepping. The position range can be regarded as a circle since position –32768 is just 1/16 micro-step
away from position +32767. The device will always take the shortest way from the current to the
target position, i.e., if the current position is +32767 and the target position is –32768 just 1/16 microstep will be executed. 65535 1/16 micro-steps in the opposite direction can be achieved for example
by two consecutive SetPosition commands with target positions 0 and –32768.
The 11-bit secure position data field can be treated as the upper 11 MSBs of the 16-bit position data
fields described above with the 5 LSBs hardwired to zero. Hence it covers the same position range
with a reduced resolution: The position range is –1024…+1023 in units of two full-steps.
A: The recommended way is to use the RunInit command. Two motions are specified through RunInit.
The first motion is to reach the mechanical stop. Its target position should be specified far away
enough so that the mechanical stop will be reached from any possible starting position. There is no
internal stall detection so that at the end of the first motion the step motor will bounce against the
mechanical stop loosing steps until the internal target position is reached. The second motion then
can be used either to drive in the opposite direction out of the mechanical stop right into the reference
position which is a known number of steps away from the mechanical stop. Or the second motion can
slowly drive a few steps in the same direction against the mechanical stop to compensate for the
bouncing of the faster first motion and stop as close to the mechanical stop as possible.
Q: Can the SWI input help in finding a reference position?
Not directly. The current state of the SWI input is reflected by the ESW flag which can only be polled
using the command GetFullStatus1. The SWI input resp. the ESW flag have neither influence on any
internal state machine nor on command processing. The recommended way to find a reference
position is to use the RunInit command. Alternatively one could initiate a long distance motion at very
low speed using SetPosition and then poll ESW as frequently as possible to be able to stop the
motion using HardStop right in the moment the switch position is reached. Then one would reset the
internal position counters ActPos and TagPos using the ResetPosition command.
Q: What is the logic of the ESW flag?
A: The ESW flag reflects the state of the SWI input. ESW is set to one if SWI is high or low, i.e.
pulled to VBAT or to GND. ESW is set to zero if SWI is left open, i.e. floating. ESW is updated
synchronously with ActPos every 1024 µs.
Q: Is it possible to swap the logic of the ESW flag?
A: No, it’s not. Actually this is not necessary since the ESW flag must be polled and evaluated by
software anyway. The state of ESW has neither effect on any internal state machine nor on command
processing.
Q: What else is important for the RunInit command?
A: The first target position of RunInit must be different from the current position before sending
RunInit and the second target position must be different from the first one. Otherwise a deadlock
situation can occur. During execution of RunInit only Get… commands should be sent to the device.
Q: Does the second motion of RunInit stop when the ESW flag changes, or does it continue
into the mechanical stop?
A: Neither nor. The SWI input resp. the ESW flag have neither effect on any internal state machine
nor on command processing, i.e. the RunInit command is not influenced by SWI / ESW. The same is
true for the mechanical stop: as there isn’t any internal stall detection the RunInit command can not
detect a mechanical stop. When the mechanical stop is hit the first or second motion of RunInit (or
the motion of any other motion command) will be continued until the internal position counter ActPos
has reached the target position of this motion. This results in the motor bouncing against the
mechanical stop and loosing steps. The intention of the second motion of RunInit is to drive out of the
mechanical stop (reached by the first motion) to the desired reference position at a known distance
from the mechanical stop or to drive slowly against the mechanical stop again to compensate for the
bouncing of the first motion and to come to a standstill as close to the mechanical stop as possible.
Q: Does RunInit reset the position?
A: Yes, it does. After the second motion of RunInit has been finished the internal position counter
ActPos is reset to zero.
The junction case thermal resistance is 28°C/W, leading to a junction ambient thermal resistance of
63°C/W, with the PCB ground plane layout condition given in the figure below and with
Supply and Voltage regulator
Symbol Pin(s) Parameter Test condition Min Typ Max Unit
Vbb Nominal operating supply range (*) 6.5 18 V
VbbOTP Supply Voltage for OTP zapping 8.5 9.5 V
UV1 Low voltage high threshold 8.8 9.4 9.8 V
UV2 Stop voltage low threshold 8.1 8.5 8.9 V
Ibat
Vdd Internal regulated output
IddStop Digital current consumption Vbb < UV2 2 mA
VddReset Digital supply reset level
IddLim
VBB
VDD
Total current consumption Unloaded Outputs 10 mA
(**)
(***)
4.4 V
Current limitation Pin shorted to ground 40 mA
8V < Vbb < 18V
Cload = 1µF (+100nF cer.)
4.75 5 5.25 V
Table 21: DC Parameters Supply and Voltage regulator
(*) Communication over serial bus is operating. Motordriver is disabled when Vbb < UV2.
(**) Pin VDD must not be used for any external supply.
(***) The RAM content will not be altered above this voltage
Switch Input and hardwired address input HW
Symbol Pin(s) Parameter Test condition Min Typ Max Unit
Rt_OFF Switch OFF resistance
Rt_ON Switch ON resistance
Vbb_sw Vbb range for guaranteed
Vmax_sw Maximum Voltage T < 1s 40 V
Ilim_sw
SWI
HW
operation of SWI and HW
Current limitation Short to GND or Vbat 30 mA
(*)
10
(*)
Switch to GND or Vbat
2
6 18 V
k?
k?
Table 22: DC Parameters Switch Input and hardwired address input
(*) External resistance value seen from pin SWI or HW, including 1k? series resistor
Test pin
Symbol Pin(s) Parameter Test condition Min Typ Max Unit
Vhigh
Vlow
HWhyst
TST
Input level high
Input level low
Hysteresis 0.075 Vdd
0.7
0.3
Vdd
Vdd
Table 23: DC Parameters Test pin
Charge Pump
Symbol Pin(s) Parameter Test condition Min Typ Max Unit
0.91p September 18, 2003 pins renamed according to TRINAMIC conventions; corrections
0.92p
0.93p
1.01
1.02 September 15, 2004 Updated Ordering Information; improved description of 2nd motion
1.03
1.04
1.05
1.06
Please refer to www.trinamic.com for updated data sheets and application notes on this
product and on other products.
The TMCtechLIB CD-ROM including data sheets, application notes, schematics of evaluation
boards, software of evaluation boards, source code examples, parameter calculation
spreadsheets, tools, and more is available from TRINAMIC Motion Control GmbH & Co. KG by
request to info@trinamic.com
Date Comments
July 9, 2003 before v. 0.90 changes on unpublished internal versions only
concerning cross references, drawings in PDF
January 28, 2004 Order Code Update (Table 2: Ordering Information, page 7)
April 23, 2004 New TRINAMIC logo; Table 5: Acc Parameter, page 11:
combined cells with same value; ESW is zero when switch is
open (section 5.1.9, page 12); Table 9: OTP Memory Structure on
page 21: corrections concerning bit mappings (exchanged
locations of SecPos10… SecPos8 and StepMode1… StepMode
0);corrected command descriptions
August 24, 2004 velocity groups integrated into Vmax table; corrected and
enhanced Vmin table; corrected meaning of Shaft bit; FAQ
included
of RunInit in Reference Search / Position initialization; combined
tables for Irun and Ihold; some corrections to DC Parameters;
added final travel to secure position during RunInit; reworked
Internal handling of commands and flags
October 1, 2004 New company address
January 7, 2005 Order code updated (Table 2: Ordering Information, page 7
October 21, 2005 Unit [FS/s] for Vmin added for Table 4 page 11, hint concerning
OTP memory (section 5.2, page 19); notes concerning "N/A = not
applicable" added due to customer requests, general hint
concerning N/A added and hint concerning slave address (byte 0)
vs. slave address (byte) of response datagrams added (section
6.8, page 30); hints added concerning the SWI switch input and
its ESW flag (section 5.1.9, page 12); hints concerning physical
address (section 6.3, page 26); GetFullStatus1 command
(Response) Byte 1 Structure corrected (section 6.8.1, page 30);
GetFullStatus2 command (Response) Byte 1 Structure corrected
(section 6.8.2, page 31); explanations and cross reference for
OTP from section 6.8.10, page 34 to section 5.2.3 page 21;
labeling indices of contend for TagPos 1 & 2 corrected for the
RunInit Command (section 6.8.8, page 33)
Mach 15, 2007 QFN32 package information added: Pin and Signal description to
section 2.6 page 6, Ordering information to 4 page 7, Package
Outline information to 8 page 41;
Comment to 5.1.11, page 14: positions of Pos1 and Pos2;
orientation of marking outline for TMC222 symbols referring to the
SOIC package adapted to real marking (p. 1, p. 6)