AMIS-30621 LIN Microstepping Motordriver Data Sheet General Description The chip receives high-level positioning instructions through the interface and subsequently drives the motor coils until the desired position is reached. The on-chip position controller is configurable (OTP and Interface) for different motor types, positioning ranges and parameters for speed, acceleration, and deceleration. The AMIS-30621 is a member of a stepper motordriver family with position controller and control/diagnostics interface integrated in one single chip. The family consists of two products: • AMIS-30621 with LIN interface, ready to build dedicated mechatronics solutions connected remotely with a LIN master. • AMIS-30622 with SERIAL interface, ready to act as peripheral device next to a microcontroller. The AMIS-30621 acts as a slave on the bus and the master can fetch specific status information like actual position, error flags, etc. from each individual slave node. Features Motordriver LIN Interface • Microstepping (1/2, 1/4, 1/8, 1/16) • Low resonance & noise • High resolution • Programmable peak current up to 800mA • 20kHz PWM current-control • Automatic selection of fast & slow decay mode • Internal fly-back FETs • Fully integrated current sense • 8V-29V supply voltage • Automotive compliant • Full diagnostics and status information • Physical - and data-link-layer (conform to LIN rev. 1.3) • Dynamically allocated indentifiers • Up to 128 node addresses Controller with RAM and OTP Memory Power Saving • Position controller • Configurable speeds, acceleration and deceleration • Flexible hold-current • Movement/position sensor-input • Optional stall detection • Power-down supply current <50µA • 5V regulator with wake-up on LIN activity Protection • Over-current protection • Under-voltage management • Over-voltage protection • High-temp warning and shutdown • Low-temp warning • LIN bus short-circuit protection to supply & ground EMI compatibility • Power drivers with slope control Applications and Benefits demands on the master microcontroller. The bus structure simplifies PCB track-layout and/or wiring architectures. The AMIS-30621 is ideally suited for small positioning applications. Target markets include: automotive (headlamp alignment, HVAC, idle control, cruise), industrial equipment (lighting, fluid control, labeling, process, XYZ tables) and building automation (HVAC, surveillance, satellite dish positioning). Suitable applications typically have multiple axes or require mechatronic solutions with the driver chip mounted directly on the motor. Microstepping operation removes the design trade-off between minimal operation speed and avoiding the risk of noise and step-loss due to resonance phenomena. The stalldetection feature (optional) offers silent, yet accurate position-calibrations during the referencing run and allows semi-closed loop operation when approaching the mechanical end-stops. The high abstraction level of the products’ command set reduces the load of the processor on the master side. Scaling of the application towards number of axes is straight-forward: hardware - and software designs are extended in a modular way, without severely effecting the All these benefits result in reduced system-cost and timeto-market and improved technical performance. Ordering Information Part N° AMIS-30621 Package SOIC-20 Peak Current 800mA Temp. Range -40°C…125°C AMI Semiconductor - Rev. 1.4 www.amis.com 1 AMIS-30621 LIN Microstepping Motordriver Data Sheet Table of Contents 1. Quick Reference Data 1.1 Absolute Maximum Ratings 1.2 Operating Ranges 2. Block Diagram 3. Pin-out 4. Package Thermal Resistance 4.1 SO20 5. DC Parameters 6. AC Parameters 7. Typical Application 8. Positioning Data 8.1 Stepping Modes 8.2 Maximum Velocity 8.3 Minimum Velocity 8.4 Acceleration and Deceleration 8.5 Positioning 8.5.1 Position Ranges 8.5.2 Secure Position 8.5.3 Shaft 9. Functional Description 9.1 Structure Description 9.1.1 Stepper Motordriver 9.1.2 Control Logic (Position Controller and Main Control) 9.1.3 LIN Interface 9.1.4 Miscellaneous 9.2 Functions Description 9.2.1 Position Controller 220.127.116.11 Positioning and Motion Control 18.104.22.168 Position Initialization 22.214.171.124 External Switch and HW Pin 9.2.2 Main Control and Register, OTP Memory + RAM 126.96.36.199 Power-up Phase 188.8.131.52 Reset State 184.108.40.206 Soft Stop 220.127.116.11 Thermal Shutdown Mode 18.104.22.168 Temperature Management 22.214.171.124 Battery voltage Management 126.96.36.199 188.8.131.52 184.108.40.206 220.127.116.11 18.104.22.168 22.214.171.124 126.96.36.199 3 3 3 3 4 4 4 5 6 7 8 8 8 8 9 9 9 12 12 13 13 13 13 13 13 14 14 14 16 16 10. 11. 17 17 18 18 18 18 19 12. 13. Document History Version 1.0 1.1 1.2 1.3 1.4 Date of Version July 16th, 2002 October 18th, 2002 January 27th, 2003 February 19th, 2003 March 3rd, 2003 AMI Semiconductor - Rev. 1.4 www.amis.com 2 Sleep Mode Motor Shutdown Mode RAM Registers Flags Table Application Commands Priority Encoder Application Parameters Stored in OTP Memory 188.8.131.52 OTP Memory Structure 9.2.3 Motordriver 184.108.40.206 Current Waveforms in the Coils 220.127.116.11 PWM Regulation 18.104.22.168 Motor Starting Phase 22.214.171.124 Motor Stopping Phase 126.96.36.199 Charge Pump Monitoring 188.8.131.52 Electrical Defect on Coils, Detection and Confirmation 9.2.4 LIN Controller 184.108.40.206 General Description 220.127.116.11 Slave Operational Range for Proper Self Synchronization 18.104.22.168 Functional Description 22.214.171.124 Error Status Register 126.96.36.199 Physical Address of the Curcuit 188.8.131.52 LIN Frames 184.108.40.206 Commands Table Features 10.1 Position Periodicity Resistance to Electrical and Electromagnetic Disturbances 11.1 Electrostatic Discharges 11.2 Schäffner Pulses 11.3 EMC 11.4 EMI 11.5 Power Supply Micro-Interruptions Packages Outline Conditioning 20 20 21 22 23 24 26 27 28 28 28 28 29 29 29 30 30 30 31 31 31 32 32 38 38 39 39 39 39 39 39 40 40 AMIS-30621 LIN Microstepping Motordriver 1.0 Quick Reference Data 1.1 Absolute Maximum Ratings Parameter Vbb Supply voltage Vlin Bus input voltage Tamb Ambient temperature under bias2 Tst Storage temperature Electrostatic discharge voltage on LIN pin Vesd3 Electrostatic discharge voltage on other pins Min Max -0.3 -80 -50 -55 -4 -2 Unit +401 +80 +150 +160 +4 +2 Notes (1) For limited time: < 0.5 s. (2) The circuit functionality is not guaranteed. (3) Human body model (100 pF via 1.5 kΩ, according to MIL std. 883E, method 3015.7). 1.2 Operating Ranges Parameter Vbb Supply voltage Top Operating temperature range Vbb ≤ 18V Vbb ≤ 29V Min +8 -40 -40 Max +29 +125 +85 2.0 Block Diagram AMI Semiconductor - Rev. 1.4 www.amis.com 3 Unit V °C °C V V °C °C kV kV Data Sheet AMIS-30621 LIN Microstepping Motordriver Data Sheet 3.0 Pin-out SOIC-20 Pin Name HW0 HW1 VDD GND TST LIN HW2 CPN CPP VCP VBB MOTYN MOTYP MOTXN MOTXP SWI Pin Description Bit 0 of LIN-ADD to be tied to GND Bit 1 of LIN-ADD or VDD if not used Internal supply (needs external decoupling capacitor) 3 Ground, heat sink Test pin (to be tied to ground in normal operation) 5 LIN-bus connection Bit 2 of LIN-ADD Negative connection of pump-capacitor (charge pump) Positive connection of pump-capacitor (charge pump) Charge-pump filter-capacitor Battery voltage supply Negative end of phase Y coil Positive end of phase Y coil Negative end of phase X coil Positive end of phase X coil Switch input SOIC-20 1 2 4,7,14,17 6 8 9 10 11 12, 19 13 15 16 18 20 4.0 Package Thermal Resistance 4.1 SO20 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 on the figure beside, and with: • PCB thickness = 1.6mm • 1 layer • Copper thickness = 35µm AMI Semiconductor - Rev. 1.4 www.amis.com 2 x (10mm x 23mm) 4 AMIS-30621 LIN Microstepping Motordriver Data Sheet 5.0 DC Parameters The DC parameters are given for Vbb and temperature in their operating ranges. Convention: currents flowing in the circuit are defined as positive. Symbol Motordriver Pin(s) IMSmax Peak IMSmax RMS IMSabs IMSrel RDSon MOTXP MOTXN MOTYP MOTYN Parameter Max current trough motor coil in normal operation Max RMS current trough coil in normal operation Absolute error on coil current Error on current ratio Icoilx / Icoily On resistance for each pin (including bond wire) Pull down current IMSL LIN Transmitter Ibus_on Dominant state, driver on Ibus_off Dominant state, driver off Ibus_off LIN Recessive state, driver off Ibus_lim Current limitation Rslave Pull-up resistance LIN Receiver Vbus_dom Receiver dominant state Vbus_rec LIN Receiver recessive state Vbus_hys Receiver hysteresis Thermal Warning & Shutdown Ttw Thermal Warning Ttsd (1) Thermal shutdown Tlow Low temperature warning Supply & Voltage Regulator Vbb Nominal operating supply range VbbOTP Supply voltage for OTP zapping UV1 Stop voltage high threshold VBB UV2 Stop voltage low threshold Ibat Total current consumption Ibat_s (2) Sleep mode current consumption Vdd Internal regulated output (3) IddStop VDD Digital current consumption VddReset Digital supply reset level (4) IddLim Current limitation Switch Input and Hardwire Address Input Rt_OFF Switch OFF resistance (5) Rt_ON Switch ON resistance (5) SWI Vbb range for guaranteed Vbb_sw HW2 operation of SWI and HW2 Vmax_sw Maximum voltage Ilim_sw Current limitation Hardwired Address Inputs and Test Pin Vlow HW0 Input level high Vhigh HW1 Input level low HWhyst TST Hysteresis Charge Pump Output voltage Vcp VCP Cbuffer External buffer capacitor CPP Cpump External pump capacitor CPN Test Conditions Typ To be confirmed by characterization HZ mode Vbus = 1.4V Vbus = 0V Vbus = Vbat mA 570 mA 10 7 % % 1 Ω mA 30 20 200 47 mA mA µA mA kΩ 0.4 1 0.2 Vbb Vbb Vbb 152 °C °C °C 18 10.0 9.8 8.9 50 V V V V mA µA 5.25 V 4.4 40 mA V mA 2 kΩ kΩ 29 V 40V V mA . 0.3 Vdd Vdd Vdd Vbb+10 Vbb+12.5 Vbb+5.8V 220 Vbb+15 470 V V nF 220 470 nF 40 -1 0 0.6 0.05 138 6.5 9.0 8.8 8.1 Unloaded outputs 4.75 145 Ttw+10 Ttw-155 9.4 8.5 10 5 2 Pin shorted to ground Switch to Gnd or Vbat, 10 6 T < 1s Short to Gnd or Vbat 30 0.7 0.075 Vbb > 15V Vbb > 8V Unit 1 50 20 8V < Vbb < 18V Cload = 1µF (+100nF cer.) Vbb < UV2 Max 800 -10 -7 (4) The RAM content will not be altered above this voltage. (5) External resistance value seen from pin SWI or HW2, including 1kW series resistor. Notes (1) No more than 100 cumulated hours in life time above Ttsd. (2) To be confirmed by measurements. (3) Pin VDD must not be used for any external supply. AMI Semiconducto - Rev. 1.4r www.amis.com Min 5 AMIS-30621 LIN Microstepping Motordriver Data Sheet 6.0 AC Parameters The AC parameters are given for Vbb and temperature in their operating ranges. Symbol Pin(s) Power-up Tpu Internal Oscillator Fosc LIN Transmitter Slope_F/R t_slope_F/R LIN T_tr_F T_tr_R t_slope_Sym Tsym_tr LIN Receiver Parameter Test Conditions Typ Max Unit 10 ms 4.0 4.4 MHz 0.1 2.6 0.1 0.1 -4 -2 1 1 3 22.5 4 4 4 2 V/µs µs µs µs µs µs 0.1 4 6 µs 0.1 4 6 µs -2 50 100 2 200 µs µs Power-up time Frequency of internal oscillator Slope falling (or rising) edge Slope time falling (or rising) edge Propagation delay TxD low to bus Propagation delay TxD high to bus Slope time symmetry Transmitter delay symmetry Propagation delay bus dominant to TxD low LIN Propagation delay bus recessive T_rec_R to TxD high Tsym,Rec Receiver delay symmetry Twake Wake-up delay time Switch Input and Hardwire Address Input Tsw SWI Scan pulse period (1) Tsw_on HW2 Scan pulse duration Motordriver Fpwm PWM frequency (1) Tbrise MOTxx Turn-on transient time Tbfall Turn-off transient time Charge Pump CPN FCP Charge pump frequency (1) CPP 3.6 Between 40% and 60% Extrapolated t_slope_F – t_slope_R T_tr_F – T_tr_R T_rec_F 1024 1/16 18 Between 10% and 90% 20 350 250 250 Note (1) Derived from the internal oscillator. AMI Semiconductor - Rev. 1.4 www.amis.com Min 6 µs Tsw 22 kHz ns ns kHz AMIS-30621 LIN Microstepping Motordriver Data Sheet 7.0 Typical Application (4) Depending on the application the ESR value of the 1µF and 100µF capacitors must be carefully chosen. (5) 100nF capacitors must be close to pins VBB and VDD. (6) 220nF capacitors must be as close as possible to pins CPN, CPP, VCP and VBB to reduce EMC radiation. Notes (1) The switch can be connected to battery instead of ground. (2) Resistors tolerance: ± 5%. (3) 2.7nF capacitors: 2.7nF is the minimum value, maximum value is 10nF. AMI Semiconductor - Rev. 1.4 www.amis.com 7 AMIS-30621 LIN Microstepping Motordriver Data Sheet 8.0 Positioning Data 8.1 Stepping Modes 8.2 Maximum Velocity One of four possible stepping modes can be programmed: • Half-stepping • 1/4 micro-stepping • 1/8 micro-stepping • 1/16 micro-stepping For each stepping mode, Vmax can be programmed to 16 possible values given in the table below. Vmax Index Vmax (Full Step/s) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 99 136 167 197 213 228 243 273 303 334 364 395 456 546 729 973 Group A B C D Half-stepping (half-step/s) 197 273 334 395 425 456 486 546 607 668 729 790 912 1091 1457 1945 The accuracy of Vmax is derived from the internal oscillator. Under special circumstances it is possible to change the Vmax parameter while a motion is ongoing. All 16 entries for the Vmax parameter are divided into four groups. When changing Vmax during a motion the application must take care that the new Vmax parameter stays within the same group. Stepping Mode 1/4th Micro-stepping 1/8th Micro-stepping (micro-step/s) (micro-step/s) 395 790 546 1091 668 1335 790 1579 851 1701 912 1823 973 1945 1091 2182 1213 2426 1335 2670 1457 2914 1579 3159 1823 3647 2182 4364 2914 5829 3891 7782 8.3 Minimum Velocity Once Vmax is chosen, 16 possible values can be programmed for Vmin. The table below provides the Vmax Index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Vmax Factor 1 1/32 2/32 3/32 4/32 5/32 6/32 7/32 8/32 9/32 10/32 11/32 12/32 13/32 14/32 15/32 99 99 3 6 9 12 15 18 21 24 28 31 34 37 40 43 46 136 136 4 8 12 16 21 25 30 33 38 42 47 51 55 59 64 167 167 5 10 15 20 26 31 36 41 47 51 57 62 68 72 78 197 197 6 11 18 24 31 36 43 49 55 61 68 73 80 86 93 213 213 6 12 19 26 32 39 46 52 59 66 72 79 86 93 99 obtainable values in Full-step/s. The accuracy of Vmin is derived from the internal oscillator. 228 228 7 13 21 28 35 42 50 56 64 71 78 85 93 99 107 Vimax (Full-step/s) 273 303 334 273 303 334 8 8 10 15 17 19 25 27 31 32 36 40 42 46 51 50 55 61 59 65 72 67 74 82 76 84 93 84 93 103 93 103 114 101 113 124 111 122 135 118 132 145 128 141 156 243 243 7 14 22 30 37 45 52 60 68 75 83 91 98 106 113 Notes (1) The Vmax factor is an approximation. (2) In case of motion without acceleration (AccShape = 1) the length of the steps = 1/Vmin. In case of accelerated AMI Semiconductor - Rev. 1.4 www.amis.com 1/16th Micro-stepping (micro-step/s) 1579 2182 2670 3159 3403 3647 3891 4364 4852 5341 5829 6317 7294 8728 11658 15564 364 364 10 21 32 44 55 67 78 90 101 113 124 135 147 158 170 395 395 11 23 36 48 61 72 86 97 111 122 135 147 160 172 185 456 456 13 27 42 55 71 84 99 113 128 141 156 170 185 198 214 546 546 15 31 50 65 84 99 118 134 153 168 187 202 221 237 256 729 729 19 42 65 88 111 134 156 179 202 225 248 271 294 317 340 973 973 27 57 88 118 149 179 210 240 271 301 332 362 393 423 454 motion (AccShape = 0) the length of the first step is shorter than 1/Vmin depending of Vmin, Vmax and Acc. 8 AMIS-30621 LIN Microstepping Motordriver Data Sheet 8.4 Acceleration and Deceleration Sixteen possible values can be programmed for Acc (acceleration and deceleration between Vmin and Vmax). The table below provides the obtainable values in Full- 99 136 167 197 213 228 243 273 303 334 Acceleration (Full-step/s2) 106 218 1004 3609 6228 8848 11409 13970 16531 19092 21886 24447 27008 29570 ➔ Vmax (FS/s) ‘ ACC Index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 step/s2. One observes restrictions for some combination of acceleration index and maximum speed (gray cells). The accuracy of Acc is derived from the internal oscillator. 14785 49 364 395 456 546 729 973 473 735 34925 40047 29570 The formula to compute the number of equivalent Full-step during acceleration phase is: 8.5 Positioning words must be aligned as described in the table below. When using command SetPositionShort or GotoSecurePosition, data is automatically aligned. The position programmed in commands SetPosition and SetPositionShort is given as a number of (micro)steps. According to the chosen stepping mode, the position Stepping Mode 1/16th 1/8th 1/4th Half-stepping PositionShort SecurePosition Position Word: Pos [15 : 0] S S S S S S B14 B13 B12 B11 S B9 B13 B12 B11 B10 S B8 B12 B11 B11 B10 B10 B9 B9 B8 B9 B8 B7 B6 B10 B9 B8 B7 B7 B5 B9 B8 B7 B6 B6 B4 B8 B7 B6 B5 B5 B3 B7 B6 B5 B4 B4 B2 B6 B5 B4 B3 B3 B1 Shift B5 B4 B3 B2 B2 LSB B4 B3 B2 B1 B1 0 B3 B2 B1 LSB LSB 0 B2 B1 LSB 0 0 0 B1 LSB 0 0 0 0 LSB 0 0 0 0 0 No shift 1-bit left ↔ x2 2-bit left ↔ x4 3-bit left ↔ x8 No shift No shift 8.5.1 Position Ranges used (see § 220.127.116.11) and to the chosen stepping mode, the position range will be as shown in the table below. A position is coded by using the binary two’s complement format. According to the positioning commands which are Command SetPosition SetPositionShort Stepping Mode Half-stepping 1/4th micro-stepping 1/8th micro-stepping 1/16th micro-stepping Half-stepping Position Range -4096 to +4095 -8192 to +8191 -16384 to +16383 -32768 to +32767 -1024 to +1023 Number 13 14 15 16 11 left by a certain number of bits, according to the chosen stepping mode. When using the command SetPosition, although coded on 16 bits, the position word will have to be shifted on the AMI Semiconductor - Rev. 1.4 www.amis.com Full Range 8192 half-steps 16384 micro-steps 32768 micro-steps 65536 micro-steps 2048 half-steps 9 AMIS-30621 LIN Microstepping Motordriver Data Sheet 8.5.2 Secure Position shown in the table GotoSecurePosition. A secure position can be programmed. It is coded on 11-bit, thus having a lower resolution than normal positions, as Stepping Mode Half-stepping 1/4th micro-stepping 1/8th micro-stepping 1/16th micro-stepping below. See command Secure Position Resoultion 4 half-steps 8 micro-steps (1/4th) 16 micro-steps (1/8th) 32 micro-steps (1/16th) Important note The secure position is disabled in case the programmed value is the reserved code “10000000000” (most negative position). 8.5.3 Shaft A shaft bit can be programmed to define whether a positive motion is an outer or an inner motion: • Shaft = 0 ➞ MOTXP is used as positive pin of the X coil, while MOTXN is the negative one. • Shaft = 1 ➞ opposite situation. 9.0 Functional Description 9.1 Structure Description 9.1.1 Stepper Motordriver It will take into account the successive positioning commands to initiate or stop properly the stepper motor in order to reach the set point in a minimum time. The Motordriver receives the control signals from the control logic. It mainly features: • Two H-bridges designed to drive a two separated coils stepper motor. Each coil (X and Y) is driven by one Hbridge, and the driver controls the currents flowing through the coils. It also receives feedback from the motordriver part in order to manage possible problems and decide about internal actions and reporting to the LIN interface. The rotational position of the rotor, in unloaded condition, is defined by the ratio of current flowing in X and Y. The torque of the stepper motor when unloaded is controlled by the magnitude of the currents in X and Y. • The control block for the H-bridges including the PWM control, the synchronous rectification and the internal current sensing circuitry • The charge pump to allow driving of the H-bridges’ high side transistors. • Two pre-scale 4-bit DACs to set the maximum magnitude of the current through X and Y. • Two DACs to set the correct current ratio through X and Y. 9.1.3 LIN Interface The LIN interface implements the physical layer and the MAC and LLC layers according to the OSI Reference Model. It provides and gets information to and from the Control logic block, in order to drive the stepper motor, to configure the way this motor must be driven, or to get information such as actual position or diagnosis (temperature, battery voltage, electrical status…) and pass it to the LIN master node. 9.1.4 Miscellaneous The AMIS-30621 also implements the followings: • An internal oscillator, needed for the LIN protocol handler as well as for the Control logic and for the PWM control of the motordriver. • An internal trimmed voltage source for precise referencing. • A protection block featuring a Thermal Shutdown and a Power-on-reset circuit. • A 5V regulator (from the battery supply) to supply the internal logic circuitry. Battery voltage monitoring is also performed by this block which provides needed information to the control logic part. The same applies for detection and reporting of an electrical problem that could occur on the coils or the charge pump. 9.1.2 Control Logic (Position Controller and Main Control) The control logic block stores the information provided by the LIN interface (in a RAM or an OTP memory) and digitally controls the positioning of the stepper motor in terms of speed and acceleration, by feeding the right signals to the motordriver state machine. AMI Semiconductor - Rev. 1.4 www.amis.com 10 AMIS-30621 LIN Microstepping Motordriver 9.2.1 Position Controller 9.2 Functions Description This chapter describes the four most important blocks: • Position controller • Main control and register, OTP memory + ROM • Motordriver • LIN controller Parameter Pmax - Pmin Zero speed Hold Current Maximum current Acceleration and deceleration Vmin Vmax AMI Semiconductor - Rev. 1.4 www.amis.com Data Sheet 18.104.22.168 Positioning and Motion Control A positioning command will produce a motion as illustrated below. A motion starts with an acceleration phase from minimum velocity (Vmin) to maximum velocity (Vmax), and ends with a symmetrical deceleration. This is defined by the Control logic according to the position required by the application and to the parameters programmed by the application during configuration phase. The current in the coils is also programmable. Value See § 8.5 See § 22.214.171.124 (Ihold) See § 126.96.36.199 (Irun) See § 8.4 See § 8.3 See § 8.2 11 AMIS-30621 LIN Microstepping Motordriver Different positioning examples are shown in the table below. Short motion New positioning command in same direction, shorter or longer, while a motion is running at maximum velocity New positioning command in same direction while in deceleration phase Note: there is no wait time between the deceleration phase and the new acceleration phase. New positioning command in reverse direction while motion is running at maximum velocity New positioning command in reverse direction while in deceleration phase New velocity programming while motion is running AMI Semiconductor - Rev. 1.4 www.amis.com 12 Data Sheet AMIS-30621 LIN Microstepping Motordriver Data Sheet 188.8.131.52 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 § 184.108.40.206). 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 § 220.127.116.11) or by a HardStop command. On the other hand, sending a RunInit command while a motion is already ongoing is not recommended. 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). (2) Commands such as GetActualPos or GetStatus will be executed while the position initialization is running. This applies also for a dynamic ID assignment LIN frame (see § 18.104.22.168.4). (3) An initialization sequence starts by setting TagPos register to SecPos value, provided secure position is enabled otherwise TagPos is reset to zero. (4) 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. (5) The Pos1, Pos2, Vmax, and Vmin values programmed in a RunInit command apply only for a this initialization sequence. All further positioning will use the parameters stored in RAM (programmed for instance by a former SetMotorParam command). (6) Commands ResetPosition, RunInit and SoftStop will be ignored while an initialization sequence is ongoing, and will not be executed afterwards. (7) A SetMotorParam command should not be sent during an initialization sequence. (8) 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]. A position initialization consists of 2 successive motions, as illustrated below. 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 (0) The priority encoder (see § 22.214.171.124) is describing the management of states and commands. The notes below are to be considered illustrative. (1) The last SetPosition(Short) command issued during an initialization sequence will be kept in memory and executed afterwards. This applies also for the commands Sleep and SetMotorParam and GotoSecurePosition. AMI Semiconductor - Rev. 1.4 www.amis.com 13 AMIS-30621 LIN Microstepping Motordriver Data Sheet 126.96.36.199 External Switch and HW2 Pin Pin SWI and hardwired address pin HW2 (see § 188.8.131.52) will alternatively attempt to source and sink a current in/from the external switch (see application schematic) to test whether it is ON or OFF. This current is set around 10mA when a 1kW external series resistor is used. This can be represented by the following time diagram (The timings are given in § 6). If the switch is detected ON (closed), then the flag <ESW> is raised. The status of this flag can be read by the application via a GetActualPos, a GetStatus or a GetFullStatus reading frame. At the falling edge of every current pulse (at around 1kHz), the stepper-motor actual position is refreshed (register ActPos, see § 184.108.40.206), so that the master node may get synchronous information about the state of the switch together with the position of the motor. The position is then given with an accuracy of ± 1 half-step (or micro-step, depending of the programmed stepping mode). The block diagram below shows how this function is implemented for HW2. With the following truth table: State Float Float Float Float HW2Lo HW2Lo HW2Lo HW2Lo HW2Hi HW2Hi HW2Hi HW2Hi Drive LS 1 1 0 0 1 1 0 0 1 1 0 0 Drive HS 0 0 1 1 0 0 1 1 0 0 1 1 HW2_CMP 0 1 0 1 0 1 0 1 0 1 0 1 New State Float HW2Hi Float HW2Lo HW2Lo HW2Hi Float HW2Lo Float HW2Hi HW2Hi HW2Lo HW2Hi HW2Lo HW2_CMP Drive LS Drive HS note that e.g. if HW2 is connected to GND, LS-part will report "float" while HS-part will report "low resistance detected" Note: If HW2 is detected to be floating, motion to the secure position is performed. AMI Semiconductor - Rev. 1.4 www.amis.com address = "1" address = "0" CMP output; active high if low resistance detected by the LS or HS Ohm-meter request from digital to turn on the lowside part of the Ohm-meter request from digital to turn on the highside part of the Ohm-meter 14 AMIS-30621 LIN Microstepping Motordriver 9.2.2 Main Control and Register, OTP Memory + ROM Data Sheet 220.127.116.11 Soft Stop A Soft Stop is an immediate interruption of a motion, but with a deceleration phase. At the end of this action, the register TagPos is loaded with the value contained in register ActPos to avoid an attempt of the circuit to achieve the motion (see § 0). 18.104.22.168 Power-up Phase Power-up phase of the AMIS-30621 will not exceed 10ms. After this phase, the AMIS-30621 is in Shutdown mode, ready to receive LIN messages and to execute the associated commands. After power-up, the registers and flags are in the Reset state, some of them being loaded with the OTP memory content (see § 22.214.171.124). The circuit is then ready to execute a new positioning command, provided thermal and electrical conditions allow for it. 126.96.36.199 Reset State After power-up, or after a reset occurrence (e.g. a micro cut on pin VBB has made Vdd to go below VddReset level), the H-bridges will be in high impedance mode, and the registers and flags will be in a predetermined position. This is documented in § 0 and § 188.8.131.52. 184.108.40.206 Thermal Shutdown Mode When thermal shutdown occurs, the circuit performs a SoftStop command and goes to Motor shutdown mode (see below). 220.127.116.11 Temperature Management The AMIS-30621 monitors temperature by mean of two thresholds and one shutdown level, as illustrated in the state diagram below. The only condition to reset flags <TW> and <TSD> (respectively Thermal Warning and Thermal Shutdown) is to be at a temperature lower than Ttw and to get the occurrence of a GetStatus or a GetFullStatus LIN frame. AMI Semiconductor - Rev. 1.4 www.amis.com 15 AMIS-30621 LIN Microstepping Motordriver Data Sheet 18.104.22.168 Battery Voltage Management <UV2> and <StepLoss> is to recover a battery voltage higher than UV1 and to receive a GetStatus or a GetFullStatus command. The AMIS-30621 monitors the battery voltage by means of one threshold and one shutdown level, as illustrated in the state diagram below. The only condition to reset flags 22.214.171.124 Sleep Mode Sleep mode can be entered in the following cases: - The circuit receives a LIN frame with identifier 0x3C and first Data byte containing 0x00, as required by LIN specification rev 1.2. - The LIN bus remains inactive (or is lost) during more than 25000 time slots (1.30 s at 19.2 kbit/s), after which a timeout signal switches the circuit to sleep mode. When entering in Sleep mode, the stepper-motor can be driven to its secure position. After which, the circuit is completely powered down, apart from the LIN receiver which remains active to detect dominant state on the bus. In case sleep mode is entered while a motion is ongoing, a transition will occur towards secure position as described in § 9.2.1. provided SecPos is enabled, otherwise SoftStop is performed. The circuit will return to normal mode if a valid LIN frame is received while entering the Sleep mode (this valid frame can be addressed to another slave). AMI Semiconductor - Rev. 1.4 www.amis.com 16 AMIS-30621 LIN Microstepping Motordriver Data Sheet 126.96.36.199 Motor Shutdown Mode A motor shutdown occurs when: - The chip temperature rises above the thermal shutdown threshold Ttsd (see § 5) - The battery voltage goes below UV2 (see § 5) - Flag <ElDef> = ‘1’, meaning an electrical problem is detected on one or both coils, e.g. a short circuit - Flag <CPFail> = ‘1’, meaning there is a charge pump failure A motor shutdown leads to the followings: - H-bridges in high impedance mode - The TagPos register is loaded with the ActPos (to avoid any motion after leaving the motor shutdown mode) The LIN interface remains active, being able to receive orders or send status. Important While in shutdown mode, since there is no hold current in the coils, the mechanical load can cause a step loss, which indeed cannot be flagged by the AMIS-30621. Warning The application should limit the number of consecutive GetStatus or GetFullStatus commands to try to get the AMIS-30621 out of Shutdown mode when this proves to be unsuccessful, e.g. there is a permanent defect. The reliability of the circuit could be altered since Get(Full)Status attempts to disable the protection of the H-bridges. Note (0) The priority encoder (see § 188.8.131.52) is describing the management of states and commands. The note below is to be considered illustrative. (1) If the LIN communication is lost while in shutdown mode, the circuit enters the sleep mode immediately. AMI Semiconductor - Rev. 1.4 www.amis.com The conditions to get out of a motor shutdown mode are: - Reception of a GetStatus or GetFullStatus command AND - The four above causes are no more detected Which leads to H-bridges in Ihold mode. Hence the circuit is ready to execute any positioning command. This can be illustrated in the following sequence given as an application tip. The Master can check whether there is a problem or not and decide which application strategy to adopt. 17 AMIS-30621 LIN Microstepping Motordriver Data Sheet 184.108.40.206 RAM Registers Register Mnemonic Length (bit) Actual Position ActPos 16 Last Programmed Position Pos/ TagPos 16/11 Acceleration Shape AccShape 1 Coil Peak Current Irun 4 Coil Hold Current Ihold 4 Minimum Velocity Vmin 4 Maximum Velocity Vmax 4 Shaft Shaft 1 Acceleration/ Deceleration Acc 4 Secure Position SecPos 11 Stepping Mode StepMode 2 Related Commands GetActualPos GetFullStatus GotoSecurePos ResetPosition GetFullStatus GotoSecurePos ResetPosition SetPositionShort GetFullStatus ResetToDefault1 SetMotorParam GetFullStatus ResetToDefault1 SetMotorParam GetFullStatus ResetToDefault1 SetMotorParam GetFullStatus ResetToDefault1 SetMotorParam GetFullStatus ResetToDefault1 SetMotorParam GetFullStatus ResetToDefault1 SetMotorParam GetFullStatus ResetToDefault1 SetMotorParam GetFullStatus ResetToDefault1 SetMotorPara GetFullStatus ResetToDefault1 SetMotorParam Note (1) A ResetToDefault command will act as a reset of the RAM content, except for ActPos and TagPos registers that are not modified. Therefore, the application should not send a ResetToDefault during a motion, to avoid any unwanted change of parameter. AMI Semiconductor - Rev. 1.4 www.amis.com 18 Comment Reset State - 16-bit signed Note 1 - 16-bit signed or - 11-bit signed for half stepping (see § 8.5) ‘0’ ➞ normal acceleration from Vmin to Vmax ‘1’ ➞ motion at Vmin without acceleration ‘0’’ Operating current (see § 220.127.116.11) Standstill current (see § 18.104.22.168) See § 8.3 and § 22.214.171.124 (look-up table) See § 8.2 and § 126.96.36.199 (look-up table) Direction of movement for positive velocity See § 8.4 and § 188.8.131.52 (look-up table) Target position when LIN connection fails; 11 MSBs of 16-bit position (LSBs fixed to ‘0’) See § 8.1 and § 184.108.40.206 From OTP memory AMIS-30621 LIN Microstepping Motordriver Data Sheet 220.127.116.11 Flags Table Register Mnemonic Length (bit) Related Commands Charge Pump Failure CPFail 1 GetFullStatus Electrical Defect ElDef 1 GetActualPos GetStatus GetFullStatus External Switch Status ESW 1 GetActualPos GetStatus GetFullStatus Electrical Flag HS 1 Internal use Motion Status Motion 3 GetFullStatus OVC1 1 GetFullStatus OVC2 1 GetFullStatus SecEn 1 Internal use Sleep 1 Internal use Over Current in Coil X Over Current in Coil Y Secure Position Enabled Circuit Going to Sleep Mode Step Loss StepLoss 1 Motor Stop Stop 1 Temperature Info Tinfo 2 Thermal Shutdown TSD 1 Thermal Warning TW 1 Battery Stop Voltage UV2 1 VddReset 1 Digital Supply Reset AMI Semiconductor - Rev. 1.4 www.amis.com GetActualPos GetStatus GetFullStatus Internal use GetActualPos GetStatus GetFullStatus GetActualPos GetStatus GetFullStatus GetActualPos GetStatus GetFullStatus GetActualPos GetStatus GetFullStatus GetActualPos GetStatus GetFullStatus 19 Comment ‘0’ = charge pump OK ‘1’ = charge pump failure reset only after GetFullStatus <OVC1> or <OVC2> or <open circuit 1> or <open circuit 2> or <CPFail> resets only after Get(Full)Status ‘0’ = open ‘1’ = close <CPFail> or <UV2> or <ElDef> or <VDDreset> “x00” = Stop “001” = inner motion acceleration “010” = inner motion deceleration “011” = inner motion max. speed “101” = outer motion acceleration “110” = outer motion deceleration “111” = outer motion max. speed ‘1’ = over current reset only after GetFullStatus ‘1’ = over current reset only after GetFullStatus ‘0’ if SecPos = “100 0000 0000” ‘1’ otherwise ‘1’ = Sleep mode reset by LIN command Reset State ‘0’ ‘0’ ‘0’ ‘0’ “000” ‘0’ ‘0’ n.a. ‘0’ ‘1’ = step loss due to under voltage, over current or open circuit ‘1’ See § 18.104.22.168 “00” = normal temperature range “01” = low temperature warning “10” = high temperature warning “11” = motor shutdown ‘1’ = shutdown (> 155°C typ.) reset only after Get(Full)Status and if <Tinfo> = “00” ‘1’ = over temp. (> 145°C) reset only after Get(Full)Status and if <Tinfo> = “00” ‘0’ = Vbb > UV2 ‘1’ = Vbb ≤ UV2 reset only after Get(Full)Status Set at ‘1’ after power-up of the circuit. If this was due to a supply micro-cut, it warns that the RAM contents may have been lost; can be reset to ‘0’ with a GetStatus or a GetFullStatus command. ‘0’ “00” ‘0’ ‘0’ ‘0’ ‘1’ AMIS-30621 LIN Microstepping Motordriver Data Sheet 22.214.171.124 Application Commands The LIN Master will have to use commands to manage the different application tasks the AMIS-30621 can feature. The commands summary is given in the table below. Command Mnemonic GetActualPos GetFullStatus GetOTPparam GetStatus GotoSecurePosition HardStop ResetPosition ResetToDefault RunInit SetMotorParam SetOTPparam SetPosition SetPositionShort (1 motor) SetPositionShort (2 motors) SetPositionShort (4 motors) Sleep SoftStop Feature Returns the actual position of the motor Returns a complete status of the circuit Returns the OTP memory content Returns a short status of the circuit Drives the motor to its secure position Immediate motor stop Actual position becomes the zero position RAM content reset Initialization sequence Programs the motion parameters and values for the current in the motor’s coils Programs (and zaps) a selected byte of the OTP memory Drives the motor to a given position Drives the motor to a given position (half stepping mode only) Drives 2 motors to 2 given positions (half stepping mode only) Drives 4 motors to 4 given positions (half stepping mode only) Drives circuit into sleep mode Motor stopping with a deceleration phase dynamic identifiers are used for other purpose, this is acknowledged. These commands are described hereafter, with their corresponding LIN frames. One should also refer to § 126.96.36.199 for more details on LIN frames, particularly for what concerns dynamic assignment of identifiers. A gray scale coding is used to distinguish between master and slave parts within the frames and to highlight dynamic identifiers. An example is shown below. Some frames implement a Broad bit that allows to address a command to all the AMIS-30621 circuits connected to the same LIN bus. Broad is active when at ‘0’, in which case the physical address provided in the frame is thus not taken into account by the slave nodes. Usually, the AMIS-30621 makes use of dynamic identifiers for general-purpose 2, 4 or 8 bytes writing frames. If AMI Semiconductor - Rev. 1.4 www.amis.com 20 AMIS-30621 LIN Microstepping Motordriver GetActualPos This command is provided to the circuit by the LIN Master to get the actual position of the Stepper-motor. This position (ActPos[15:0]) is returned in signed two’s complement 16-bit format. One should note that according to the programmed stepping mode, the LSBs of ActPos[15:0] may have no meaning and should be assumed to be at ‘0’, as described in § 8.5. Data Sheet GetActualPos provides also a quick status of the circuit and of the Stepper-motor, identical to that obtained by command GetStatus (see further). Note A GetActualPosition command will not attempt to reset any flag. GetActualPos corresponds to the following LIN reading frames. 1) 4 data bytes in-frame response with direct ID (type #5). bit 7 * ESW bit 6 * bit 5 1 bit 4 0 VddReset StepLoss ElDef UV2 bit 3 ID3 AD[6:0] ActPos[15:8] ActPos[7:0] TSD bit 2 ID2 bit 1 ID1 TW bit 0 ID0 Tinfo[1:0] Identifier Data1 Data2 Data3 Data4 *) according to parity computation ID[5:0] : Dynamically allocated direct identifier. There should be as many dedicated identifiers to the GetActualPos command as there are stepper motors connected to the LIN bus. 2) One preparing frame prior 4 data bytes in-frame response with 0x3D indirect ID. Preparing Frame (type #7 or #8) bit 7 bit 6 bit 5 * * 0 1 1 In-frame Response (type #6) 0 1 1 ESW VddReset StepLoss ElDef bit 4 ID4 bit 3 ID3 CMD[6:0] = 0x00 AD[6:0] 1 1 AD[6:0] ActPos[15:8] ActPos[7:0] UV2 TSD 0xFF 0xFF 0xFF 0xFF bit 1 ID1 bit 0 ID0 1 0 1 TW *) according to parity computation AMI Semiconductor - Rev. 1.4 www.amis.com bit 2 ID2 21 Tinfo[1:0] Identifier Data1 Data2 Identifier Data1 Data2 Data3 Data4 Data5 Data6 Data7 Data8 AMIS-30621 LIN Microstepping Motordriver Note A GetFullStatus command will attempt to reset flags <TW>, <TSD>, <UV2>, <ElDef>, <StepLoss>, <CPFail>, <OVC1>, <OVC2>, and <VddReset>. GetFullStatus corresponds to two successive LIN in-frame responses with 0x3D indirect ID. GetFullStatus This command is provided to the circuit by the LIN Master to get a complete status of the circuit and of the Steppermotor. Refer to § 0 and § 188.8.131.52 to see the meaning of the parameters sent to the LIN Master. Preparing Frame (type #7 or #8) bit 7 bit 6 bit 5 * * 0 1 1 In-frame Response 1 (type #6) 0 1 1 1 Irun[3:0] Vmax[3:0] AccShape StepMode[1:0] VddReset StepLoss ElDef Motion[2:0] In-frame Response 2 (type #6) 0 1 1 1 1 1 1 bit 4 ID4 1 bit 3 ID3 CMD[6:0] = 0x01 AD[6:0] 1 AD[6:0] Shaft UV2 TSD ESW OVC1 Lin error status register (see 184.108.40.206) 0xFF 1 1 AD[6:0] ActPos[15:8] ActPos[7:0] TagPos[15:8] TagPos[7:0] SecPos[7:0] 1 1 0xFF bit 2 ID2 bit 1 ID1 bit 0 ID0 1 0 1 Ihold[3:0] Vmin[3:0] Acc[3:0] TW Tinfo[1:0] CPFail OVC2 1 1 0 SecPos[10:8] *) according to parity computation Important It is not mandatory for the LIN Master to initiate the second in-frame response if ActPos, TagPos and SecPos are not needed by the application. AMI Semiconductor - Rev. 1.4 www.amis.com Data Sheet 22 1 Identifier Data1 Data2 Identifier Data1 Data2 Data3 Data4 Data5 Data6 Data7 Data8 Identifier Data1 Data2 Data3 Data4 Data5 Data6 Data7 Data8 AMIS-30621 LIN Microstepping Motordriver GetOTPparam This command is provided to the circuit by the LIN Master after a preparation frame (see § 220.127.116.11.3) was issued, to read the content of an OTP Memory segment which address was specified in the preparation frame. Preparing Frame (type #7 or #8) bit 7 bit 6 bit 5 * * 0 1 1 In-frame Response (type #6) 0 1 1 ADM HW2 HW1 bit 4 ID4 1 OTP OTP HW0 OTP OTP OTP OTP OTP Data Sheet GetOTPparam corresponds to a LIN in-frame response with 0x3D indirect ID. bit 3 ID3 CMD[6:0] = 0x02 AD[6:0] 1 byte @0x00 byte @0x01 PA3 byte @0x03 byte @0x04 byte @0x05 byte @0x06 byte @0x07 bit 2 ID2 bit 1 ID1 bit 0 ID0 1 0 1 PA2 PA1 PA0 Identifier Data1 Data2 Identifier Data1 Data2 Data3 Data4 Data5 Data6 Data7 Data8 *) according to parity computation HW[2:0] : Although not stored in the OTP memory, the hardwired address is returned by GetOTPparam as if stored at address 0x02 of the OTP memory. Note A GetStatus command will attempt to reset flags <TW>, <TSD>, <UV2>, <ElDef>, <StepLoss>, and <VddReset>. GetStatus This command is provided to the circuit by the LIN Master to get a quick status (compared to that of GetFullStatus command) of the circuit and of the stepper motor. Refer to § 18.104.22.168 to see the meaning of the parameters sent to the LIN Master. bit 7 * ESW VddReset bit 6 * bit 5 0 bit 4 ID4 bit 3 ID3 StepLoss ElDef UV2 TSD GetStatus corresponds to a 2 data bytes LIN in-frame response with a direct ID (type #5). bit 2 ID2 AD[6:0] TW *) according to parity computation ID[5:0] : Dynamically allocated identifier. There should be as many dedicated identifiers to the GetStatus command as there are stepper motors connected to the LIN bus. AMI Semiconductor - Rev. 1.4 www.amis.com 23 bit 1 ID1 bit 0 ID0 Tinfo[1:0] Identifier Data1 Data2 AMIS-30621 LIN Microstepping Motordriver GotoSecurePosition This command is provided by the LIN Master to one or all the Stepper-motors to move to the secure position SecPos[10:0]. It can also be internally triggered if the LIN bus communication is lost, or after an initialization phase or prior to going into sleep mode. See the priority encoder bit 7 * 1 Broad bit 6 * bit 5 0 bit 4 ID4 Data Sheet description for more details (§ 22.214.171.124). The priority encoder table also acknowledges the cases where a GotoSecurePosition command will be ignored. GotoSecurePosition corresponds to the following LIN writing frame (type #1). bit 3 ID3 CMD[6:0] = 0x04 AD[6:0] bit 2 ID2 bit 1 ID1 bit 0 ID0 Identifier Data1 Data2 *) according to parity computation If Broad = ‘0’ all the Stepper motors connected to the LIN bus will reach their secure position. HardStop This command will be internally triggered when an electrical problem is detected in one or both coils, leading to Shutdown mode. If this occurs while the motor is moving, the <StepLoss> flag is raised to allow warning of the LIN Master at the next GetStatus command that steps may have been lost. Once the motor is stopped, ActPos bit 7 * 1 Broad bit 6 * bit 5 0 bit 4 ID4 register is copied into TagPos register to ensure keeping the stop position. A hardstop command can also be issued by the LIN Master for some safety reasons. It corresponds then to the following 2 Data bytes LIN writing frame (type #1). bit 3 ID3 CMD[6:0] = 0x05 AD[6:0] bit 2 ID2 bit 1 ID1 bit 0 ID0 Identifier Data1 Data2 *) according to parity computation If Broad = ‘0’ all the Stepper motors connected to the LIN bus will stop. ResetPosition This command is provided to the circuit by the LIN Master to reset ActPos and TagPos registers to zero. This can be helpful to prepare for instance a relative positioning. bit 7 * 1 Broad bit 6 * bit 5 0 bit 4 ID4 ResetPosition corresponds to the following LIN writing frames (type #1). bit 3 ID3 CMD[6:0] = 0x06 AD[6:0] *) according to parity computation If Broad = ‘0’ all the circuits connected to the LIN bus will reset their ActPos and TagPos registers. AMI Semiconductor - Rev. 1.4 www.amis.com 24 bit 2 ID2 bit 1 ID1 bit 0 ID0 Identifier Data1 Data2 AMIS-30621 LIN Microstepping Motordriver ResetToDefault This command is provided to the circuit by the LIN 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 Registers parameters (see § 0). This is another way for the LIN Master to initialize a slave node in case of emergency, or simply to refresh the RAM content. Note ActPos and TagPos are ResetToDefault command. bit 7 * bit 6 * bit 5 0 Data Sheet Important: Care should be taken not to send a ResetToDefault command while a motion is ongoing, since this could modify the motion parameters in a way forbidden by the position controller. ResetToDefault corresponds to the following LIN writing frames (type #1). not modified by a bit 4 ID4 1 bit 3 ID3 bit 2 ID2 bit 1 ID1 bit 0 ID0 CMD[6:0] = 0x07 Broad AD[6:0] Identifier Data1 Data2 *) according to parity computation If Broad = ‘0’ all the circuits connected to the LIN bus will reset to default. Important: 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]. For the same reason Pos2[15:0] should not be equal to Pos1[15:0]. RunInit This command is provided to the circuit by the LIN Master in order to initialize positioning of the motor by seeking the zero (or reference) position. See § 126.96.36.199 for a detailed description or the initialization phase. Note1: This sequence cannot be interrupted by another positioning command. RunInit corresponds to the following LIN writing frame with 0x3C identifier (type #4). bit 7 0 bit 6 0 bit 5 1 bit 4 1 bit 3 1 bit 2 1 AppCMD = 0x80 1 CMD[6:0] = 0x08 Broad AD[6:0] Vmax[3:0] Vmin[3:0] Pos1[15:8] Pos1[7:0] Pos2[15:8] Pos2[7:0] If Broad = ‘0’ all the circuits connected to the LIN bus will run the init sequence. Vmax[3:0] : Vmin[3:0] : Pos1[15:0] : Pos2[15:0] : Max velocity for first motion of the init run Min velocity for first motion of the init run and velocity for the second motion of the init run First position to be reached during the init run Second position to be reached during the init run AMI Semiconductor - Rev. 1.4 www.amis.com 25 bit 1 0 bit 0 0 Identifier Data1 Data2 Data3 Data4 Data5 Data6 Data7 Data8 AMIS-30621 LIN Microstepping Motordriver Data Sheet SetMotorParam() This command is provided to the circuit by the LIN Master to set the values for the Stepper motor parameters (listed below) in RAM. Refer to § 0 to see the meaning of the parameters sent by the LIN Master. § 188.8.131.52). Therefore the application should not change other parameters than Vmax and Vmin while a motion is running, otherwise correct positioning cannot be guaranteed. Important: If a SetMotorParam occurs while a motion is ongoing, it will modify at once the motion parameters (see SetMotorParam corresponds to the following LIN writing frame with 0x3C identifier (type #4). bit 7 0 bit 6 0 bit 5 1 1 Broad bit 4 bit 3 1 1 AppCMD = 0x80 CMD[6:0] = 0x09 AD[6:0] Irun[3:0] Vmax[3:0] SecPos[10:8] Shaft 1 1 1 bit 2 1 bit 1 0 bit 0 0 1 1 Ihold[3:0] Vmin[3:0] Acc[3:0] SecPos[7:0] AccShape StepMode[1:0] Identifier Data1 Data2 Data3 Data4 Data5 Data6 Data7 Data8 If Broad = ‘0’ all the circuits connected to the LIN bus will set the parameters in their RAMs as requested. Important: This command must be sent under a specific Vbb voltage value. See parameter VbbOTP in § 5. This is a mandatory condition to ensure reliable zapping. SetOTPparam() This command is provided to the circuit by the LIN Master to program the content D[7:0] of the OTP memory byte OTPA[2:0], and to zap it. SetMotorParam corresponds to a 0x3C LIN writing frames (type #4). bit 7 0 bit 6 0 bit 5 1 1 Broad 1 1 1 bit 4 bit 3 1 1 AppCMD = 0x80 CMD[6:0] = 0x10 AD[6:0] 1 1 D[7:0] 0xFF 0xFF 0xFF If Broad = ‘0’ all the circuits connected to the LIN bus will set the parameters in their OTP memories as requested. AMI Semiconductor- Rev. 1.4 www.amis.com 26 bit 2 1 bit 1 0 OTPA[2:0] bit 0 0 Identifier Data1 Data2 Data3 Data4 Data5 Data6 Data7 Data8 AMIS-30621 LIN Microstepping Motordriver SetPosition() This command is provided to the circuit by the LIN Master to drive one or two motors to a given absolute position. See § 8.5 for more details. Data Sheet The priority encoder table (§ 184.108.40.206) acknowledges the cases where a SetPosition command will be ignored. SetPosition corresponds to the following LIN write frames. 1) 2 Data bytes frame with a direct ID (type #3) bit 7 * bit 6 * bit 5 0 bit 4 bit 3 ID4 ID3 Pos[15:8] Pos[7:0] bit 2 ID2 bit 1 ID1 bit 0 ID0 bit 2 ID2 bit 1 ID1 bit 0 ID0 Identifier Data1 Data2 *) according to parity computation ID[5:0] : Dynamically allocated direct identifier. There should be as many dedicated identifiers to this SetPosition command as there are stepper motors connected to the LIN bus. 2) 4 Data bytes frame with a general purpose identifier (type #1) bit 7 * 1 Broad bit 6 * bit 5 1 bit 4 0 bit 3 ID3 CMD[6:0] = 0x0B AD[6:0] Pos[15:8] Pos[7:0] Identifier Data1 Data2 Data3 Data4 *) according to parity computation If Broad = ‘0’ all the Stepper motors connected to the LIN will must go to Pos[15:0]. 3) Two motors positioning frame with 0x3C identifier (type #4) bit 7 0 bit 6 0 1 1 1 ADn[6:0] : bit 5 1 bit 4 bit 3 1 1 AppCMD = 0x80 CMD[6:0] = 0x0B AD1[6:0] Pos1[15:8] Pos1[7:0] AD2[6:0] Pos2[15:8] Pos2[7:0] Motor #n physical address (n ∈ [1,2]). Posn[15:0] : Signed 16-bit position set-point for Motor #n. AMI Semiconductor - Rev. 1.4 www.amis.com 27 bit 2 1 bit 1 0 bit 0 0 Identifier Data1 Data2 Data3 Data4 Data5 Data6 Data7 Data8 AMIS-30621 LIN Microstepping Motordriver SetPositionShort() This command is provided to the circuit by the LIN Master to drive one, two or four motors to a given absolute position. It applies only for half stepping mode (StepMode[1:0] = “00”) and is ignored when in other stepping modes. See § 8.5 for more details. Data Sheet implementing a maximum of 16 slave nodes. These 4 bits are normally corresponding to the bits PA[3:0] in OTP memory (address 0x00), while bits AD[6:4] must be at ‘1’. Two different cases must in fact be considered, depending on the programmed value of bit ADM in the OTP memory (see § 220.127.116.11): The physical address is coded on 4 bits, hence SetPositionShort can only be used with a network ADM 0 1 1 AD X 0 1 pin HW0 pin HW1 pin HW2 Tied to Vbb Tied to Gnd Tied to Vbat Tied to Vdd The priority encoder table (§ 18.104.22.168) acknowledges the cases where a SetPositionShort command will be ignored. bit PA0 in OTP memory AD 1 1 SetPositionShort corresponds to the following LIN writing frames. 1) 2 Data bytes frame for 1 motor, with specific identifier (type #2) bit 7 * bit 6 * Pos[10:8] bit 5 0 bit 4 bit 3 ID4 ID3 Broad Pos[7:0] bit 2 bit 1 ID2 ID1 AD[3:0] *) according to parity computation bit 0 ID0 Identifier Data1 Data2 SetPositionShort command. If Broad = ‘0’ all the stepper motors connected to the LIN bus will go to Pos[10:0]. ID[5:0] : Dynamically allocated identifier to 2 Data bytes 2) 4 Data bytes frame for two motors, with specific identifier (type # 2) bit 7 * bit 6 * Pos1[10:8] bit 5 1 1 Pos2[10:8] 1 bit 4 0 bit 3 bit 2 ID3 ID2 AD1[3:0] bit 1 ID1 bit 0 ID0 bit 1 ID1 AD1[3:0] bit 0 ID0 Pos1[7:0] AD2[3:0] Pos2[7:0] Identifier Data1 Data2 Data3 Data4 *) according to parity computation Dynamically allocated identifier to 4 Data bytes SetPositionShort command. ADn[3:0] : Motor #n physical address least significant bits (n ∈ [1,2]). Posn[10:0] : Signed 11-bit position set point for Motor #n ID[5:0] : 3) 8 Data bytes frame for 4 motors, with specific identifier (type #2) bit 7 * bit 6 * Pos1[10:8] bit 5 1 Pos2[10:8] Pos3[10:8] Pos4[10:8] bit 4 bit 3 1 ID3 1 Pos1[7:0] 1 Pos2[7:0] 1 Pos3[7:0] 1 Pos4[7:0] bit 2 ID2 AD2[3:0] AD3[3:0] AD4[3:0] *) according to parity computation ID[5:0] : ADn[3:0] : Motor #n physical address least significant bits (n ∈ [1,4]). Posn[10:0] : Signed 11-bit position set point for Motor #n (see § 0). Dynamically allocated identifier to 8 Data bytes SetPositionShort command. AMI Semiconductor - Rev. 1.4 www.amis.com Identifier Data1 Data2 Data3 Data4 Data5 Data6 Data7 Data8 28 AMIS-30621 LIN Microstepping Motordriver Sleep This command is provided to the circuit by the LIN Master to put all the Slave nodes connected to the LIN bus into sleep mode. If this command occurs during a motion of the motor, TagPos is reprogrammed to SecPos (provided SecPos is different from “100 0000 0000”), or a SoftStop bit 7 0 bit 6 0 bit 5 1 bit 4 1 Data Sheet is executed before going to sleep mode. See LIN 1.2 specification and § 22.214.171.124. The corresponding LIN frame is a Master Request Command Frame (identifier 0x3C) with Data byte 1 containing 0x00 while the followings contain 0xFF. bit 3 1 bit 2 1 bit 1 0 bit 0 0 0x00 0xFF SoftStop If a SoftStop command occurs during a motion of the stepper motor, it provokes an immediate deceleration to VMIN (see § 8.3) followed by a stop, regardless of the position reached. Once the motor is stopped, TagPos register is overwritten with value in ActPos register to ensure keeping the stop position. Identifier Data1 Data2 Command SoftStop occurs in the following cases: - The chip temperature rises above the Thermal shutdown threshold (see § 5 and § 126.96.36.199); - The LIN Master requests a SoftStop. Hence SoftStop will correspond to the following 2 Data bytes LIN writing frame (type #1). Note A SoftStop command occurring during a RunInit sequence is not taken into account. bit 7 * 1 Broad bit 6 * bit 5 0 bit 4 ID4 bit 3 ID3 CMD[6:0] = 0x0F AD[6:0] *) according to parity computation If Broad = ‘0’ all the stepper motors connected to the LIN bus will stop with deceleration. AMI Semiconductor - Rev. 1.4 www.amis.com 29 bit 2 ID2 bit 1 ID1 bit 0 ID0 Identifier Data1 Data2 AMIS-30621 LIN Microstepping Motordriver 188.8.131.52 Priority Encoder The table below describes the state management performed by the Main control block. ↔ AMI Semiconductor - Rev. 1.4 www.amis.com 30 Data Sheet AMIS-30621 LIN Microstepping Motordriver 9 Two transitions are possible from state Stopped when <Sleep> = ‘1’: 1) Transition to state Sleep if (<SecEn> = ‘0’) or ((<SecEn> = ‘1’) and (ActPos = SecPos)) or <Stop> = ‘1’. 2) Otherwise transition to state GotoPos, with TagPos = SecPos. 10 <SecEn> = ‘1’ when register SecPos is loaded with a value different from the most negative value (i.e. different from 0x400 = “100 0000 0000”). 11 <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. 12 Command for dynamic assignment of IDs is decoded in all states except Sleep and has not effect on the current state. 13 While in state Stopped, if ActPos ≠ TagPos there is a transition to state GotoPos. This transition has the lowest priority, meaning that <Sleep>, <Stop>, <TSD>, etc. are first evaluated for possible transitions. 14 If <StepLoss> is active, then SetPosition, SetPositionShort and GotoSecurePosition commands are ignored (they will not modify TagPos register whatever the state), and motion to secure position is forbidden after a Sleep command or a LIN timeout (the circuit will go into Sleep state immediately, without positioning to secure position). Other command like RunInit or ResetPosition will be executed if allowed by current state. <StepLoss> can only be cleared by a GetStatus or GetFullStatus command. Notes: 1 Leaving Sleep state is equivalent to Power-on-reset. 2 After Power-on reset, the Shutdown state is entered. The Shutdown state can only be left after GetFullStatus command (so that the Master could read the <VddReset> flag). 3 A RunInit sequence runs with a separate set of RAM registers. The parameters that 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 GetFullStatus command will return the default parameters for Vmax and Vmin stored in RAM. 4 The <Sleep> flag is set to ‘1’ when a LIN timeout or a Sleep command occurs. It is reset by the next LIN command (<Sleep> is cancelled if not activated yet). 5 Shutdown state can be left only when <TSD> and <HS> flags are reset. 6 Flags can be reset only after the master could read them via a GetStatus or GetFullStatus command, and provided the physical conditions allow for it (normal temperature, correct battery voltage and no electrical or charge pump defect). 7 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 or SetPositionShort command. 8 Some transitions like GotoPos ➔ Sleep are actually done via several states: GotoPos ➔ SoftStop ➔ Stopped ➔ Sleep (see diagram below). AMI Semiconductor- Rev. 1.4 www.amis.com Data Sheet 31 AMIS-30621 LIN Microstepping Motordriver 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 Irun 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 Peak Current (mA) 0 59 1 71 0 84 1 100 0 119 1 141 0 168 1 200 0 238 1 283 0 336 1 400 0 476 1 566 0 673 1 800 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 Ihold 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 StepMode 0 1 0 1 184.108.40.206 Application Parameters Stored in OTP Memory Except for the physical address AD[3:0] and for bit ADM, these parameters, although programmed in a non-volatile memory can still be overridden in RAM by a LIN writing operation. AD[6:0] Physical address of the stepper motor. Up to 128 stepper motors can theoretically be connected to the same LIN bus. ADM Addressing mode bit (see § 220.127.116.11) Irun[3:0] Peak current value to be fed to each coil of the stepper-motor. The table to the right provides the 16 possible values for IRUN. Ihold[3:0] Hold current for each coil of the steppermotor. The table to the right provides the 16 possible values for IHOLD. StepMode Indicator of stepping mode to be used. AMI Semiconductor - Rev. 1.4 www.amis.com 32 Data Sheet Hold Current (mA) 59 71 84 100 119 141 168 200 238 283 336 400 476 566 673 800 Step Mode Half stepping 1/4 micro step 1/8 micro step 1/16 micro step AMIS-30621 LIN Microstepping Motordriver Indicator of Reference Position. If Shaft = ‘0’, the reference position is the maximum inner position, whereas if Shaft = ‘1’, the reference position is the maximum outer position. Shaft 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 SecPos[10:0] Secure Position of the stepper motor. This is the position to which the motor is driven in case of a LIN communication loss or when the LIN error counter overflows. If SecPos[10:0] = “100 0000 0000”, this means that Secure Position is disabled, e.g. the stepper motor will be kept in the position occupied at the moment these events occur. The Secure Position is coded on 11 bits only, providing actually the most significant bits of the position, the non coded least significant bits being set to ‘0’. Vmax[3:0] Vmin[3:0] Acc[3:0] Code 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 Data Sheet Parameter Index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Maximum velocity, minimum velocity and acceleration of the stepper motor are programmed by coding the respective Vmax, Vmin and Acc parameters index as defined in § 8 Positioning data. 18.104.22.168 OTP Memory Structure The table below shows how the parameters to be stored in the OTP memory are located. OTP address 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 7 6 5 4 3 OSC3 EnableLIN ADM Irun3 Vmax3 SecPos10 SecPos7 OSC2 TSD2 OSC1 TSD1 OSC0 TSD0 Irun2 Vmax2 SecPos9 SecPos6 Irun1 Vmax1 SecPos8 SecPos5 Irun0 Vmax0 Shaft SecPos4 IREF3 BG3 PA3 Ihold3 Vmin3 Acc3 SecPos3 StepMode1 IREF1 BG1 PA1 Ihold1 Vmin1 Acc1 SecPos1 LOCKBT IREF0 BG0 PA0 Ihold0 Vmin0 Acc0 SecPos0 LOCKBG Protected Byte 0x00 to 0x01 0x00 to 0x07 The command used to load the application parameters via the LIN bus in 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 AMI Semiconductor - Rev. 1.4 www.amis.com 0 Once OTP programming is completed, bit LOCKBG can be zapped, to disable future zapping, otherwise any OTP bit at ‘0’ could still be zapped by using a SetOTPparam command. 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. (zapped before delivery) IREF2 BG2 PA2 Ihold2 Vmin2 Acc2 SecPos2 StepMode0 1 Each OTP byte will be programmed separately (see command SetOTPparam). 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. Lock Bit LOCKBT LOCKBG 2 SetOTPparam command allows to verify the correct byte zapping. Note Zapped bits will really be “active” after a GetOTPparam or a ResetToDefault command or after a power-up. 33 AMIS-30621 LIN Microstepping Motordriver Data Sheet 9.2.3 Motordriver 22.214.171.124 Current Waveforms in the Coils The figure below illustrates the current fed to the motor coils by the motordriver in half-step mode. Whereas the figure below shows the current fed to one coil in 1/16th microstepping (1 electrical period). 126.96.36.199 PWM Regulation 188.8.131.52 Motor Starting Phase In order to force a given current (determined by Irun or Ihold and the current position of the rotor) through the motor coil while ensuring high energy transfer efficiency, a regulation based on PWM principle is used. The regulation loop performs a comparison of the sensed output current to an internal reference, and features a digital regulation generating the PWM signal that drives the output switches. The zoom over one micro-step in the figure above shows how the PWM circuit performs this regulation. At motion start, the currents in the coils are directly switched from Ihold to Irun with a new sine/cos ratio corresponding to the first half (or micro) step of the motion. AMI Semiconductor- Rev. 1.4 www.amis.com 34 AMIS-30621 LIN Microstepping Motordriver Data Sheet 184.108.40.206 Motor Stopping Phase At the end of the deceleration phase, the currents are maintained in the coils at their actual DC level (hence keeping the sine/cos ratio between coils) during 1/4th of an electrical period at minimum velocity (thus 2 half-steps). The currents are then set to the hold values, respectively Ihold x sin(TagPos) and Ihold x cos(TagPos) as illustrated below. A new positioning order can then be executed. 220.127.116.11 Charge Pump Monitoring 18.104.22.168 Electrical Defect on Coils, Detection and Confirmation If the charge pump voltage is not sufficient for driving the high side transistors (due to a failure), an internal HardStop command is issued. This is acknowledged to the master by raising flag <CPFail> (available with command GetFullStatus). The principle relies on the detection of a voltage drop on at least one transistor of the H-bridge. Then the decision is taken to open the transistors of the defective bridge. This allow to detect the following short circuits: • External coil short circuit. • Short between one terminal of the coil and Vbat or Gnd. • One cannot detect internal short in the motor. Open circuits are detected by 100% PWM duty cycle value during a long time. In case this failure occurs while a motion is ongoing, the flag <StepLoss> is also raised. Pins Yi or Xi Yi or Xi Yi or Xi Y1 and Y2 X1 and X2 Xi and Yi AMI Semiconductor - Rev. 1.4 www.amis.com Fault Mode Short circuit to GND Short circuit to Vbat Open Short circuited Short circuited Short circuited 35 AMIS-30621 LIN Microstepping Motordriver Data Sheet 9.2.4 LIN Controller 22.214.171.124 General Description The LIN (Local Interconnect Network) is a serial communications protocol that efficiently supports the control of mechatronic nodes in distributed automotive applications. • selectable length of Message Frame: 2, 4, and 8 bytes • configuration flexibility • data checksum security and error detection; • detection of defective nodes in the network. The interface implemented in the AMIS-30621 is compliant with the LIN rev. 1.2 specifications. It features a slave node, thus allowing for: • single-master / multiple-slave communication • self synchronization without quartz or ceramics resonator in the slave nodes • guaranteed latency times for signal transmission • single-wire communication • transmission speed of 19.2 kbit/s It includes the analog physical layer and the digital protocol handler. The analog circuitry implements a low side driver with a pull-up resistor as a transmitter, and a resistive divider with a comparator as a receiver. The specification of the line driver/receiver follows the ISO 9141 standard with some enhancements regarding the EMI behavior. 126.96.36.199 Slave Operational Range for Proper Self Synchronization The LIN interface will synchronize properly in the following conditions: - Vbb ≥ 8 V - Ground shift between Master node and Slave node < ±1V It is highly recommended to use the same type of reverse battery voltage protection diode for the Master and the Slave nodes. AMI Semiconductor - Rev. 1.4 www.amis.com 36 AMIS-30621 LIN Microstepping Motordriver 188.8.131.52 Functional Description 184.108.40.206.1 Analog Part The transmitter is a low-side driver with a pull-up resistor and slope control. The figure below shows the characteristics of the transmitted signal, including the delay between internal TxD signal and LIN signal. See § 6 for timing values. The receiver mainly consists of a comparator which threshold is equal to Vbb/2. The figure below shows the delay between the received signal and the internal RxD signal. See § 6 for timing values. AMI Semiconductor - Rev. 1.4 www.amis.com 37 Data Sheet AMIS-30621 LIN Microstepping Motordriver Data Sheet 220.127.116.11.2 Protocol Handler 18.104.22.168.3 Electro Magnetic Compatibility This block implements: - bit synchronization - bit timing - the MAC layer - the LLC layer - the supervisor EMC behavior fulfills requirements defined by LIN specification, rev. 1.2. 22.214.171.124 Error Status Register The LIN interface implements a register containing an error status of the LIN communication. This register is as follows: bit 7 bit 6 bit 5 bit 4 not used not used not used not used bit 3 Time out error With: - Data error flag = Checksum error + StopBit error + Length error - Header error flag = Parity + SynchField error A GetFullStatus frame will reset the error status register. bit 2 Data error flag bit 1 Header error flag bit 0 Bit error flag 126.96.36.199 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 LIN bus. This address is coded on 7 bits, yielding the theoretical possibility of 128 different circuits on the same bus. It is a combination of 4 OTP memory bits (see § 188.8.131.52) and of the 3 hardwired address bits (pins HW[2:0]). The OTP memory contains also an extra bit, ADM, which allows for the following combinations: Note Pins HW0 and HW1 are 5V digital inputs, whereas pin HW2 is compliant with a 12V level, e.g. it can be connected to Vbat or Gnd via a terminal of the PCB. To provide cleaning current for this terminal, the system used for pin SWI is also implemented for pin HW2 (see § 184.108.40.206). 220.127.116.11 LIN Frames - Provide set-point position for the stepper motor. Whereas Reading frames will be used to: - Get the actual position of the stepper motor; - Get status information such as error flags; - Verify the right programming and configuration of the component. The LIN frames can be divided in writing and reading frames. A frame is composed of an 8-bit Identifier followed by 2, 4 or 8 Data-bytes. Writing frames will be used to: - Program the OTP Memory; - Configure the component with the stepper motor parameters (current, speed, stepping mode, etc.); AMI Semiconductor - Rev. 1.4 www.amis.com 38 AMIS-30621 LIN Microstepping Motordriver Data Sheet 18.104.22.168.1 Writing Frames A writing frame is sent by the LIN Master to send commands and/or information to the Slave nodes. According to the LIN specification, identifiers are to be used to determine a specific action. If a physical addressing is needed, then some bits of the Data field can be dedicated to this, as illustrated in the example below. Note Bit 7 of byte Data1 must be at ‘1’ since the LIN specification requires that contents from 0x00 to 0x7F must be reserved for broadcast messages (0x00 being for the “Sleep” message). Another possibility is to determine the specific action within the Data field in order to use less identifiers. One can for example use the reserved identifier 0x3C and take advantage of the 8-byte Data field to provide a physical address, a command and the needed parameters for the action, as illustrated in the example below. The writing frames used with the AMIS-30621 are the followings: • Type #1: General purpose 2 or 4 Data bytes writing frame with a dynamically assigned identifier This type is dedicated to short writing actions when the bus load can be an issue. They are used to provide direct command to one (Broad = ‘1’) or all the slave nodes (Broad = ‘0’). If Broad = ‘1’, the physical address of the slave node is provided by the 7 remaining bits of DATA2. DATA1 will contain the command code (see § 22.214.171.124), while, if present, DATA3 to DATA4 will contain the command parameters, as shown below. • Type #2: 2, 4 or 8 Data bytes writing frame with an identifier dynamically assigned to an application command, regardless of the physical address of the circuit. • Type #3: 2 Data bytes writing frame with an identifier dynamically assigned to a particular slave node together with an application command. This type of frame requires that there are as many dynamically assigned identifiers as there are AMIS-30621 circuits using this command connected to the LIN bus. • Type #4: 8 Data bytes writing frame with 0x3C identifier. The structure is similar to Type #1 but uses the reserved ID 0x3C. Type #1 has the advantage to be shorter than Type #4. AMI Semiconductor - Rev. 1.4 www.amis.com 39 AMIS-30621 LIN Microstepping Motordriver Data Sheet Notes (1) A reading frame with indirect ID must always be consecutive to a preparing frame. It will otherwise not be taken into account. (2) A reading frame will always return the physical address of the answering slave node in order to ensure robustness in the communication. 126.96.36.199.2 Reading frames A reading frame uses an in-frame response mechanism. That is: the master initiates the frame (synchronization field + identifier field), and one slave sends back the data field together with the check field. Hence, two types of identifiers can be used for a reading frame: - Direct ID, which points at a particular slave node, indicating at the same time which kind of information is awaited from this slave node, thus triggering a specific command. This ID provides the fastest access to a read command but is forbidden for any other action. The reading frames used with the AMIS-30621 are the followings: • Type #5: 2, 4 or 8 Data bytes reading frame with a direct IDs dynamically assigned to a particular slave node together with an application command. A preparing frame is not needed. • Type #6: 8 Data bytes reading frame with 0x3D identifier. This is intrinsically an indirect type, needing therefore a preparation frame. It has the advantage to use a reserved identifier. - Indirect ID, which only specifies a reading command, the physical address of the slave node that must answer having been passed in a previous writing frame, called a preparing frame. Indirect ID gives more flexibility than a direct one, but provides a slower access to a read command. also contain a command indicating which kind of information is awaited from the slave. 188.8.131.52.3 Preparing Frames A preparing frame is a writing frame that warns a particular slave node that it will have to answer in the next frame (hence a reading frame). A preparing frame is needed when a reading frame does not use a dynamically assigned direct ID. Preparing and reading frames must be consecutive. A preparing frame will contain the physical address of the LIN slave node that must answer in the reading frame, and will The preparing frames used with the AMIS-30621 can be of Type #7 or Type #8 described below. • Type #7: 2 Data bytes writing frame with dynamically assigned identifier. bit 7 * 1 1 bit 6 * bit 5 0 bit 4 ID4 bit 3 ID3 CMD[6:0] AD[6:0] bit 2 ID2 bit 1 ID1 bit 0 ID0 bit 2 1 bit 1 0 bit 0 0 Identifier Data1 Data2 *) according to parity computation • Type #8: 8 Data bytes writing frame with 0x3C identifier. bit 7 0 bit 6 0 1 1 AppCMD : bit 5 1 bit 4 bit 3 1 1 AppCMD = 0x80 CMD[6:0] AD[6:0] 0xFF 0x80 indicates that Data2 contains an application command byte AMI Semiconductor - Rev. 1.4 www.amis.com Identifier Data1 Data2 Data3 Data4-8 CMD[6:0] : Command byte AD[6:0] : Slave node’s physical address 40 AMIS-30621 LIN Microstepping Motordriver Data Sheet 184.108.40.206.4 Dynamic Assignment of Identifiers RAM to make them correspond to commands pointers located in the slave’s ROM. This is the strategy adopted for the AMIS-30621. Apart from identifiers 0x3C to 0x3F, the LIN rev 1.2 specification does not indicate how identifiers can be allocated. Therefore, slave nodes need to be flexible enough to adapt themselves to a given LIN network. Dynamic assignment must be done by a writing frame with identifier 0x3C. One solution proposed by BMW is to implement a dynamic assignment of the identifiers by the LIN Master. This is done at start-up of the system by writing identifiers in the slave’s bit 7 0 bit 6 0 1 Broad AD6 bit 5 1 AD5 ID1[3:0] ID2[1:0] bit 4 bit 3 1 1 AppCmd = 0x80 CMD[6:0] = 0x11 AD4 AD3 bit 2 1 AD2 AD1 ROMp1[3:0] ROMp2[3:0] ROMp3[3:0] ROMp4[1:0] ID4[5:0] bit 1 0 bit 0 0 AD0 ID1[5:4] ID2[5:2] ID3[5:0] ROMp4[3:2] Identifier Data1 Data2 Data3 Data4 Data5 Data6 Data7 Data8 With: CMD[6:0] : 0x11, corresponding to dynamic assignment of 4 LIN identifiers. Broad If Broad = ‘0’ all the circuits connected to the LIN bus will share the same dynamically assigned identifiers. IDn[5:0] : Dynamically assigned LIN identifier to the application command which ROM pointer is ROMpn[3:0] (see § 220.127.116.11). One frame allows only to assign 4 identifiers. Therefore, additional frames could be needed in order to assign more identifiers (maximum 3 for the AMIS-30621). 18.104.22.168 Commands Table Command Mnemonic GetActualPos GetFullStatus GetOTPparam GetStatus GotoSecurePosition HardStop ResetPosition ResetToDefault RunInit SetMotorParam SetOTPparam SetPosition (16-bit) SetPositionShort (1 motor) SetPositionShort (2 motors) SetPositionShort (4 motors) Sleep SoftStop Dynamic ID assignment General purpose 2 Data bytes General purpose 4 Data bytes Preparation frame Command Byte (CMD) 000000 0x00 000001 0x01 000010 0x02 000011 0x03 000100 0x04 000101 0x05 000110 0x06 000111 0x07 001000 0x08 001001 0x09 010000 0x10 001011 0x0B 001100 0x0C 001101 0x0D 001110 0x0E n.a. n.a. 001111 0x0F 010001 0x11 Dynamic ID (example) 100xxx n.a. n.a. 000xxx n.a. n.a. n.a. n.a. n.a. n.a. n.a. 010xxx 001001 101001 111001 n.a. n.a. 011000 101000 011010 xxx allows to address physically a slave node. Therefore, these dynamic IDs cannot be used for more than 8 stepper motors. AMI Semiconductor - Rev. 1.4 www.amis.com ROM Pointer 0010 0011 0100 0101 0110 0111 0000 0001 1000 Only 9 ROM pointers are needed for the AMIS-30621. 41 AMIS-30621 LIN Microstepping Motordriver Data Sheet 10.0 Features 10.1 Position Periodicity As an example in the figure below is illustrated the moving direction going from ActPos = +32700 to SetPos = –32700 is counter clockwise. Depending on the stepping mode the position can range between –4096 to +4095 in half-step mode to –32768 to +32767 in 1/16th microstepping mode (see 8.5.1) one can project all these positions lying on a circle. When executing the command SetPosition the position controller will set the movement direction in such a way that the traveled distance is minimum. If a clockwise motion is required in this example, several consecutive SetPosition commands can be used. 11.0 Resistance to Electrical and Electromagnetic Disturbances 11.1 Electrostatic Discharges See. § 1.1 Absolute Maximum Ratings 11.2 Schäffner Pulses Shäffner Pulses are applied to the power supply wires of the equipment implementing the AMIS-30621 (see application schematic), according to Renault 36-00-808/--E document. Pulse #1 #2a #3a #3b #5b (load dump) Amplitude -100V +100V -150V (from +13.5V) +100V (from +13.5V) +21.5V (from +13.5V) Rise Time ≤ 1µs ≤ 1µs 5ns 5ns ≤ 10ms Pulse Duration 2ms 50µs 100ns (burst) 100ns (burst) 400ms 11.3 EMC Bulk current injection (BCI), according to Renault 36-00808/--E document (p61). Current 60mA 100mA 200mA Opertaing Class A B C AMI Semiconductor - Rev. 1.4 www.amis.com 42 Rs 10Ω 2Ω 50Ω 50Ω ≤ 1Ω Operating Class C B A A C AMIS-30621 LIN Microstepping Motordriver Data Sheet 11.4 EMI EMI requirement is given here as a target, since it is also PCB dependent. Any EMI issue will have to be solved on common basis with the customer. Radiated disturbance electromagnetic quietness test, according to Renault 36-00-808/--E document: • Permanent broadband limit (Renault 36-00-808/--E document diagram p98) • Narrow band limit (Renault 36-00-808/--E document diagram p99) 11.5. Power Supply Micro-Interruptions According to Renault 36-00-808/--E (p47 and followings). Test 10µs micro-interruptions (1) 100µs micro-interruptions 5ms micro-interruptions 50ms micro-interruptions 300ms micro-interruptions Operating Class A B B C C Note 1: To achieve Class A a 100nF capacitor between Vbat and ground is needed in case HW is connected to Vbat. (see § 7 typical application) 12.0 Package Outlines Note: See variations AC for dimensions D and N. 13.0 Conditioning To be documented. AMI Semiconductor - Rev. 1.4 www.amis.com © Copyright 2003 AMI Semiconductor – All rights reserved. Information furnished is believed to be accurate and reliable. However, AMI Semiconductor assumes no responsibility for errors or omissions in the information and for the consequences of use of such information. AMI Semiconductor reserves the right to change the information contained herein at any time without notice. This information is provided “AS IS” without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability, fitness for a particular purpose, or non-infringement of intellectual property. All title and intellectual property rights including, without limitation, copyrights, trademarks, in and to this information and products are owned by AMI Semiconductor, and are protected by applicable laws. No license under any patent or other intellectual property of AMI Semiconductor is granted, by implication, estoppel or otherwise.