AN205405 FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib.pdf

AN205405
FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
Associated Part Family: MB9AA30N Series
This application note describes Cypress TSC_LIB library, which is based on latest Capacitance Touch Sensor (TSC)
GPIO algorithm.
Contents
1
2
3
Introduction .................................................................. 1
1.1 Purpose .............................................................. 1
1.2 Document Overview ............................................ 1
TSC Principle............................................................... 2
TSC Library ................................................................. 4
3.1 Library Overview ................................................. 4
3.2 Parameters Setup ............................................... 6
3.3 Application Interface ........................................... 8
1
Introduction
1.1
Purpose
3.4 How to Add Cypress TSC_LIB.a ....................... 10
4 LIB Usage Notice ...................................................... 12
5 Additional Information ................................................ 13
A Appendix ................................................................... 14
A.1 Sample Code .................................................... 14
Document History............................................................ 17
This application note describes Cypress TSC_LIB library, which is based on latest Capacitance Touch Sensor (TSC)
GPIO algorithm. Added to that is the descriptions of how to use TSC_LIB library and some notices.
This TSC_LIB.a library is used in IAR development environment.
1.2
Document Overview
The rest of document is organized as the following:
Section 2 describes TSC Principle.
Section 3 describes TSC Library.
Section 4 describes LIB Usage Notice.
www.cypress.com
Document No. 002-05405 Rev. *A
1
FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
2
TSC Principle
This section introduces working principles of GPIO solution.
The theory of capacitance touch sensor is to check capacitance increment. As follows, when finger not touch the
 = 
(2.1)
 =  + 
