AN2197 Stepper Motor Driver for Smart Gauges.pdf

Stepper Motor Driver for Smart Gauges
Author: Victor Kremin
Associated Project: Yes
Associated Part Family: CY8C24xxxA, CY8C27xxx,
CY8C28xxx, CY8C29xxx, CY8C24x94
Software Version: PSoC Designer™ 5.4
Related Application Notes: AN2161
AN2197 shows how to use the PSoC (Programmable System-on-Chip) to drive a low-power stepper motor for smart
pointer gauges. This application note demonstrates how to perform micro stepping in the stepper motor using
PSoC 1. In addition, this application demonstrates using a PC-based utility to control the pointer position in the
stepper motor.
Introduction .......................................................................1
Design Features ................................................................2
Design Overview ...............................................................3
PSoC Internals ..................................................................5
Firmware ...........................................................................6
PC Test Software ..............................................................9
Possible Design Modifications...........................................9
Appendix A. Driver Schematic.........................................10
Appendix B. Scope Images .............................................11
About the Author .............................................................12
Document History............................................................13
The world is digital today, and most of the information is
represented in numbers. However, human nature is more
’analog’ and better represented in the old-fashioned way,
using pointer gauges and bar graphs.
A number of techniques can be used to control a pointer
gauge. The most popular technique is to use a mechanical
system, which consists of a turning coil mounted outside a
two-pole permanent magnet. The applied DC current
causes a magnetic force that rotates the coil and
associated gauge pointer. Springs limit the coil rotation
angle and the stable pointer rotation angle is in direct
proportion to the coil current. Such a gauge can be
equipped with an oil damper to suppress oscillations
during the coil angle setup. This improves the system’s
mechanical stability with respect to vibration. This method
has limitations in the operational temperature range
because oil viscosity changes with temperature, causing
the gauge to be unstable amid vibrations.
Other gauges use a bi-metallic plate with a heater. This
type consumes a lot of current during operation. Readings
are dependent on environmental temperature.
An alternative approach uses two quadrature-located coils
to set the pointer position. In this system, the pointer
rotation angle is determined in relation to the coil. A
mechanical damper is still required to prevent pointer
flicker due to mechanical vibrations at setup time.
A perfect way to control a pointer gauge is to use a
stepper motor. Today, many companies provide stepper
motors for gauges. These motors are characterized by
small size and low power and can be driven directly by the
microcontroller or by level translators. Most motors have
built-in gearboxes, which increase motor torque. Such
motors are SONCEBOZ MM39 (6405E-1550) and NMB
part #PM20T.
This application note shows how to use the PSoC
(Programmable System-on-Chip) to drive a low-power
stepper motor for smart pointer gauges. This application
note demonstrates how to perform micro stepping in the
stepper motor using PSoC 1. In addition, this application
demonstrates using a PC-based utility to control the
pointer position in the stepper motor.
Document No.001-33740: Rev. *F
Stepper Motor Driver for Smart Gauges
Figure 1. Stepper Motor Torque vs. Motor Speed
Design Features
These stepper motors are controlled by the quadrature
sin/cos analog signals to provide smooth rotor rotation.
When a two-pole permanent magnet is used in the motor
rotor, the rotor mechanical step is 90 when single-phase
electric pulses are applied to the motor windings.
Therefore, the microstep technique is necessary to control
this motor in gauge applications.
You can achieve this by applying the cos/sin analog
Because  , cos   sin   1 , and the motor rotor flux
linkage is the same for any rotor angle by the mechanical
construction of the motor, the torque is constant. To use a
gauge for analog values measured digitally, it is necessary
to divide each motor mechanical 90 step by a predefined
number of microsteps. In this design, each mechanical
90-step is divided by 32 micro-steps.
Point Stop Detect
When using a motor in the gauge application, you can use
the principles of sensor or sensor-less synchronization to
detect pointer stops. Motor manufacturers recommend
driving the motor in the synchronization phase with
rectangle pulses (full-step mode) and reading the backEMF from the windings. When the rotor turns, a back-EMF
signal is produced; when a stop is reached, there is no
inducted voltage. The design in this application note uses
this principle to detect a pointer stop.
Variable Speed Profile
Driving motors is simple. In this application note, two
analog quadrature sin/cos signals are generated using the
double pulse-width modulator (PWM) or a digital-to-analog
converter (DAC). The driving profiles should also be
determined. Motor speed can be a constant or a variable
with respect to acceleration and deceleration phases.
For stepper motors, the startup frequency is much less
than the maximum operation frequency. Therefore, the
constant speed profile does not provide the minimum
pointer setup time. The variable speed driving profile does
not have this limitation and allows full use of motor
possibilities and use of the minimum pointer setup time.
There is a limit to the maximum rotation acceleration too.
This limit determines motor acceleration and deceleration
times; the limit comes from the limit in the magnetic force
value. Note that if the stepper motor control frequency
(both startup and operation) exceeds the predefined limits,
the motor can skip steps and the pointer position may lose
synchronization with the control sequence. Therefore, the
maximum acceleration and startup times as well as the
operational rotational speeds must not be exceeded.
Acceleration and Deceleration Schemes
In the stepper motor gauge design, it is possible to select
different motor acceleration and deceleration schemes.
One possible solution uses a digital low-pass filter (LPF) to
gradually increase the rotational speed during the motor
acceleration phase and to apply the same filter during the
deceleration phase. When this scheme is used, the
absolute value of the acceleration must be within the
allowed bounds of the motor.
Another scheme can use a constant acceleration profile.
This type of profile is useful when the rotation speed is
increased at constant acceleration during the acceleration
phase, with corresponding deceleration during the
deceleration phase. Rotational speed is constant when the
speed reaches a predefined threshold. The proposed
motor driver uses a constant acceleration drive profile.
This profile is sometimes called a trapezoidal profile,
because it is in the shape of a trapezoid.
Resource Usage
This driver can be implemented with a microcontroller and
some application requirements. The following components
are necessary:
A double-PWM or DAC to create the phase coils’
quadrature signals
A variable frequency generator to generate the phase
current values’ updating events to determine the
rotational speed
A speed control system to
acceleration and deceleration
Modern microcontrollers have PWMs. The programmable
interval timer can be used as a variable frequency
generator. However, change in the linear motor rotation
speed corresponds to a hyperbolic timer period curve,
which requires a high-resolution timer.
Document No.001-33740: Rev. *F
Stepper Motor Driver for Smart Gauges
PSoC provides an excellent solution with its flexible
internal analog user modules. The voltage-to-frequency
converter (V/F), together with a DAC, creates a
programmable, variable frequency signal generator with a
constant frequency step. This method is used in this
application note.
Figure 2. System Block Diagram
Most modern applications require networked gauges,
where all gauges are connected to a common bus with
minimal wires (the modern vehicle contains many buses
inside, such as CAN, LIN, J1587, and others). In such
cases, the bus interface reads and interprets the bus data,
and selects the commands to be processed by a particular
A standard UART interface is used to control the gauge
driver in this example. The end user can use end
application-specific protocol.
Design Overview
Figure 2 shows one possible microcontroller-based driver
Note The conventional Unified Modelling Language (UML)
notation was used to mark the relations between blocks.
Document No.001-33740: Rev. *F
Stepper Motor Driver for Smart Gauges
The driver can be connected to a dedicated bus. The
network interface receives the data from the bus, decodes
it, checks the incoming packets’ integrity, and separates
suitable data for a particular gauge in the network. The
received data is parsed, validated, and scaled to the
pointer microsteps or other suitable processing values
used to control the pointer movement. Note that in many
vehicle applications, the gauge is equipped with several
illumination LEDs and one or more status LEDs (such as
low fuel, overheating, or alarm). These LEDs can be
controlled through the bus as well.
position, the driver enters the deceleration stage, during
which the speed decreases linearly. Note that the driver
enters the deceleration stage directly from the acceleration
stage when the pointer completes half of the required
rotation angle and the speed is less than the predefined
maximum value. This occurs frequently at small pointer
Figure 3. Speed Control Module State
Speed Calculation
The speed calculation module analyzes the current and
required pointer positions to generate the actual motor
rotation speed; the speed adjustment is periodically
initiated using a dedicated interval timer. The motor
rotational speed value is calculated using Equation 1 for
each timer update:
vi  vi 1  ai , ai  a0 ,0, a0 
Equation 1
vi and vi-1 are speed values for i and i-1 iterations,
respectively, and ai is the acceleration value, which can
accept only three possible values:
The V/F is used to generate variable frequency interrupts
to call the microstep control routines. The input voltage is
calculated to provide the interrupts’ frequency proportional
to that from Equation (1). The speed value is calculated
using Equation (2).
Fixed positive during acceleration stage
Zero during constant rotational speed stage
Fixed negative during deceleration stage
Upon motor startup, positive acceleration is selected.
When the pointer speed reaches the predefined threshold,
acceleration drops to zero and the constant rotational
speed stage starts. At this time, the current pointer
displacement overrides the previously calculated value for
determining the pointer deceleration start position. The
deceleration stage begins when the distance-todestination position is less than the previously calculated
value; the acceleration is set negative for this stage. The
proposed algorithm provides symmetric acceleration and
deceleration profiles for both small and large pointer
displacement, regardless of rotation speed and the
maximum-allowed value.
Figure 3 shows the speed control module diagram. Ready
is the default stage. When a new position command is
received, the driver enters the Initialization stage, where
the internal control variables are initialized. Next, is the
acceleration stage, during which the motor rotation speed
increases linearly. When the rotation speed reaches the
predefined maximum value, the driver enters the constant
speed mode stage. If the pointer is close to the set
V/F Module
Ui 
Equation 2
Ks is the scale coefficient.
The microstep control routine adjusts the motor PWM duty
cycle values, switches the direction of the motor windings
when needed, and compares the current pointer position
in microstep units to that of the required position. When
these values are equal, the V/F stops, the PWM units are
turned off (or the PWM duty cycle values can be
proportionally reduced to avoid false rotations in strong
gauge vibrations), and the pointer movement is
considered complete.
The synchronization control system performs initial pointer
synchronization by analyzing the inducted voltage to
detect the stop point.
Document No.001-33740: Rev. *F
Stepper Motor Driver for Smart Gauges
PSoC Internals
Figure 4. PSoC User Module Placement
The PSoC internal structure is shown in Figure 4.
The X- and Y-phase PWMs are placed in blocks DBB00
and DBB01, respectively, and their signals are connected
to the phase outputs via LUTs. The LUT functions are
charged at runtime to properly route the phase signal to
the corresponding pins during motor operation. The PWM
frequency is approximately 19 kHz, which assures
acoustic noise-free operation. It is possible to adjust the
required PWM frequency by changing the VC1 and VC2
divider values based on the motor manufacturer’s
The V/F is placed in blocks ACB00-ASC10. The converter
output generates periodic interrupts using the comparator
bus interrupts. The converter operation is described in
detail in the application note, AN2161 Voltage-toFrequency Converter.
The 9-bit DAC is used as the V/F signal source. Because
the DAC internal output alternates between AGND and the
set level, each column clock cycle and V/F samples the
input signal during both switching capacitor phases. The
DAC output is passed to the analog bus and then to the
AMUX input of the V/F via the PGA. The PGA is a
programmable threshold comparator, to which the PSoC
changes using dynamic re-configuration. Writing directly to
the control registers performs the reconfiguration.
Document No.001-33740: Rev. *F
Stepper Motor Driver for Smart Gauges
The programmable threshold comparator is used to
control motor induction voltage during the synchronization
process. The comparator is queried in software during
synchronization. It is placed in block ACB01. When
unused, the comparator block is configured as the PGA.
This demonstration uses a UART-controlled exchange
protocol, where all messages are encoded in text strings.
Use the HyperTerminal to send commands to the driver.
The DAC controlling illumination brightness is placed in
ASD11. The 6-bit DAC sets the LED brightness level.
The VC3 interrupts generate the periodic speed-update
intervals. In this design, the interrupt frequency is
4800 Hz. The speed update event is triggered every 16
interrupts, so the rotation speed value is recalculated once
every 3.3 ms. The VC3 interrupts are also used to form
the phase excitation pulse duration during motor
synchronization. VC3 uses a stable, divided high-speed
generator signal (accuracy is  2.5%). This assures that
the acceleration value is set accurately for proper motor
Sleep timer interrupts are used to form the blinking D8
events and update the bus exchange timeout. The fact
that the sleep timer is driven from the low-accuracy
( 50%) internal low-speed oscillator is not important for
these non-critical operations.
Note that the CPU clock is 12 MHz; therefore, at a 24-MHz
clock, the maximum junction temperature is 82 C, with an
ambient temperature of only 70 C. PSoC allows a
maximum ambient temperature of 85 C for a clock rate of
12 MHz or less.
Set the gauge parameter value in the chosen internal
unit (such as km/hour, Celsius).
The pointer is synchronized to the initial position (internal
stop) at gauge power-up. However, the synchronization
process can also be initiated by sending the appropriate
commands to the gauge.
When a set parameter command is received, the
parameter value is checked for upper and lower bounds
and linearly scaled to be in the chosen microstep unit. In
this demonstration, the allowed pointer displacement is
limited to 4400 microsteps; this value is calculated from
the motor’s mechanical construction, especially the
gearbox reduction ratio. The calculated microstep value is
checked again to eliminate any errors in the scale coefficient settings. Equation (3) shows the calculation.
M v  min  M max , max  M c , M min   ;
 2Kp
