AN65977 PSoC® 3, PSoC 4, and PSoC 5LP – Temperature Measurement with a TMP05/TMP06 Digital Sensor Author: Rodolfo Lossio Associated Project: Yes Associated Part Family: PSoC 3, PSoC 4, PSoC 5LP Software Version: PSoC Creator™ v3.3 AN65977 describes the TMP05 Digital Temperature Sensor Interface Component, which is a building block for thermal management applications. It enables designers using PSoC to quickly and easily interface with multiple Analog Devices TMP05 or TMP06 digital temperature sensors through a simple, serial 2-wire digital interface. Contents 1 2 3 4 5 1 Introduction ...............................................................1 Typical System Architecture .....................................2 Design Considerations when using TMP05 Sensors in Daisy-Chain Mode ......................3 Getting Started with the TMP05 Digital Temperature Sensor Interface Component ..............3 Example 1 – Firmware Details ..................................5 6 Example 2 – Firmware Details.................................. 6 7 Example 3 – Firmware Details.................................. 8 8 Example 4 – Firmware Details................................ 10 9 Evaluation Kits........................................................ 13 10 Conclusion.............................................................. 13 Worldwide Sales and Design Support ............................. 15 Introduction Digital temperature sensors are widely used in systems where multiple temperature measurements are required in specific locations on a large board (such as a line card in a switch or router) or in a remote location. The use of digital temperature sensors frees the designer from worrying about digital noise coupling on to sensitive analog signals on the PCB layout because the digital temperature sensor does the analog to digital conversion within its own package, at the location where the temperature measurement is needed. 2 The most common digital temperature sensors use industry-standard communications interfaces such as I C or SPI. These interfaces are well known and need no description here. For applications in which the thermal management 2 controller has no I C or SPI interfaces available, an alternative is Analog Devices’ TMP05 and TMP06 monolithic temperature sensors that generate a pulse-width modulated (PWM) serial digital output. The duty cycle of the PWM output varies in direct proportion to the ambient temperature of the devices. The high period (TH) of the PWM remains static over all temperatures, while the low period (T L) varies. It offers a high temperature accuracy of ±1 °C from 0 °C to 70 °C with excellent transducer linearity. The digital output of the TMP05 is CMOS/TTL-compatible and, therefore, can be interfaced directly to PSoC. The digital output of the TMP06 is opendrain and requires a pull-up resistor for proper operation, which can be integrated inside PSoC. Throughout the rest of this document, any references to TMP05 also apply to the TMP06 sensor. The TMP05 Digital Temperature Sensor Interface component makes it extremely easy for designers to develop thermal monitoring and management solutions using multiple TMP05 sensors. The component requires just one input and one output pin from PSoC, which enables the designer to implement many other system management functions in the same device. The TMP05 Digital Temperature Sensor Interface component can be used in thermal management solutions for base stations, telecommunications, and in server and storage applications. Typical applications may include, but are not limited to, areas where remote temperature sensing, environmental control systems, computer thermal monitoring, thermal protection, industrial process control, and power-system monitoring and management are required. www.cypress.com Document No. 001-65977 Rev. *D 1 PSoC® 3, PSoC 4, and PSoC 5LP – Temperature Measurement with a TMP05/TMP06 Digital Sensor 2 Typical System Architecture The TMP05 sensor has three modes of operation: Continuously converting mode Daisy-chained mode One-shot mode A three-state function control input pin (FUNC) sampled at power-up determines the mode in which the device operates. Setting the FUNC pin to a high state allows multiple TMP05s to be connected in daisy-chained mode. In that mode, multiple TMP05 temperature sensors can be connected, which enables PSoC to read all the sensors through the same two-wire interface. In this configuration, PSoC generates a “Start” pulse to begin a new temperature-to-PWM conversion cycle. The output of the first TMP05 sensor begins with its own PWM output, followed by a new Start pulse that it generated internally. The output of the second TMP05 sensor begins with the PWM output of the previous sensor, followed by its own PWM output and terminated by a new Start pulse that it generated internally. When more sensors are daisychained in this fashion, the final return signal to PSoC contains the PWM outputs from all sensors starting with the output of the first sensor, followed by the output from the second sensor and so on until the terminating Start pulse is detected. Temperature-to-PWM conversion then stops until PSoC generates another Start pulse. The system-level connection scheme and expected waveforms are shown in Figure 1. PSoC is an ideal choice for interfacing to TMP05 sensors because it has the programmable universal digital block resources available to implement the required custom interface logic with minimal firmware. This application note focuses on how to use the TMP05 Digital Temperature Sensor Interface component with PSoC by working through some example projects on the CY8CKIT-001 PSoC Development Kit (DVK). The examples will show how to operate the component and monitor the temperature of multiple TMP05 devices reliably. Figure 1. Multiple TMP05 Sensors Daisy-Chained OUT CONV/IN TMP05 U1 OUT CONV/IN TMP05 PSoC U2 OUT IN www.cypress.com Document No. 001-65977 Rev. *D 2 PSoC® 3, PSoC 4, and PSoC 5LP – Temperature Measurement with a TMP05/TMP06 Digital Sensor 3 Design Considerations when using TMP05 Sensors in Daisy-Chain Mode Certain timing constraints must be observed when operating TMP05 sensors in daisy-chain mode. PSoC needs to generate the conversion start pulse on the CONV/IN pin of the first sensor. The start pulse lets the first TMP05 part know that it should now start a conversion and output its own temperature. The pulse width of the start pulse should be less than 25 μs but greater than 20 ns. These constraints are handled automatically by the component design and are mentioned in this application note for reference purposes only. Figure 2 and Figure 3 show the input and output waveforms for the first sensor in the daisy-chain (taken from the TMP05 device datasheet): Figure 2. TMP05 Start Pulse Waveform Figure 3. TMP05 PWM Output Waveform 4 Getting Started with the TMP05 Digital Temperature Sensor Interface Component Distributed with this application note is a PSoC Creator™ bundled project ZIP file that contains four example design projects and a library project. The library project contains the TMP05 Creator component. Save the ZIP file to a convenient location on your hard drive and extract the contents to a local folder. To get started with the example projects, double-click on the AN65977.cywrk PSoC Creator workspace file. www.cypress.com Document No. 001-65977 Rev. *D 3 PSoC® 3, PSoC 4, and PSoC 5LP – Temperature Measurement with a TMP05/TMP06 Digital Sensor Figure 4. Top-Level Schematic for TMP05 Example1 1. In the Workspace Explorer tab to the left of the screen, expand project Example1 by clicking on the small ‘+’ icon to the left of it. 2. Double-click on TopDesign.cysch to open the top-level design schematic, which shows the components used inside PSoC. To the right of the schematic is the PSoC Creator Component Catalog. The tab labeled Cypress contains the default library of Cypress-provided content. The Category labeled Thermal Management contains the TMP05 component. The provided library project can be re-used by importing into any PSoC Creator design project that requires the TMP05 interface component functionality. Figure 4 shows the top-level design schematic for Example Project 1. All of the example projects provided with this application note are designed to run on either the CY8CKIT-030 PSoC 3 Development Kit (DVK) or the CY8CKIT-050 PSoC 5LP DVK, supporting up to four TMP05 or TMP06 temperature sensors. The projects are easily modified to support more TMP05 or TMP06 sensors for further development and testing. Each example project consists of monitoring the ambient temperature from a specific number of TMP05 sensors. To replicate the environment for each project properly, some wire connections are required on the PSoC DVK. The Top Design of each project in PSoC Creator illustrates a circuit shown in blue. You can also refer to Figure 5 for the example using two sensors in daisy-chain. Double-click the TMP05 component to open the component customizer as show in Figure 6. www.cypress.com Document No. 001-65977 Rev. *D 4 PSoC® 3, PSoC 4, and PSoC 5LP – Temperature Measurement with a TMP05/TMP06 Digital Sensor Figure 5. Wire Connections for two daisy-chained TMP05 sensors Figure 6. TMP05 Component Customizer For the first example, the Mode parameter is set to Continious and the Number of Sensors parameter is set to 1. This will enable continuous monitoring of one TMP05 sensor. Click OK to close the customizer. Program the Example1 project into the DVK by selecting Debug > Program from the pull-down menus. If the project is running correctly, the text displayed on the debug LCD should look similar to the following picture. 5 Note that the temperature is displayed in both degrees Celsius and Fahrenheit. Example 1 – Firmware Details In the Workspace Explorer, double-click main.c to examine the firmware used in this example project. The code is shown in the Code 1 excerpt. As shown, all lines of code that begin with the prefix TMP05 reference APIs provided by Cypress for this component. Refer to the component datasheet for a full list of the provided APIs. In Example1, PSoC is monitoring the temperature of one TMP05 sensor continuously. The monitored temperature is displayed on the LCD. Congratulations! You have just completed your first TMP05 temperature sensor interface design with PSoC. Code 1. Example1 main.c Firmware code #include <device.h> #define TEMP_SCALE (100u) int main(void) { /* Enable global interrupts to the CPU core */ CyGlobalIntEnable; /* Start the hardware components */ LCD_Start(); LCD_ClearDisplay(); TMP05_Start(); /* Trigger the first TMP05 sensor measurement */ TMP05_Trigger(); /* Display the temperature continuously */ while (1) { www.cypress.com Document No. 001-65977 Rev. *D 5 PSoC® 3, PSoC 4, and PSoC 5LP – Temperature Measurement with a TMP05/TMP06 Digital Sensor /* Only display the temperature when end-of-conversion is detected */ if (TMP05_ConversionStatus() & TMP05_STATUS_COMPLETE) { LCD_Position(0,0); LCD_PrintString(“T1=”); LCD_PrintNumber((uint16)TMP05_GetTemperature(0) / TEMP_SCALE); LCD_PrintString(“C “); LCD_PrintNumber((((uint16)TMP05_GetTemperature(0) / TEMP_SCALE) * 1.8) + 32); LCD_PrintString(“F “); } } return(0); } 6 Example 2 – Firmware Details The firmware of Example2 also operates in continuous mode; however, it can sample one or two sensors depending on how the hardware is configured. You should set the number of sensors in the TMP05 component to be equal to the real number of sensors installed in the hardware. This example also supports daisy-chain error detection. Close main.c and TopDesign.cysch for Example1. Go back to the Workspace Explorer and right-click on Project ‘Example2’. Select Set as Active Project. Open TopDesign.cysch for Example2 to start working on this project. Program the Example2 project into the DVK by selecting Debug > Program from the pull-down menus. If the project is running correctly, the text displayed on the debug LCD should look similar to the following picture. If a sensing error is detected due to an open circuit anywhere in the daisy-chain, a message is displayed and sampling stops. In that case, the error message displayed on the LCD should look like the following picture: To generate an error condition, you can disconnect one of the cables connected to P4.0 or P4.1. The code for Example2 is shown in the Code 2 excerpt. Code 2. Example2 main.c Firmware code #include <device.h> #define TEMP_SCALE (100u) static void DisplayTemp(void); static void DisplayErrorMsg(void); /* Display temperatures on the LCD */ /* Display error messages on the LCD */ int main(void) { uint8 status; /* Enable global interrupts to the CPU core */ CyGlobalIntEnable; /* Start the hardware components */ LCD_Start(); LCD_ClearDisplay(); TMP05_Start(); /* Trigger the first TMP05 sensor measurement */ TMP05_Trigger(); /* Display the temperature continuously */ while (1) { status = TMP05_ConversionStatus(); /* Error detected, display error message */ if (status & TMP05_STATUS_ERROR) www.cypress.com Document No. 001-65977 Rev. *D 6 PSoC® 3, PSoC 4, and PSoC 5LP – Temperature Measurement with a TMP05/TMP06 Digital Sensor { DisplayErrorMsg(); /* Stop the component */ TMP05_Stop(); while (1) { /* Stop here */ } } /* Display the temperature(s) measured from the sensor(s) */ else if (status & TMP05_STATUS_COMPLETE) { DisplayTemp(); } } return(0); } /* Function to display temperatures on the character LCD */ static void DisplayTemp(void) { uint8 I; LCD_Position(0,0); /* Display the temperature(s) on the LCD */ for (i=0; I < TMP05_CUSTOM_NUM_SENSORS; i++) { /* Print the following string on LCD: T1=xxC */ LCD_PrintString(“T”); LCD_PrintNumber(i+1); LCD_PrintString(“=”); LCD_PrintNumber((uint16)TMP05_GetTemperature(i)/TEMP_SCALE); LCD_PrintString(“C “); } } /* Function to display error messages */ void displayErrorMsg(void) { LCD_ClearDisplay(); LCD_Position(0,0); LCD_PrintString(“Error Detected! “); LCD_Position(1,0); LCD_PrintString(“Reset to Retry..”); } www.cypress.com Document No. 001-65977 Rev. *D 7 PSoC® 3, PSoC 4, and PSoC 5LP – Temperature Measurement with a TMP05/TMP06 Digital Sensor 7 Example 3 – Firmware Details While the TMP05 component operates in continuous mode in the first two examples, it may be useful to operate it in the one-shot mode to set a deterministic sensor sample rate or to save power. This example also supports error detection, however, unlike Example2, sampling is not suspended when an error is detected. Instead, the firmware will continuously retry sampling. Close main.c and TopDesign.cysch for Example2. Go back to the Workspace Explorer and right-click on Project ‘Example3’. Select Set as Active Project. Open TopDesign.cysch for Example3 to start working on this project. Program the Example3 project into the DVK by selecting Debug > Program from the pull-down menus. If the project is running correctly, the text displayed on the debug LCD should look similar to the following picture: In this example, a timer is added to control the temperature sensor sample rate. By default, the timer is configured to generate an interrupt every 1 second. This can be changed by changing the period parameter of the Timer component placed on the schematic sheet. If an error is detected, a message is displayed and the firmware tries again to sample from the sensors. The error message displayed on the LCD should look like the following picture: To generate an error condition, you can disconnect one of the wires connected to P4.0 or P4.1. The code of Example3 is shown in the Code 3 excerpt. Code 3. Example3 main.c Firmware code #include <device.h> #define TEMP_SCALE (100u) static void DisplayTemp(void); static void DisplayErrorMsg(void); /* Display temperatures on the LCD */ /* Display error messages on the LCD */ static CYBIT errorFlag; static CYBIT timerFlag; /* Error condition flag */ /* Timer expired flag */ /* Interrupt handler for the error scenarios */ CY_ISR(AlertInterruptHandler) { /* Set the error flag for the main loop to process */ errorFlag = 1; } /* Interrupt handler for the temperature sensor sample rate timer */ CY_ISR(TimerInterruptHandler) { /* Clear the timer registers */ Timer_ReadStatusRegister(); /* Set the timer flag for the main loop to process */ timerFlag = 1; } int main(void) { uint8 status; /* Clear flags */ errorFlag = 0; timerFlag = 0; /* Enable global interrupts to the CPU core */ CyGlobalIntEnable; /* Start the hardware components */ LCD_Start(); www.cypress.com Document No. 001-65977 Rev. *D 8 PSoC® 3, PSoC 4, and PSoC 5LP – Temperature Measurement with a TMP05/TMP06 Digital Sensor LCD_ClearDisplay(); TMP05_Start(); Timer_Start(); /* Start and configure the Alert interrupt handler */ AlertISR_Start(); AlertISR_Disable(); AlertISR_SetVector(AlertInterruptHandler); AlertISR_Enable(); /* Start and configure the Timer interrupt handler */ TimerISR_Start(); TimerISR_Disable(); TimerISR_SetVector(TimerInterruptHandler); TimerISR_Enable(); /* Trigger the first TMP05 sensor measurement */ TMP05_Trigger(); while (1) { /* Error handling */ if (errorFlag) { errorFlag = 0; /* Display error message */ DisplayErrorMsg(); /* Restart the component */ TMP05_Stop(); TMP05_Start(); /* Trigger again to re-try the measurements */ TMP05_Trigger(); } /* Check for new temperature conversion result */ else { /* Read the status of the conversion */ status = TMP05_ConversionStatus(); if ((status & TMP05_STATUS_COMPLETE) && !(status & TMP05_STATUS_ERROR)) { /* Display the temperature(s) measured from the sensor(s) */ DisplayTemp(); } } /* Timer expired, initiate a new measurement */ if (timerFlag) { timerFlag = 0; TMP05_Trigger(); } } return(0); } /* Function to display temperatures on the character LCD */ static void DisplayTemp(void) { uint8 I; LCD_ClearDisplay(); LCD_Position(0,0); www.cypress.com Document No. 001-65977 Rev. *D 9 PSoC® 3, PSoC 4, and PSoC 5LP – Temperature Measurement with a TMP05/TMP06 Digital Sensor /* Display the temperature in a specific location on the LCD */ for (i=0; I < TMP05_CUSTOM_NUM_SENSORS; i++) { /* Print the following string on LCD: T1=xxC */ LCD_PrintString(“T”); LCD_PrintNumber(i+1); LCD_PrintString(“=”); LCD_PrintNumber((uint16)TMP05_GetTemperature(i)/TEMP_SCALE); LCD_PrintString(“C “); } } /* Function to display an error message */ static void DisplayErrorMsg(void) { LCD_ClearDisplay(); LCD_Position(0,0); LCD_PrintString(“Error Detected! “); LCD_Position(1,0); LCD_PrintString(“Retrying... “); } 8 Example 4 – Firmware Details In this example, the TMP05 component is configured in one-shot mode. The main difference in this example is the addition of a discovery mechanism that automatically determines the number of sensors in the daisy-chain. This feature is useful in cases where the same PSoC design will be used across several different variations of the same product, but each one supports a different number of TMP05 sensors. Close main.c and TopDesign.cysch for Example3. Go back to the Workspace Explorer and right-click on Project ‘Example4’. Select Set as Active Project. Open TopDesign.cysch for Example4 to start working on this project. Program the Example4 project into the DVK by selecting Debug > Program from the pull-down menus. If the project is running correctly, the text displayed on the debug LCD should look similar to the following picture. This example also uses a 1-second timer to control the temperature sensor sample rate. If an error is detected, the temperature will be displayed as ‘- - -’. In the above LCD picture, the firmware only discovered two sensors in the daisy-chain, therefore only the measurements of the first two temperatures are displayed. You could manually change the number of sensors in the daisy-chain of your hardware and test the discovery feature. The code of Example4 is shown in the following excerpt. Code 4. Example4 main.c Firmware code #include <device.h> #define MAX_NUM_SENSORS #define TEMP_SCALE (4u) /* Max number of sensors in the daisy-chain */ (100u) static void DisplayTemp(void); /* Display temperatures on the LCD */ static CYBIT errorFlag; static CYBIT timerFlag; static uint8 sensorCount; /* Error condition flag */ /* Timer expired flag */ /* Number of TMP05 sensors connected to PSoC */ /* Interrupt handler for the error scenarios */ CY_ISR(AlertInterruptHandler) { /* Set the error flag for the main loop to process */ errorFlag = 1; } /* Interrupt handler for the temperature sensor sample rate timer */ CY_ISR(TimerInterruptHandler) { /* Clear the timer registers */ www.cypress.com Document No. 001-65977 Rev. *D 10 PSoC® 3, PSoC 4, and PSoC 5LP – Temperature Measurement with a TMP05/TMP06 Digital Sensor Timer_ReadStatusRegister(); /* Set the timer flag for the main loop to process */ timerFlag = 1; } int main(void) { uint8 status; /* Clear flags */ errorFlag = 0; timerFlag = 0; /* Enable global interrupts to the CPU core */ CyGlobalIntEnable; /* Start the hardware components */ LCD_Start(); LCD_ClearDisplay(); TMP05_Start(); /* Start and configure the Alert interrupt handler */ AlertISR_Start(); AlertISR_Disable(); AlertISR_SetVector(AlertInterruptHandler); AlertISR_Enable(); /* Discover the number of TMP05 temperature sensors in the daisy-chain */ sensorCount = TMP05_DiscoverSensors(); errorFlag = 0; /* Trigger the first TMP05 sensor measurement */ TMP05_Trigger(); /* Start and configure the Timer interrupt handler */ TimerISR_Start(); TimerISR_Disable(); TimerISR_SetVector(TimerInterruptHandler); TimerISR_Enable(); Timer_Start(); while (1) { /* Error handling */ if (errorFlag) { /* Restart the component */ TMP05_Stop(); TMP05_Start(); /* Clear the temperatures on LCD */ sensorCount = 0; DisplayTemp(); /* Re-discover the number of sensors in the daisy-chain */ sensorCount = TMP05_DiscoverSensors(); errorFlag = 0; /* Trigger again to re-try the measurements */ TMP05_Trigger(); } /* Check for new temperature conversion result */ else { /* Read the status of the conversion */ status = TMP05_ConversionStatus(); www.cypress.com Document No. 001-65977 Rev. *D 11 PSoC® 3, PSoC 4, and PSoC 5LP – Temperature Measurement with a TMP05/TMP06 Digital Sensor if ((status & TMP05_STATUS_COMPLETE) && !(status & TMP05_STATUS_ERROR)) { /* Display the temperature(s) measured from the sensor(s) */ DisplayTemp(); } } /* Timer expired, initiate a new measurement */ if (timerFlag) { timerFlag = 0; TMP05_Trigger(); } } return(0); } /* Function to display temperatures on the character LCD */ static void DisplayTemp(void) { uint8 I; LCD_ClearDisplay(); LCD_Position(0,0); /* Display the temperature in a specific location on the LCD */ for (i=0; i<MAX_NUM_SENSORS; i++) { /* Print the following string on LCD: T1=xxC */ LCD_PrintString(“T”); LCD_PrintNumber(i+1); LCD_PrintString(“=”); if (I < sensorCount) { LCD_PrintNumber((uint16)TMP05_GetTemperature(i)/TEMP_SCALE); LCD_PrintString(“C “); } else { LCD_PrintString(“--- “); } if (I == 1) { /* Line break */ LCD_Position(1,0); } } } www.cypress.com Document No. 001-65977 Rev. *D 12 PSoC® 3, PSoC 4, and PSoC 5LP – Temperature Measurement with a TMP05/TMP06 Digital Sensor 10 9 Evaluation Kits If you would like to continue working with the TMP05 component, consider purchasing the PSoC Thermal Management Expansion Board Kit (CY8CKIT-036) shown in Figure 7. The CY8CKIT-036 consists of two TMP05 devices and can be used to implement a complete thermal management design. Figure 7. CY8CKIT-036 PSoC Thermal Management Expansion Board Kit (EBK) www.cypress.com Conclusion The TMP05 Digital Temperature Sensor Interface component enables designers to quickly and easily design thermal monitoring and management solutions providing support of multiple TMP05 sensors in daisy-chain applications. The unique ability of the PSoC architecture to combine custom digital logic, analog signal chain processing, and an MCU in a single device enables system designers to integrate many external fixed-function ASSPs. This powerful integration capability not only reduces BOM cost, but also results in PCB board layouts that are less congested and more reliable. Document No. 001-65977 Rev. *D 13 PSoC® 3, PSoC 4, and PSoC 5LP – Temperature Measurement with a TMP05/TMP06 Digital Sensor Document History Document Title: AN65977 - PSoC® 3, PSoC 4, and PSoC 5LP – Temperature Measurement with a TMP05/TMP06 Digital Sensor Document Number: 001-65977 Revision ECN Orig. of Change Submission Date Description of Change ** 3123189 AMKH 12/29/2010 New Spec – Initial Release *A 3571727 RLOS 04/05/2012 Updated the document using the new template. Updated the example projects to use the TMP05 Component v1.20. Added support for PSoC 5. *B 3819560 JK 11/22/2012 Updated the example projects to use the new TMP05 Component v1.30 revised to work with PSoC Creator v2.1 SP1 and PSoC 5LP. Updated the example project pinouts to work with the CY8CKIT-030 PSoC 3 Development Kit (DVK) and CY8CKIT-050 PSoC 5LP DVK. *C 4680806 RLRM 03/16/2015 Project files updated to PSoC Creator 3.1 Updated example code shown in application note Updated screenshots Cleaned up grammar and general text in application note. *D 5100103 RLRM 01/27/2016 Updated example project to PSoC Creator 3.3 and added PSoC 4 support. Updated template Updated title www.cypress.com Document No. 001-65977 Rev. *D 14 PSoC® 3, PSoC 4, and PSoC 5LP – Temperature Measurement with a TMP05/TMP06 Digital Sensor 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 cypress.com/psoc Automotive cypress.com/automotive PSoC 1 | PSoC 3 | PSoC 4 | PSoC 5LP Clocks & Buffers cypress.com/clocks Cypress Developer Community 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 Community | Forums | Blogs | Video | Training Technical Support cypress.com/support PSoC is a registered trademark and PSoC Creator 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 2010-2016. 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-65977 Rev. *D 15