AN2197 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 Abstract ® 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. Contents 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 References......................................................................12 About the Author .............................................................12 Document History............................................................13 Introduction 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 www.cypress.com 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 1 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. Micro-stepping You can achieve this by applying the cos/sin analog current signals to the coils. 2 2 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. www.cypress.com 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: o A double-PWM or DAC to create the phase coils’ quadrature signals o A variable frequency generator to generate the phase current values’ updating events to determine the rotational speed o A speed control system to acceleration and deceleration operate rotational 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 2 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 gauge. 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 implementation. Note The conventional Unified Modelling Language (UML) notation was used to mark the relations between blocks. www.cypress.com Document No.001-33740: Rev. *F 3 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 displacements. 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: o o o 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 www.cypress.com V/F Module Ui vi Ks 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 4 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 recommendations. www.cypress.com 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 5 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 operation. 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. Firmware 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 K 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: 5. 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 Command Letter 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: 1. Turn on/off the status LED. 2. Turn on/off illumination LEDs and gradually set brightness level (62 different levels and an off state are supported). 3. Stop pointer synchronization. 4. Set pointer position in microsteps. www.cypress.com Command Description 'P' Set parameter. Allowed values are 0-350. 'I' Initialize motor. Set pointer to stop using backEMF synchronization. Value is not important. 'M' Set pointer position in microsteps. Valid values are 0-4400. 'A' Set acceleration ratio. Valid values are 0-150. 'B' Set illumination LED brightness. Valid values are 0-62. 'L' Turn on/off the status LED. Non-zero value turns on the LED. Zero turns it off. Document No.001-33740: Rev. *F 6 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 va 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. www.cypress.com 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 7 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 this. 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. www.cypress.com Document No.001-33740: Rev. *F 8 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 www.cypress.com Document No.001-33740: Rev. *F 9 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. www.cypress.com 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 10 Stepper Motor Driver for Smart Gauges Appendix B. Scope Images Notes: 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. www.cypress.com Image (d) shows acceleration/deceleration. Image (e) shows the RS232 communication signal. the rotation speed 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 counter. Document No.001-33740: Rev. *F 11 Stepper Motor Driver for Smart Gauges References 1. About the Author “Handbook of Small Electric Motors,” William H. Yeadon, Alan W. Yeadon, McGraw-Hill, 2001 Name: Title: Background: Contact: www.cypress.com 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] 12 Stepper Motor Driver for Smart Gauges Document History Document Title: Stepper Motor Driver for Smart Gauges – AN2197 Document Number: 001-33740 ECN Orig. of Change ** 1499983 YARD_UKR 10/07/2007 New application note *A 3197532 BIOL_UKR 03/16/2011 Updated BOOT.TPL file Revision Submission Date Description of Change Updated UM versions *B 3315215 YARD_UKR 07/15/2011 Updated associated project. *C 3466938 KUK 12/29/2011 Template Update Updated for PSoC Designer 5.2 *D 3680906 KUK 07/16/2012 Changed abstract. Removed Matlab images. Corrected schematics. And some minor edits *E 4089478 RJVB 08/07/2013 Updated Schematic Updated project to PSoC Designer 5.4. *F 4357562 BOBH 04/23/2014 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 sections Correct other typos www.cypress.com Document No.001-33740: Rev. *F 13 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 Products Automotive cypress.com/go/automotive psoc.cypress.com/solutions Clocks & Buffers cypress.com/go/clocks PSoC 1 | PSoC 3 | PSoC 4 | PSoC 5LP Interface cypress.com/go/interface Lighting & Power Control cypress.com/go/powerpsoc cypress.com/go/plc Cypress Developer Community Community | Forums | Blogs | Video | Training cypress.com/go/memory Memory Optical Navigation Sensors cypress.com/go/ons PSoC cypress.com/go/psoc Touch Sensing cypress.com/go/touch USB Controllers cypress.com/go/usb Wireless/RF cypress.com/go/wireless 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 Phone Fax Website : 408-943-2600 : 408-943-4730 : www.cypress.com © 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. Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress reserves the 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. www.cypress.com Document No.001-33740: Rev. *F 14