(2.2)
While the pad is touching, equation become
Where the increment is ΔC = CF.
Figure 1. Diagram of Capacitance Touch Sensor Theory
Finger
CF
CP
According to the characteristics of capacitor, the deposited charge of capacitor increases along with the increase of
capacitance.
Cypress uses GPIO method to check the capacitance change.
Figure 2. Diagram of GPIO Algorithm
VCC
Pull up
resistor
MCU
GPIO-pin
www.cypress.com
Filter
resistor
Document No. 002-05405 Rev.*A
2
FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
The method includes the following steps:
1.
Set pin to high impedance to charge the pad;
2.
Begin counter accumulation;
3.
Wait until the pad is charged;
4.
Set pin to ‘L’ to discharge the pad;
5.
Wait until the pad is discharged;
6.
Save counter value;
7.
Sample number decrease;
8.
If sample number isn’t zero, start next sample loop;
9.
If sample number is zero, calculate sum of counter, finish sample;
Flowchart and hardware connection are shown in Figure 3 and Figure 4.
Figure 3. Check Flowchart
Start
Charge the pad
Counter accumulation
Wait padcharged
N
Y
Discharge the pad
Counter accumulation
Wait paddischarged
N
Y
Sample number decrease
N
If sampling
number is zero?
Y
Calculate sum of counter
End
www.cypress.com
Document No. 002-05405 Rev.*A
3
FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
Figure 4. Hardware Connection
3
TSC Library
This section introduces how to use TSC library.
3.1
Library Overview
There are parameters which user need to setup, and 4 functions as API for user’s situations. All the parameters and
functions are introduced as follow.
Table 1. Parameters List
Name
Description
Remarks
TSCKEY_KEYNUM
Total TSC key number
N/A
TSCKEY_SampleNumConst
Sample number
N/A
TSCKEY_BUTTONX_USED
Decide if TSC key Button X will be Used
N/A
TSCKEY_BUTTONX_DATA_IN
TSC key X pin data in
N/A
TSCKEY_BUTTONX_DATA_OUT
TSC key X pin data out
N/A
TSCKEY_BUTTONX_DIR
TSC key X pin dir in
N/A
TSCKEY_BUTTONX_PULL_UP
TSC key X pin pull up
N/A
TSCKEY_BUTTONX_PFR
TSC key X pin PFR
N/A
TSCKEY_BUTTONX_PORT
TSC key X port
N/A
TSCKEY_BUTTONX_PIN
TSC key X pin
N/A
TSCKEY_OffsetLX
Offset Const Level X for individual keys
N/A
TSC_TIMER_INITITAL_VALUE
Timer load value register
N/A
TSC_TIMER_COUNT_VALUE
Timer current value register
N/A
TSC_TIMER_START
Enable timer
N/A
TSC_TIMER_STOP
Disable time
N/A
Basline_Const
Used TSC baseline update
N/A
Key_Const
TSC key information
N/A
TSC_KeyOffset
Each individual key offset const
N/A
TSC_Baseline
Each key current baseline information
N/A
TSCKEY_SubAvgShiftConst
Sub driver layer average shift const
N/A
TSCKEY_AvoidErrorConst
Avoid mistake in initialize process
N/A
www.cypress.com
Document No. 002-05405 Rev.*A
4
FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
Name
Description
Remarks
TSCKEY_NoiseOffsetConst
Avoid mistake in initialize process
N/A
TSCKEY_DeltaBucketThrConst
Delta value threshold const
N/A
TSCKEY_PercentSumConst
Sum const of all keys
N/A
TSCKEY_MinificationConst
Base line value minificate const
N/A
TSCKEY_BalnUpdateConst
Base line update counter const
N/A
TSCKEY_AmpShiftConst
Amplify shift const
N/A
Table 2. Functions List
Prototype
Function Description
Remarks
void TSCKey_Init(uint8_t Key_Num)
Initialize TSC module
N/A
void TSCKey_SampleUnit(uint32_t
TSCKEY_SampleNum)
Bottom layer sample unit of TSC.
N/A
void TSCKey_Filter(uint8_t Key_Num, uint8_t
Order_Shift)
Filter function of TSC sample value
N/A
uint32_t TSCKey_GetValue(uint8_t Key_Num)
Judgment touch status and coding key value
N/A
uint8_t TSCKey_UpdateBaseline(uint8_t
Key_Num)
TSC key update baseline
N/A
www.cypress.com
Document No. 002-05405 Rev.*A
5
FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
3.2
Parameters Setup
3.2.1
Port and Pin define
The related hardware define:
#define TSCKEY_BUTTON0_USED
TRUE
/* Decide if TSCKEY Button0 will be Used */
#define TSCKEY_BUTTON1_USED
FALSE
/* Decide if TSCKEY Button1 will be Used */
#define TSCKEY_BUTTON2_USED
FALSE
/* Decide if TSCKEY Button2 will be Used */
#define TSCKEY_BUTTON3_USED
FALSE
/* Decide if TSCKEY Button3 will be Used */
#define TSCKEY_BUTTON0_DATA_IN
bFM3_GPIO_PDIR1_P5/* TSC Key pin data in*/
#define TSCKEY_BUTTON1_DATA_IN
bFM3_GPIO_PDIR4_P6/* TSC Key pin data in*/
#define TSCKEY_BUTTON2_DATA_IN
bFM3_GPIO_PDIR3_PF/* TSC Key pin data in*/
#define TSCKEY_BUTTON3_DATA_IN
bFM3_GPIO_PDIR3_PE/* TSC Key pin data in*/
#define TSCKEY_BUTTON0_DATA_OUT
bFM3_GPIO_PDOR1_P5 /* TSC Key pin data out*/
#define TSCKEY_BUTTON1_DATA_OUT
bFM3_GPIO_PDOR4_P6 /* TSC Key pin data out*/
#define TSCKEY_BUTTON2_DATA_OUT
bFM3_GPIO_PDOR3_PF/* TSC Key pin data out*/
#define TSCKEY_BUTTON3_DATA_OUT
bFM3_GPIO_PDOR3_PE /* TSC Key pin data out*/
#define TSCKEY_BUTTON0_DIR
bFM3_GPIO_DDR1_P5 /* TSC Key pin dir in*/
#define TSCKEY_BUTTON1_DIR
bFM3_GPIO_DDR4_P6 /* TSC Key pin dir in*/
#define TSCKEY_BUTTON2_DIR
bFM3_GPIO_DDR3_PF /* TSC Key pin dir in*/
#define TSCKEY_BUTTON3_DIR
bFM3_GPIO_DDR3_PE /* TSC Key pin dir in*/
#define TSCKEY_BUTTON0_PULL_UP
bFM3_GPIO_PCR1_P5 /* TSC Key pin pull up*/
#define TSCKEY_BUTTON1_PULL_UP
bFM3_GPIO_PCR4_P6 /* TSC Key pin pull up*/
#define TSCKEY_BUTTON2_PULL_UP
bFM3_GPIO_PCR3_PF /* TSC Key pin pull up*/
#define TSCKEY_BUTTON3_PULL_UP
bFM3_GPIO_PCR3_PE /* TSC Key pin pull up*/
#define TSCKEY_BUTTON0_PFR
bFM3_GPIO_PFR1_P5 /* TSC Key pin PFR*/
#define TSCKEY_BUTTON1_PFR
bFM3_GPIO_PFR4_P6 /* TSC Key pin PFR*/
#define TSCKEY_BUTTON2_PFR
bFM3_GPIO_PFR3_PF /* TSC Key pin PFR*/
#define TSCKEY_BUTTON3_PFR
bFM3_GPIO_PFR3_PE /* TSC Key pin PFR*/
#define TSCKEY_BUTTON0_PORT
PORT_1 /* TSC Key port*/
#define TSCKEY_BUTTON1_PORT
PORT_4 /* TSC Key port*/
#define TSCKEY_BUTTON2_PORT
PORT_3 /* TSC Key port*/
#define TSCKEY_BUTTON3_PORT
PORT_3 /* TSCKey port*/
#define TSCKEY_BUTTON0_PIN
PIN_5 /* TSC Key pin */
#define TSCKEY_BUTTON1_PIN
PIN_6 /* TSC Key pin */
#define TSCKEY_BUTTON2_PIN
PIN_15 /* TSC Key pin */
#define TSCKEY_BUTTON3_PIN
PIN_14 /* TSC Key pin */
www.cypress.com
Document No. 002-05405 Rev.*A
6
FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
3.2.2
Sample Parameters setup
The parameters:
#define TSC_TIMER_INITITAL_VALUE FM3_BT3_RT->PCSR
// Timer load value register
#define TSC_TIMER_COUNT_VALUE
FM3_BT3_RT->TMR
// Timer current value register
#define TSC_TIMER_TMCR
FM3_BT3_RT->TMCR
// Timer control1 register
#define TSC_TIMER_TMCR2
FM3_BT3_RT->TMCR2
// Timer control2 register
#define TSC_TIMER_STC
FM3_BT3_RT->STC
#define TSC_TIMER_CTR
#define TSC_TIMER_START
#define TSC_TIMER_STOP
#define TSCTIMEINITVAL
TSC_TIMER_TMCR
(TSC_TIMER_CTR | (3))
(TSC_TIMER_CTR & (~3))
// Timer status control register
// Timer load value register
// Enable Timer
// Disable Timer
0xFFFF
#define TSCKEY_MinificationEnable
FALSE
//Decide if need minification
of baseline value
#define TSCKEY_IIRShiftConstL1
1
// Shift Const Level 0 for IIR filter
#define TSCKEY_IIRNumConstL1
2 << TSCKEY_IIRShiftConstL1
// Number
of Shift Times Const Level 0 for IIR filter
#define TSCKEY_IIRShiftConstL2
2
// Shift Const Level 1 for IIR filter
#define TSCKEY_IIRNumConstL2
2 << TSCKEY_IIRShiftConstL2
// Number
of Shift Times Const Level 1 for IIR filter
#define TSCKEY_IIRShiftConstL3
3
//Shift Const Level 2 for IIR filter
#define TSCKEY_IIRNumConstL3
2 << TSCKEY_IIRShiftConstL3
// Number
of Shift Times Const Level 2 for IIR filter
#define TSCKEY_IIRShiftConstL4
5
// Shift Const Level 3 for IIR filter
#define TSCKEY_IIRNumConstL4
2 << TSCKEY_IIRShiftConstL4
// Number
of Shift Times Const Level 3 for IIR filter
#define TSCKEY_OffsetL0
10
// Offset Const Level 0 for individual keys
#define TSCKEY_OffsetL1
10
// Offset Const Level 1 for individual keys
#define TSCKEY_OffsetL2
10
// Offset Const Level 2 for individual keys
#define TSCKEY_OffsetL3
10
// Offset Const Level 3 for individual keys
#define TSCKEY_SubAvgShiftConst
1
//Sub driver layer average shift const
#define TSCKEY_AvoidErrorConst
300
// Avoid mistake in initialize process
#define TSCKEY_NoiseOffsetConst
100
// Avoid mistake in initialize process
#define TSCKEY_DeltaBucketThrConst 50
// Delta value threshold const
#define TSCKEY_PercentSumConst
// Sum const of all keys
400
#define TSCKEY_MinificationConst 3
// Baseline value minificate const
#define TSCKEY_BalnUpdateConst
1
// Baseline update counter const
#define TSCKEY_AmpShiftConst
1
// Amplify shift const
Used to configure the sample number, threshold, and timer initial value.
www.cypress.com
Document No. 002-05405 Rev.*A
7
FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
3.2.3
Structure Type Define
Each TSC Key has 4 attributes: original value, filtered value, noise threshold and difference percent value.
typedef struct
{
uint32_t
OriginValue;
/* Contains the original value */
uint32_t
Value;
/* Contains the count value */
uint32_t
NoiseThreshold;
/* Contains the key threshold level */
uint32_t
Percent;
/* Contains the value percent */
} Key_Const;
User can define new key directly using the following structure.
typedef struct
{
uint32_t
int32_t
} Basline_Const;
3.3
Value;
DeltaBucket;
/* Contains the current baseline value */
/* Contains the key threshold level */
Application Interface
All the functions supplied by the TSC_GPIO.lib will be introduced below, include the function prototype, input
parameter(s), return value(s), and the function description.
3.3.1
TSCKey_Init(uint8_t)
Prototype
void TSCKey_Init(uint8_t Key_Num)
Parameter:
Key_Num:
Return
void
Description
Initialize LCD module
Indication the number of touch keys need initialization
Disables analog function of TSC pin.
Initialize counter
Initialize pin status to discharge TSC pad
Get baseline and noise threshold
Initialize used flag
Remark
www.cypress.com
N/A
Document No. 002-05405 Rev.*A
8
FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
3.3.2
3.3.3
TSCKey_SampleUnit(uint32_t)
Prototype
void TSCKey_SampleUnit(uint32_t TSCKEY_SampleNum)
Parameter:
TSCKEY_SampleNum:
Return
void
Description
Bottom layer sample unit of TSC.
Remark
N/A
Indication sample number
TSCKey_Filter(uint8_t, uint8_t)
Prototype
void TSCKey_Filter(uint8_t Key_Num, uint8_t Order_Shift)
Key_Num:
Indication the number of touch keys need filter
Parameter:
Order_Shift:
3.3.4
3.3.5
Indication the shift number of order for filter
Return
void
Description
Filter function of TSC sample value
Remark
N/A
uint32_t TSCKey_GetValue(uint8_t)
Prototype
uint32_t TSCKey_GetValue(uint8_t Key_Num)
Parameter:
Key_Num:
Return
Key word of individual keys in lower byte; Slide position of slider in upper byte
Description
Judgment touch status and coding key value
Remark
N/A
Indication the number of touch keys need filter
uint8_t TSCKey_UpdateBaseline(uint8_t)
Prototype
uint8_t TSCKey_UpdateBaseline(uint8_t Key_Num)
Parameter:
Key_Num:
Return
Runs status
Description
TSC key update baseline
Remark
N/A
www.cypress.com
Indication the number of touch keys need filter
Document No. 002-05405 Rev.*A
9
FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
3.4
How to Add Cypress TSC_LIB.a
3.4.1
Ad d C y p r e s s T S C _ G P I O . l i b t o U s e r ’ s P r o j e c t
1. In IAR project, Right click on workspace select Add Files from the menu Add.
Figure 5. Add Member to Folder
2.
In Add Member dialog box, select ‘ALL Files’ from ‘Files of Type’, and then you will find the TSC_LIB.a.
Figure 6. Found the Lib File
www.cypress.com
Document No. 002-05405 Rev.*A
10
FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
3.
Double click TSC_LIB.a, and then you can see it has been added in the folder Include Files.
Figure 7. Add TSC.Lib
3.4.2
Include Header File
1. Add "#include "tsc.h "" in header file, such as in "main.h ".
Figure 8. Add Include Statement in C File
2.
Compile the whole project, "tsc.h" will link TSC_LIB.a to c file, so that user program can use API functions in
TSC_LIB.a.
www.cypress.com
Document No. 002-05405 Rev.*A
11
FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
4
LIB Usage Notice
This section introduces LIB usage notice.