Pms  min  Pmax , max 
M v  M off , 0  
 s
 
Equation 3
Mc, Mmin, and Mmax are the received, minimum, and
maximum allowed parameter values, respectively. Pms and
Pmax are the calculated and maximum permitted pointer
positions in microsteps. Kp, Ks, and Moff are scale coefficients. You can adjust the parameter conversion
formulae or use other data types to serve special
parameter representations.
In the current UART-based protocol, each message is a
carriage-return terminated string that consists of three
parameters. All parameters are separated by spaces:
"Node_Address Command Command_value.”
All integers are in hexadecimal format.
The driver firmware consists of the following elements:
Address field: number from 0.FFh.
Time Management
Value: two-byte unsigned integer value.
Pointer Positioning Control
Table 1. Command Descriptors
Bus Interface
Command field: one letter. All supported commands
are given in Table 1.
Command Parser
Pointer Synchronization
Self-Test Function
The bus interface decodes and interprets the messages
from the bus. In this demonstration, each device is
characterized by its own address and can parse the
following commands:
Turn on/off the status LED.
Turn on/off illumination LEDs and gradually set
brightness level (62 different levels and an off state
are supported).
Stop pointer synchronization.
Set pointer position in microsteps.
Set parameter. Allowed values are 0-350.
Initialize motor. Set pointer to stop using backEMF synchronization. Value is not important.
Set pointer position in microsteps. Valid values
are 0-4400.
Set acceleration ratio. Valid values are 0-150.
Set illumination LED brightness. Valid values are
Turn on/off the status LED. Non-zero value turns
on the LED. Zero turns it off.
Document No.001-33740: Rev. *F
Stepper Motor Driver for Smart Gauges
The command example is: "10 P 12C," meaning that the
node address is set to 10h, the command is “set
parameter,” and the parameter value is 12Ch. The motor
positioning control firmware consists of two main routines:
speed update and microstep control routines, which are
shown in Figure 5.
Figure 5. (a) Speed Adjustment and (b) Microstep Control ISR
a  a0 , v  v 0 , Pstart  Pcur
Pd  Pstart  Pnew / 2
Pcur == Pnew
Pcur == Pnew
Pcur  Pnew  Pd
a  -a0
v  va
v  vmin
v > v max
v  v min
v  vmax , a  0,
Figure 5 shows the speed control algorithm and the ISR
flow of the micro-step timer. The minimum V/F output
frequency is approximately 128*1.5 Hz (limited by the
offset voltage and DAC output voltage swing limits). This
can be extended for very low frequencies using an
additional software counter. This allows very low pointer
positioning speeds, which can be useful for special
applications. The current implementation allows a
minimum pointer rotational speed of less than
1 RPM. The number of interrupt events for skipping is
calculated in the speed control routine.
Pcur > Pnew
Pd  Pcur  Pstart
To calculate the sin/cos duty cycle values for the PWM
sources, the five least significant bits are separated from
the current pointer position variable and used as indices
for the quarter period sin LUT. Thus, only 32+1 bytes are
allocated for storage of this table in PSoC's Flash.
Document No.001-33740: Rev. *F
Stepper Motor Driver for Smart Gauges
The PSoC LUTs were used as the PWM signal
multiplexers to allow bridge coil control and maximize the
usage of the power supply voltage. Figure 6 illustrates
Figure 7. Pointer Synchronization Mechanism
Figure 6. Motor Phases Control
Ph  Ph max
Figure 7 shows the synchronization algorithm, which
provides sensor-less pointer rotation to the internal stop.
Document No.001-33740: Rev. *F
Stepper Motor Driver for Smart Gauges
Stepper motors for gauges can have special mechanical
construction to ensure that when the pointers stop, the
rotor magnet poles are located close to same phase coils
for any motor in a series. This simplifies the
synchronization logic by only reading the inducted voltage
during a one-phase interval (rotor step).
Note The Variable field (next to the Send button) can be
entered in decimal or hex format (using the x prefix).
The software interacts with the device using a PC serial
port. The valid settings are shown in Figure 9.
Figure 9. GUI COM Port Settings
The motor in this design operates in the full-step mode
(wave drive mode) during the synchronization process and
the inducted voltage is read-only when phase x1 is driven
(see Figure 10). A simple digital filter is used to suppress
the noise caused by inter-coil capacitance. The motor
rotor is considered rotating when the voltage on the sense
coil is greater than the predefined threshold, for more than
Cth samples during the checkpoint phase excitation time.
The self-test feature allows users to test the gauge without
active bus commands. The switch at P0[1] can used to
enter self-test. After self-synchronization stops, the pointer
is commanded to reach various positions in microsteps,
and various illumination LED levels are set in series. A
range of acceleration values are set to simulate different
damping ratios as well. The status LED flashes any time
the pointer reaches the demanded position.
Possible Design Modifications
PC Test Software
To simulate a bus interface, a simple test software is
written using Borland Delphi 7 and runs with Microsoft
Windows. The software remembers the previously entered
numerical values in the drop-list box, which allows for easy
repetition of previously entered commands.
The proposed driver can be adapted for other demands
such as servo control and several industrial applications.
The synchronization technique in this application note can
be adapted to conventional stepper motors. The digital
filter can remove the parasitic spikes when the drive phase
is excited
Figure 8. Gauge Control Test Software
Document No.001-33740: Rev. *F
Stepper Motor Driver for Smart Gauges
Appendix A. Driver Schematic
Figure 10. Driver Schematic
Figure 10 shows the device schematic.
This driver is designed for vehicle applications with supply
voltages between 8 V and 18 V.
The driver consists of:
Two current sources are used to drive the illumination (D2
and D3) and status (D4) LEDs. The Status LED can be
used for low fuel, overheating, or alarm.
U1 – Voltage Regulator LM7805CT
U2 – PSoC CY8C24423A
U3 – Motor Driver L293D
U4 – RS232 Level Translator MAX3232
The regulator provides 5 V to run the PSoC device, motor
driver, and the RS232-level translator. This design uses a
28-pin PSoC CY8C24423A device. However, you can also
use PSoC device with a lower pin count.
The motor driver provides two channels to drive both the
coils with the ability to enable or disable individual
channels. One of the channels (X Phase) is permanently
enabled and the other phase (Y Phase) is controlled using
an enable signal (EN) during the synchronization process,
when the induced voltage (IND) is read from the Y Phase.
R2 pulls down the line for the correct Y voltage reading
when the Y Phase outputs are disabled.
UART is used for the demonstration but you can use any
other appropriate interface (such as SPI or I2C) to control
the driver. For example, in vehicle dashboard applications,
one master can control several slave gauges through an
I2C bus, where the I2C master uses LIN bus slaves.
The current-through-illumination LED is controlled by a
PSoC internal DAC (ILLUM signal), which allows gradual
tuning of LED brightness based on external commands.
The status LED is controlled by logic (TELL signal). The
current sources provide constant brightness in case of
power supply or temperature variations. These LEDs are
directly connected to a battery line to reduce the linear
regulator (U1) power dissipation. LED D1 is used
internally; it starts blinking when the gauge is not
addressed on the bus within 1 or 2 seconds. Constant
LED lighting indicates the motor synchronization process.
When the bus master selects the gauge, this LED is off.
There are two test-points on the schematic: SPEED_OUT
and EXE_TIME. SPEED_OUT is the DAC output that sets
the speed, whereas EXE_TIME measures the execution
time of the code fragment using dedicated macros.
Document No.001-33740: Rev. *F
Stepper Motor Driver for Smart Gauges
Appendix B. Scope Images
Images (a) and (b) show the motor synchronization
process for different pointer inertia moments. The stop
moment is clearly displayed.
Images (c) and (d) show voltage on the motor pins for
two different phases. The increasing lower-bound and
decreasing upper-bound correspond to the voltage
drop on the opened MOSFET, due to coil current
increase according to the sine law.
Image (e) shows the RS232 communication signal.
Image (f) shows speed control DAC output voltage.
Note Rotation starts and finishes at some intermediate
level when the DAC output voltage is set above some
minimum voltage to get a very small internal control step
frequency by value control using the software skip
Document No.001-33740: Rev. *F
Stepper Motor Driver for Smart Gauges
About the Author
“Handbook of Small Electric Motors,” William H.
Yeadon, Alan W. Yeadon, McGraw-Hill, 2001
Document No.001-33740: Rev. *F
Victor Kremin
Associate Professor
Victor earned a radiophysics diploma
in 1996 from Ivan Franko National
Lviv University and a PhD degree in
computer-aided design systems in
2000. He is presently working as
Associate Professor at National
University "Lvivska Polytechnika"
(Ukraine). His interests involve the
full cycle of embedded systems
design including many different
processors, operation systems, and
target applications.
[email protected]
Stepper Motor Driver for Smart Gauges
Document History
Document Title: Stepper Motor Driver for Smart Gauges – AN2197
Document Number: 001-33740
Orig. of
New application note
Updated BOOT.TPL file
Description of Change
Updated UM versions
Updated associated project.
Template Update
Updated for PSoC Designer 5.2
Changed abstract.
Removed Matlab images.
Corrected schematics.
And some minor edits
Updated Schematic
Updated project to PSoC Designer 5.4.
Refine the content of Introduction section
Change section title “Motor Driving Principles” to “System features”
Add sub-section titles in “System features” and “Design Overview”
Move “Driver Schematic” to Appendix-A since it is independent content for other
Correct other typos
Document No.001-33740: Rev. *F
Stepper Motor Driver for Smart Gauges
Worldwide Sales and Design Support
Cypress maintains a worldwide network of offices, solution centers, manufacturer’s representatives, and distributors. To find
the office closest to you, visit us at Cypress Locations.
PSoC® Solutions
Clocks & Buffers
PSoC 1 | PSoC 3 | PSoC 4 | PSoC 5LP
Lighting & Power Control
Cypress Developer Community
Community | Forums | Blogs | Video
| Training
Optical Navigation Sensors
Touch Sensing
USB Controllers
PSoC is a registered trademark of Cypress Semiconductor Corp. PSoC Designer is a trademark of Cypress Semiconductor Corp. All other trademarks
or registered trademarks referenced herein are the property of their respective owners.
Cypress Semiconductor
198 Champion Court
San Jose, CA 95134-1709
: 408-943-2600
: 408-943-4730
© Cypress Semiconductor Corporation, 2007-2014. The information contained herein is subject to change without notice. Cypress Semiconductor
Corporation assumes no responsibility for the use of any circuitry other than circuitry embodied in a Cypress product. Nor does it convey or imply any
license under patent or other rights. Cypress products are not warranted nor intended to be used for medical, life support, life saving, critical control or
safety applications, unless pursuant to an express written agreement with Cypress. Furthermore, Cypress does not authorize its products for use as
critical components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The
inclusion of Cypress products in life-support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies
Cypress against all charges.
This Source Code (software and/or firmware) is owned by Cypress Semiconductor Corporation (Cypress) and is protected by and subject to worldwide
patent protection (United States and foreign), United States copyright laws and international treaty provisions. Cypress hereby grants to licensee a
personal, non-exclusive, non-transferable license to copy, use, modify, create derivative works of, and compile the Cypress Source Code and derivative
works for the sole purpose of creating custom software and or firmware in support of licensee product to be used only in conjunction with a Cypress
integrated circuit as specified in the applicable agreement. Any reproduction, modification, translation, compilation, or representation of this Source
Code except as specified above is prohibited without the express written permission of Cypress.
right to make changes without further notice to the materials described herein. Cypress does not assume any liability arising out of the application or
use of any product or circuit described herein. Cypress does not authorize its products for use as critical components in life-support systems where a
malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress’ product in a life-support systems
application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges.
Use may be limited by and subject to the applicable Cypress software license agreement.
Document No.001-33740: Rev. *F