Machine clock
The machine clock should be set to 8M or above. If the machine clock is less than 8M, the sensor response is
slow.

Interrupt
When calling TSC_LIB.a library API functions, the all MCU interrupt will disable. After calling these functions, the
MCU will resume all interrupt as ago.
#define DisAllInterrupt()
#define EnAllInterrupt()

__asm("CPSID I")
__asm("CPSIE I")
//Disable all interrupt
//Enable all interrupt
TSC initialization
When initialization the TSC (i.e., when calling the TSCKey_Init function), user can’t touch the TSC key.
www.cypress.com
Document No. 002-05405 Rev.*A
12
FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
5
Additional Information
For more information on Cypress products, please visit the following website:
http://www.cypress.com/cypress-microcontrollers
www.cypress.com
Document No. 002-05405 Rev.*A
13
FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
A
Appendix
A.1
Sample Code
A. 1 . 1
Main Function
Name: Main Function
Function: Initialize and configure.
main.c
//*************************************************************************************************************************
// FUNCTION:
// Init the system
// PARAMETERS:
// RETURN:
// none:
//*************************************************************************************************************************
void Sys_Init(void)
{
SetAllGpioOutH();
// Set the not used GPIO H level to reduce the power consume in normal mode
InitRTC(0x0);
// Initialize RTC
Lvd_Init();
// LVD initialization, detection voltage 4V, LVD interrupt
CommonDvc_Int();
// Init common device, eg: LCD backlight, Beep, LED
BT0ReloadTimer_Init();
// Init and start BT0
//Test-self the device
BeepOn();
LcdBackOn();
LedTscOn();
LedWorkOn();
Delay_ms(20);
LCD_Init();
// Init LCD
ShowPage1();
Delay_ms(400);
BeepOff();
LedTscOff();
LedWorkOff();
InitADC();
// Initialize ADC
gMon_1SecFlag = 0;
gMon_CurTemp = 0;
gMon_CaliStep = 0;
ADC12_ScanStart(ADCUnit, ADC12_SCAN_MODE_CONTINUE); // Start ADC for first temperature sampling
Delay_ms(2500);
TSCKey_Init(TSCKEY_KEYNUM);
// Initialise TSC Key
}
www.cypress.com
Document No. 002-05405 Rev.*A
14
FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
/**
******************************************************************************
** \brief Main function of project for MB9AA30 series.
**
** \param none
** \return uint32_t return value, if needed
******************************************************************************/
int32_t main(void)
{
Sys_Init(); // Init the system
while(1)
{
StatusServeRun();
// Led indication the system run status
KeyScanf();
// Scan the key and Joystick
KeyTouchServe();
// Have a key, Led and Beep indication
DispModeServe();
// LCD display, normal mode and key down mode
if ( (MechKeyId == 0x1) && (TscKeyId == 0x1) && (JoyKeyId != JoyNot) ) // Enter min system test mode
{
MinSysCurTest();
}
if ((MechKeyId == 0x1) && (JoyKeyId == JoyOk) && (TscKeyId == 0x0))
{
RtcModeSet();
// Setting time & date mode
}
if ((TscKeyId == 0x1) && (MechKeyId == 0x1) && (JoyKeyId == JoyNot))
{
EnterLowerPowerModeProcess();
// Enter standby stop mode
}
if (((LastJoyKeyId != JoyNot) && (JoyKeyId != JoyNot)) || (TscKeyId == 0x1)) // Normal mode, has a key?
{
KeyDown = 0x1;
// Beep and led indication
KeyDownCnt = 0x0;
// Clean the counter
DisplayMode = 0x1;
// Enter key display mode
TouchModeCnt = 0x0;
// Clean the counter
TscKeyId = 0x0;
}
TscKeyScanf();
// Judging has a TSC key
TSCKey_UpdateBaseline(TSCKEY_KEYNUM);
// Update the TSC base line
if(TempSmplFinished == 1)
// Temperature sample finishes?
{
TempSmplFinished = 0;
GetCurTemp(&gMon_CurTemp);
gMon_CaliStep = CaliProcess(gMon_CurTemp);
}
www.cypress.com
Document No. 002-05405 Rev.*A
15
FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
if ( PowerSupplyCnt >= POWER_SUPPLY_TIME )
// Power judging, different supply voltage
{
PowerSupply = 0x1;
PowerSupplyCnt = 0x0;
Lvd_Init();
// LVD initialization, detection voltage 4V, LVD interrupt
Delay_ms(5);
if ( PowerSupplyLast != PowerSupply )
{
LCD_Init();
// Supply power chagned, then Init LCD
}
}
}
}
www.cypress.com
Document No. 002-05405 Rev.*A
16
FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
Document History
Document Title: AN205405 – FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
Document Number: 002-05405
Revision
ECN
Orig. of
Change
Submission
Date
**
-
CHMA
10/30/2012
Initial release
*A
5285650
CHMA
05/26/2016
Migrated Spansion Application Note MCU-AN-510121-E-10 to Cypress format.
www.cypress.com
Description of Change
Document No. 002-05405 Rev.*A
17
FM3 MB9AA30N Series Bluemoon-EVB_TSC.Lib
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
ARM® Cortex® Microcontrollers
cypress.com/arm
PSoC 1 | PSoC 3 | PSoC 4 | PSoC 5LP
Automotive
cypress.com/automotive
Cypress Developer Community
Clocks & Buffers
cypress.com/clocks
Interface
cypress.com/interface
Lighting & Power Control
cypress.com/powerpsoc
Memory
cypress.com/memory
PSoC
cypress.com/psoc
Touch Sensing
cypress.com/touch
USB Controllers
cypress.com/usb
Wireless/RF
cypress.com/wireless
Forums | Projects | Videos | Blogs | Training | Components
Technical Support
cypress.com/support
PSoC is a registered trademark and PSoC Creator is a trademark of Cypress Semiconductor Corporation. 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, 2012-2016. This document is the property of Cypress Semiconductor Corporation and its subsidiaries, including
Spansion LLC (“Cypress”). This document, including any software or firmware included or referenced in this document (“Software”), is owned by
Cypress under the intellectual property laws and treaties of the United States and other countries worldwide. Cypress reserves all rights under such
laws and treaties and does not, except as specifically stated in this paragraph, grant any license under its patents, copyrights, trademarks, or other
intellectual property rights. If the Software is not accompanied by a license agreement and you do not otherwise have a written agreement with
Cypress governing the use of the Software, then Cypress hereby grants you a personal, non-exclusive, nontransferable license (without the right to
sublicense) (1) under its copyright rights in the Software (a) for Software provided in source code form, to modify and reproduce the Software solely for
use with Cypress hardware products, only internally within your organization, and (b) to distribute the Software in binary code form externally to end
users (either directly or indirectly through resellers and distributors), solely for use on Cypress hardware product units, and (2) under those claims of
Cypress’s patents that are infringed by the Software (as provided by Cypress, unmodified) to make, use, distribute, and import the Software solely for
use with Cypress hardware products. Any other use, reproduction, modification, translation, or compilation of the Software is prohibited.
TO THE EXTENT PERMITTED BY APPLICABLE LAW, CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD
TO THIS DOCUMENT OR ANY SOFTWARE OR ACCOMPANYING HARDWARE, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. To the extent permitted by applicable law, Cypress reserves the right to
make changes to this document without further notice. Cypress does not assume any liability arising out of the application or use of any product or
circuit described in this document. Any information provided in this document, including any sample design information or programming code, is
provided only for reference purposes. It is the responsibility of the user of this document to properly design, program, and test the functionality and
safety of any application made of this information and any resulting product. Cypress products are not designed, intended, or authorized for use as
critical components in systems designed or intended for the operation of weapons, weapons systems, nuclear installations, life-support devices or
systems, other medical devices or systems (including resuscitation equipment and surgical implants), pollution control or hazardous substances
management, or other uses where the failure of the device or system could cause personal injury, death, or property damage (“Unintended Uses”). A
critical component is any component of a device or system whose failure to perform can be reasonably expected to cause the failure of the device or
system, or to affect its safety or effectiveness. Cypress is not liable, in whole or in part, and you shall and hereby do release Cypress from any claim,
damage, or other liability arising from or related to all Unintended Uses of Cypress products. You shall indemnify and hold Cypress harmless from and
against all claims, costs, damages, and other liabilities, including claims for personal injury or death, arising from or related to any Unintended Uses of
Cypress products.
Cypress, the Cypress logo, Spansion, the Spansion logo, and combinations thereof, PSoC, CapSense, EZ-USB, F-RAM, and Traveo are trademarks or
registered trademarks of Cypress in the United States and other countries. For a more complete list of Cypress trademarks, visit cypress.com. Other
names and brands may be claimed as property of their respective owners.
www.cypress.com
Document No. 002-05405 Rev.*A
18