quick sense studio ug

38
Rev. 0.2 12/09 Copyright © 2009 by Silicon Laboratories QuickSenseStudio-UG QuickSenseStudio-UG Q UICK S ENSE ™ S TUDIO U SER S G UIDE 1. Introduction The QuickSense Studio software facilitates rapid code development and analysis for applications using the Silicon Labs family of QuickSense products. The Studio is comprised of multiple programs that guide users through an intuitive development flow, including graphical configuration wizards, firmware templates, and performance moni- toring tools. These programs interface with the QuickSense Firmware API, a highly configurable open-source firm- ware library that provides support for many different applications, from simple buttons to complex algorithms like gesture recognition. These tools support both Capacitive Sensing and Infrared Sensing methods. Figure 1. Silicon Labs QuickSense Studio Software

Upload: justinvil1103

Post on 05-Mar-2015

45 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Quick Sense Studio UG

Rev. 0.2 12/09 Copyright © 2009 by Silicon Laboratories QuickSenseStudio-UG

QuickSenseStudio-UG

QUICKSENSE™ STUDIO USER’S GUIDE

1. Introduction

The QuickSense Studio software facilitates rapid code development and analysis for applications using the SiliconLabs family of QuickSense products. The Studio is comprised of multiple programs that guide users through anintuitive development flow, including graphical configuration wizards, firmware templates, and performance moni-toring tools. These programs interface with the QuickSense Firmware API, a highly configurable open-source firm-ware library that provides support for many different applications, from simple buttons to complex algorithms likegesture recognition. These tools support both Capacitive Sensing and Infrared Sensing methods.

Figure 1. Silicon Labs QuickSense Studio Software

Page 2: Quick Sense Studio UG

QuickSenseStudio-UG

2 Rev. 0.2

For a detailed description of the QuickSense Firmware API or the Serial Interface, see “AN366: QuickSense Firm-ware API.” For a more detailed description of active/inactive thresholds, see “AN367: Understanding CapacitiveSensing Signal to Noise Ratios.” For a discussion on baselining in the QuickSense Firmware API, see “AN418:Baselining in the QuickSense Firmware API.”

Note: QuickSense Studio and QuickSense Firmware API version 2.xx support multiple compilers.

1.1. QuickSense Studio DownloadsThe QuickSense Studio installation package available on the QuickSense webpage (www.silabs.com/quicksense)includes the following:

QuickSense Studio software programs, like the QuickSense Configuration Wizard, QuickSense Calibration Utility, and QuickSense Performance Analysis Tool

QuickSense Studio User’s Guide (this document)

QuickSense Firmware API example code for general-purpose development on Target Boards and ToolStick Daughter Cards

General purpose software referenced in QuickSense Studio (e.g., Silicon Labs IDE, CP210x USB-to-UART drivers,etc.) can be downloaded from the Silicon Labs Software Downloads webpage (www.silabs.com/mcudownloads).The example code and documentation for the QuickSense demo kits can be downloaded from the relevant kit web-sites.

Page 3: Quick Sense Studio UG

QuickSenseStudio-UG

Rev. 0.2 3

2. Software Overview and Design Flow

QuickSense Studio is a launcher program that provides links to the available and relevant QuickSense Studio pro-grams, like the QuickSense Configuration Wizard and the QuickSense Performance Analysis Tool. The launchersoftware also manages the flow of information during the design process, like project location and selected device,so all of the programs opened from the QuickSense Studio launcher have some knowledge of the project. Forexample, the Hardware Configuration Wizard opened from the launcher will automatically import relevant periph-eral settings from the QuickSense Configuration Wizard.

The QuickSense Studio software is organized into four different categories of programs: Set Up, Configure, Build/Debug, and Calibrate. An additional Resources category includes any additional useful documentation or programsfor using or developing with the Silicon Labs QuickSense family of products. The sections that follow describe eachof the steps illustrated in Figure 2 in greater detail.

Figure 2. QuickSense Studio Design Flow

Page 4: Quick Sense Studio UG

QuickSenseStudio-UG

4 Rev. 0.2

The QuickSense Studio project build flow describing the possible paths for project development using the Quick-Sense Studio programs is shown in Figure 3. These steps are described in detail below and in 3. "Detailed Quick-Sense Studio Program Descriptions‚" on page 9.

Figure 3. QuickSense Studio Build Flow

Page 5: Quick Sense Studio UG

QuickSenseStudio-UG

Rev. 0.2 5

2.1. Step 1: Creating a New ProjectThe Set Up pane in QuickSense Studio allows the developer to define the project and a target MCU. Once thisinformation has been determined, the QuickSense Studio launcher will customize the available programs in therest of the categories based on what’s applicable to the target MCU.

Figure 4. QuickSense Studio Set Up Frame

To create a new QuickSense project, open QuickSense Studio and start with the “Set Up” frame. Clicking on “Cre-ate a New Project” will open up a dialog to select the desired MCU, set the project name, and project location. Thesoftware will create a project file in the specified folder with the project name specified in this window. A device canbe selected from a list or found using the “Select by Features...” option:

Figure 5. Silicon Labs QuickSense Studio Device Parametric Search

The project values will be passed on to each subsequent program launched from the Studio.

Page 6: Quick Sense Studio UG

QuickSenseStudio-UG

6 Rev. 0.2

2.2. Step 2: QuickSense Firmware API CustomizationOnce a project and device have been defined in the Set Up frame, the Configure frame can be used to create theQuickSense Firmware API files appropriate for the application.

Figure 6. QuickSense Studio Configure Frame

The programs included in this part of QuickSense Studio are the QuickSense Configuration Wizard and the Hard-ware Configuration Wizard. These programs are discussed in more detail in 3. "Detailed QuickSense Studio Pro-gram Descriptions‚" on page 9.

From the Configure page, open the QuickSense Configuration Wizard. This program further defines the parame-ters of the project. For example, specific device pins can be selected for capacitive sensing. Once all parametershave been set, the program outputs a working QuickSense Firmware API project workspace file (*.wsp) that can beopened using the Silicon Labs IDE or built using the QuickSense Quick Builder.

The QuickSense Configuration Wizard automatically creates the default initialization functions needed to build theproject. The Hardware Configuration Wizard can optionally be used to add additional MCU peripherals to the proj-ect. Once a project has been created using the QuickSense Configuration Wizard, open the Hardware Configura-tion Wizard using the QuickSense Studio program. The Hardware Configuration Wizard will automatically load allthe default peripheral settings from the QuickSense Configuration Wizard. To update the Firmware API hardwareinitialization file (QS_DeviceInit.c) with the additional settings, save the file generated by the Hardware Configura-tion Wizard as "QS_DeviceInit.c". Note that any changes made to this file may need to be debugged using the Sil-icon Labs IDE. See 3.2. "Silicon Labs Hardware Configuration Wizard (Configuration Wizard 2) (Optional)‚" onpage 20 for detailed instructions on this process.

Page 7: Quick Sense Studio UG

QuickSenseStudio-UG

Rev. 0.2 7

Figure 7. Using the QuickSense Configuration Wizard with the Hardware Configuration Wizard

The firmware generated by the QuickSense Configuration Wizard includes the necessary QuickSense FirmwareAPI code as well as code in the main function to enable the API processes for all defined data classes. For exam-ple, if a project is created with channels, groups, and thresholds enabled, then the main function will automaticallyenable the corresponding processes.

2.3. Step 3: Building the Application-Specific QuickSense Firmware API FilesAfter the application-specific QuickSense Firmware API files have been generated using the programs in the Con-figure frame, the project needs to be compiled, built, downloaded, and optionally debugged on the target hardware.The programs included in the Build/Debug frame are the Silicon Labs IDE, Silicon Labs Quick Builder, and SiliconLabs Flash Utility.

Figure 8. QuickSense Studio Build/Debug Frame

Page 8: Quick Sense Studio UG

QuickSenseStudio-UG

8 Rev. 0.2

The project can be edited, built, and debugged using the Silicon Labs IDE. If the project is intended only to mea-sure and report channel values and no further modification is necessary, the Silicon Labs Quick Builder can beused to build the project and download it to the target MCU. If the project is already built, the Flash Utility can beused to download the firmware to the target MCU. For more information on using these programs, see 3. "DetailedQuickSense Studio Program Descriptions‚" on page 9.

Note: Some compilers may have code size limitations. The QuickSense Firmware API version 2.xx supports multiple compilersand all development and evaluation kits include a pre-built Intel HEX file. See “AN366: QuickSense Firmware API” formore information.

2.4. Step 4: Calibrating the HardwareOnce the code is loaded onto the application hardware, the programs in the “Calibrate” frame can be used to testand change the sensitivity of the system.

Figure 9. QuickSense Studio Calibrate Frame

The QuickSense Performance Analysis Tool interacts with the QuickSense Firmware API to graphically display rawdata values, thresholds, and other information in real time. This utility can also be used to determine appropriatethresholds for different overlay thicknesses and other environmental conditions. The QuickSense Calibration Utilitycan be used to insert known threshold values to a newly programmed board without the visual representation ofdata. The QuickSense XY Display Utility can be used to test the calibration and range of motion with applicationsthat support multi-dimensional pads (nD Pads), like the IR Slider demo (IrSliderEK).

2.5. Additional ResourcesThe Resources section of the QuickSense Studio provides links to additional resources that may be useful whendeveloping an application using the QuickSense family of products. These additional resources include documen-tation and QuickSense demo kits that provide examples of using the QuickSense Firmware API.

Page 9: Quick Sense Studio UG

QuickSenseStudio-UG

Rev. 0.2 9

3. Detailed QuickSense Studio Program Descriptions

When the QuickSense Studio launcher is first opened, it will automatically display the Set Up section of the pro-gram. Once a project has been created or loaded, the QuickSense Studio programs can be opened from thelauncher by double-clicking on the program or using the “Launch” button. If the QuickSense Studio launcher isunable to find a program in the default installation location, it will prompt the user to either find the program locationif it’s already installed or download the program from the Silicon Labs website.

Figure 10. QuickSense Studio “Program Not Found” Frame Options

3.1. QuickSense Configuration WizardThe QuickSense Configuration Wizard generates a customized QuickSense Firmware API project based onoptions selected in the GUI. This program makes designing with QuickSense products simple and quick.

Note: The QuickSense Firmware API is described in detail in “AN366: QuickSense Firmware API.”

Figure 11. QuickSense Configuration Wizard

The firmware generated by the QuickSense Configuration Wizard includes the necessary QuickSense FirmwareAPI code, default initialization functions, and code in the main function to enable the API processes for all defineddata classes. For example, if a project is created with channels, groups, and thresholds enabled, then the mainfunction will automatically enable the corresponding processes. Since the processes are enabled by default, theproject created by the QuickSense Configuration Wizard and optionally augmented by the Hardware ConfigurationWizard will function properly in the Performance Analysis Tool without any further modification.

The project creation and device selection is automatic when the QuickSense Configuration Wizard is opened usingQuickSense Studio. The FileNew Project menu option can be used to change selected devices or create a newproject.

Page 10: Quick Sense Studio UG

QuickSenseStudio-UG

10 Rev. 0.2

3.1.1. Global Settings

The Global Settings tab of the QuickSense Configuration Wizard shown in Figure 11 provides options for the basic,overall functionality of the firmware.

3.1.1.1. Save Values

The “Save Group Values” and “Save Threshold Values” options determine whether the raw measured data forgroups and thresholds are saved. For group values, saving the data may not be necessary if only the state of thegroup (for example, position) is important and not the intermediate measured values. Thresholds may not beimportant if the measured object does not have on/off states like a button and instead has interpreted data like aposition coordinate. These options are enabled by default.

The “CS0 Sample Rate” and “IR Sample Rate” are the approximate rate at which the hardware takes a measure-ment in milliseconds. Depending on the available microcontroller bandwidth, there may be a small delay betweenthe sampling timeout and the actual measurement.

3.1.1.2. Events

For both switches and groups, events can be defined for a specific action. When an event occurs, a function withinthe Firmware API is called. The Switch Events options are as follows:

Disabled—No function calls on switch events.

Rising—Function call on rising switch edges only.

Falling—Function call on falling switch edges only.

Rising and Falling—Function call on both switch edges.

The Group Events options are as follows:

Disabled—No function calls on group events.

Rising—Function call on rising group edges and group active events.

Falling—Function call on falling group edges and group active events.

Rising and Falling—Function call on both group edges and group active events.

Active Only—Events will only trigger when the group is active.

3.1.1.3. Serial Interface

The QuickSense Firmware API Serial Interface allows the hardware to communicate with the QuickSense Studiocalibration programs like the Performance Analysis Tool. The Serial Interface is enabled by default.

The Board ID can be used to identify the board as a particular type of hardware. The QuickSense Firmware APIdemos like the Music Keyboard have a pre-defined Board ID. These pre-defined Board IDs can be found in the“PerformanceAnalysisTool.ini” file installed in the same directory as the Performance Analysis Tool(C:\SiLabs\MCU\QuickSense_Studio\Software\PerformanceAnalysisTool\ by default). The default Board ID is 0xFFor 255.

The “Default Update Frequency” parameter determines how often the Serial Interface sends data if a Periodictransfer mode is selected.

3.1.1.4. Transfer Info

If “Send Enumeration Information” is enabled, the Serial Interface will transmit basic information describing the sys-tem (how many switches and groups, for example) when requested by the host. This is useful for systems wherethe hardware the host is talking to may change. However, in fixed systems where the host is always talking to thesame device, disabling this option reduces the project’s code size.

The method the Serial Interface uses to determine when to transfer data can be selected using the Transfer Modeoptions. The Serial Interface will transfer data periodically at a rate defined by “Default Update Frequency” in theSerial Interface section using the “Periodic” option. The “Update” option will only send data if a switch or group sta-

Page 11: Quick Sense Studio UG

QuickSenseStudio-UG

Rev. 0.2 11

tus has changed. The “Demand” option will send data when requested by the host. In both the “Update” and“Demand” options, the “Default Update Frequency” has no effect.

The Transfer Type options determine what data is set when the Serial Interface makes a data transfer. With the“Selected” option, data will only be transferred for selected channels. For “Selected and Updated” option, data willbe transferred if channels are selected and the data or state has changed since the last transmission.

Note: The "Selected" transfer type is not a subset of the "Selected And Updated" transfer type. If the application requires both"Selected" and "Selected and Updated" transfer types, the "Selected" type must be explicitly chosen in addition to“Selected and Updated.”

3.1.2. Measurements

The Measurements tab of the QuickSense Configuration Wizard provides options for global QuickSense FirmwareAPI measurements settings.

Figure 12. Silicon Labs QuickSense Configuration Wizard Measurements Tab

3.1.2.1. Baseline Information

For detailed information for these parameters and on baselining in the QuickSense Firmware API, see “AN418:Baselining in the QuickSense Firmware API.” The default settings for the baselining values should be sufficient formost systems.

3.1.2.2. Flash Memory

This section defines the address of the Non-Volatile Calibration and Configuration Area in the device and whetherFlash write/erase routines are included with the custom Firmware API code. The calibration and configuration areashould be located on a Flash page not shared with any application code.

If the final application code does not utilize the Flash write/erase routines (i.e. Flash is read only), then theseshould be omitted from the project. The QuickSense Calibration Utility or Performance Analysis Tool can be usedto set thresholds and other parameters for the application while the Flash is writable and erasable. Once thesehave been determined, an Intel HEX file can be created that can be downloaded to other boards, eliminating theneed for Flash write/erase routines. A description on how to create this .HEX file using the IDE can be found in3.3.2.4. "Creating a Calibrated Final Firmware Image Intel HEX File using the IDE‚" on page 23.

3.1.2.3. Exponential Averaging Filter

The QuickSense Firmware API uses an exponential averaging filter to provide a smooth and clean signal for eachchannel. The equation for this averaging filter is as follows:

y n x n y n 1– –2m

------------------------------------- y n 1– +=

Page 12: Quick Sense Studio UG

QuickSenseStudio-UG

12 Rev. 0.2

In this equation, x(n) represents the current sample, y(n) represents the current result, and y(n-1) represents theprevious result. This setting in the QuickSense Configuration Wizard changes the m exponent in the equation. Thehigher the exponent, the less weight is given to new samples fed into the averager. For more details, see “AN366:QuickSense Firmware API.”

3.1.2.4. Si1120 Settings

The “STX Max High Time” is the longest the STX pin on the Si1120 is asserted during IR measurements. De-asserting this pin causes the Si1120 to stop IR measurement for that specific irLED. This value should be set forthe application such that the STX pin can be asserted for the shortest amount of time to save power. This value isspecified in microseconds and the valid range is 500 to 2200 rounded to the nearest 100 µs.

3.1.3. Peripherals

Once the Global Settings and Measurements options have been set for a particular application, the Peripherals tabprovides a graphical interface for allocating control pins for external peripheral devices, like the Si1102. The UARTpins are gray to indicate that these pins are unavailable for external device control or communication lines. TheseUART pins are available for use if the Serial Interface is disabled in the Global Settings tab.

Figure 13. Silicon Labs QuickSense Configuration Wizard Peripherals Tab

To add an external peripheral device, click the “Add...” button. This will bring up a dialog box with the availableexternal peripheral device options. The “Include ALS Channel” option is not available for the Si1102.

Figure 14. Adding an External Peripheral Device

Page 13: Quick Sense Studio UG

QuickSenseStudio-UG

Rev. 0.2 13

Once a channel has been added, click on the Port I/O diagram to allocate the control channels to GPIO pins.

Figure 15. Allocating GPIO Pins for an External Peripheral Device

To change a control pin once it’s been allocated, select the pin to move in the “Pins” list and click on the newdesired location in the Port I/O diagram.

Figure 16. Moving an Allocated GPIO Pin for an External Peripheral Device

The MD pin is not necessarily required for all applications, so assigning this pin is optional.

The "Single Prox Channel" checkbox indicates that the application only requires a single Infrared Proximity chan-nel, so the IR signal pins do not need to be multiplexed. In this case, a pin does not need to be assigned to IR inthe Channels/Thresholds tab.

Page 14: Quick Sense Studio UG

QuickSenseStudio-UG

14 Rev. 0.2

Figure 17. Selecting a Single IR Channel

To remove an external peripheral device, select the device in the Peripheral drop-down box and click the Removebutton.

Figure 18. Removing an External Peripheral Device

The MCU diagram to the right of the External Peripheral Settings section will update with the GPIO pin allocations.

An external peripheral device must already exist in order to add Infrared Proximity sensing channels in the Chan-nels/Thresholds tab.

3.1.4. Channels/Thresholds

The Channels/Thresholds tab provides a graphical interface for allocating Capacitive or Infrared Proximity sensingpins. To add a Capacitive Sensing button with Threshold Calibration Enabled to P2.1, select “Capacitive” underSensing Method and “Button: Threshold Calibration Enabled” under Threshold Detection and select P2.1 in thePort I/O diagram.

Page 15: Quick Sense Studio UG

QuickSenseStudio-UG

Rev. 0.2 15

Figure 19. Adding a Capacitive Sensing Channel

The Infrared Proximity options are unavailable unless an external peripheral device was added using the Peripher-als tab. To add a low power Infrared Proximity channel with thresholds disabled to P1.3, select “Infrared Proximity”under Sensing Method, “Disabled/Group” under Threshold Detection, and “Prox Low Pwr” under IR Mode andselect P1.3 in the Port I/O diagram. If only one IR channel is allocated, the QuickSense Configuration Wizard willopen a dialog box when any other tab is selected indicating that the "Single Prox Channel" option is available in thePeripherals tab.

Figure 20. Adding an Infrared Proximity Channel

To clear any channels, select the “Clear” option under Sensing Methods and select any undesired allocations in thePort I/O diagram. Channels can also be cleared at any time by right-clicking on an assigned channel in the Port I/Odiagram.

Page 16: Quick Sense Studio UG

QuickSenseStudio-UG

16 Rev. 0.2

Figure 21. Clearing an Allocated Channel

An entire port can be selected by clicking the “Port n” cells to the left of the rows. The same location on all ports(Pn.1, for example) can be selected using the head column cells. All available cells can be selected using theupper left-hand corner of the Port diagram.

Figure 22. Selecting Multiple Channels

The MCU diagram to the right of the Channel Settings section will reflect the allocated pins from both the Peripher-als and Channels/Thresholds tabs.

Page 17: Quick Sense Studio UG

QuickSenseStudio-UG

Rev. 0.2 17

3.1.5. Groups

In order to add groups in the Groups tab, there must be Capacitive Sensing or Infrared Proximity channels allo-cated using the Channels/Thresholds tab. These channels must be of the “Disabled/Group” Threshold Detectiontype.

Figure 23. Creating a Group

Once these channels have been created, select the Group tab and add a group using the “Add” button. The Groupdialog box will open. The group can be named using the text box at the top and the group properties can beselected using the options in this dialog. The Capacitive groups use capacitive CS0 channels and the Infraredgroups use Infrared Proximity channels.

Once the group has been created, the available CS0 channels can be allocated to that group.

Figure 24. Allocating Channels to a Group

To allocate a channel, select the channel in the “Channels” list and select a CS0 channel in the Port I/O diagram.The diagram to the right should update with the allocated channels.

Groups do have a specific order in which the channels must be defined. This order can be adjusted using the upand down arrows at the bottom of the Groups tab. To adjust the order, select a channel and press either the up ordown arrow. The group diagram will update with the order of the channels.

Page 18: Quick Sense Studio UG

QuickSenseStudio-UG

18 Rev. 0.2

Figure 25. Adjusting Group Channel Order

Infrared Proximity groups can be added using the same procedure as Capacitive Sensing groups. Infrared Proxim-ity channels must first be created using the Channels/Thresholds tab. Once the channels exist, a new group can beadded that use those channels. The order of these channels can also be adjusted accordingly. If multiple groupsare present in the system, the settings for a group can be adjusted by selecting the group in the drop-down box.

Figure 26. Infrared Proximity Groups

Group selections can be deleted or cleared by using the “Delete” and “Clear” buttons at the bottom of the Groupstab.

Page 19: Quick Sense Studio UG

QuickSenseStudio-UG

Rev. 0.2 19

3.1.6. Code

The Code tab of the QuickSense Configuration Wizard provides a window into the QuickSense Firmware API filesmodified by the program.

Figure 27. Silicon Labs QuickSense Configuration Wizard Code Tab

The “Additional Project Settings” button can be used to set up the project’s compiler, the compiler’s location, theDebug Adapter used by the project, and whether or not the project should automatically be downloaded on a suc-cessful build (disabled by default).

When all settings have been made for the application using the QuickSense Configuration Wizard, the “Export toProject” option creates the QuickSense Firmware API project with the customized application settings.

Page 20: Quick Sense Studio UG

QuickSenseStudio-UG

20 Rev. 0.2

3.2. Silicon Labs Hardware Configuration Wizard (Configuration Wizard 2) (Optional)The Hardware Configuration Wizard (Configuration Wizard 2) program is a general-purpose utility that helps accel-erate development by automatically generating initialization source code to configure and enable the on-chipresources needed by most design projects. In just a few steps, the wizard creates complete startup code for a spe-cific Silicon Labs MCU.

If opened using QuickSense Studio, Configuration Wizard 2 will have knowledge of any peripheral-specific settingsgenerated using the QuickSense Configuration Wizard. The default initializations created by the QuickSense Con-figuration Wizard can be augmented with additional hardware configuration using Configuration Wizard 2.

To modify the Firmware API project files generated by the QuickSense Configuration Wizard:

1. Generate a project using the QuickSense Configuration Wizard.

2. Open Hardware Configuration Wizard (Configuration Wizard 2) using the QuickSense Studio launcher program.

3. Add any extra peripheral settings required by the application. It's not recommended to modify the oscillator speed, UART baud rate, and Timer 0/1 settings to maintain QuickSense Serial Interface compatibility.

Note: Any modifications or extra peripheral configurations made with Configuration Wizard 2 may require debugging using the Silicon Labs IDE.

4a. Keep the initial hardware configurations intact in "QS_DeviceInit.c", save the additional hardware settings in a new file, and add this new file to the QuickSense Firmware API project. Detailed instructions on how to do this can be found in Section 3.3.2.1. "Opening the QuickSense Firmware API Project‚" on page 21.

-or-

4b. Save the initial and additional hardware settings to a file named "QS_DeviceInit.c" (Note: This will replace the initial hardware configurations generated by the QuickSense Configuration Wizard).

The hardware initialization file (QS_DeviceInit.c) should be updated whenever any changes to peripheral settingsare made using the Configuration Wizard 2.

Page 21: Quick Sense Studio UG

QuickSenseStudio-UG

Rev. 0.2 21

3.3. Silicon Labs IDEThe Silicon Labs IDE integrates a source-code editor, a source-level debugger, and an in-system Flash program-mer.

Figure 28. Silicon Labs IDE

3.3.1. IDE System Requirements

The Silicon Labs IDE requirements:

Pentium-class host PC running Microsoft Windows 2000 or newer

One available USB port

3.3.2. Using the Silicon Labs IDE with the QuickSense Firmware API

The following sections discuss how to open the QuickSense Firmware API with the IDE, build the source code, anddownload it to the target device.

3.3.2.1. Opening the QuickSense Firmware API Project

1. If the Silicon Labs IDE is opened using QuickSense Studio, the project specified in the Set Up section willbe automatically opened. Otherwise, select ProjectOpen Project and navigate to the QuickSenseFirmware API project.

2. (Optional) To create any new files to add to the project, select FileNew File to open an editor window.Create your source file(s) and save the file(s) with a recognized extension, such as .c, .h, or .asm, toenable color syntax highlighting.

3. (Optional) To add these new files, right-click on “QuickSense_API” in the Project Window. Select Addfiles to project. Select files in the file browser and click Open. Continue adding files until all project fileshave been added.

4. (Optional) For each of the new files in the Project Window that you want assembled, compiled and linkedinto the QuickSense Firmware API project, right-click on the file name and select Add file to build. Each filewill be assembled or compiled as appropriate (based on file extension) and linked into the build of the abso-lute object file.

Note: If a project contains a large number of files, the “Group” feature of the IDE can be used to organize. Right-click on “QuickSense_API” in the Project Window. Select Add Groups to project. Add pre-defined

Page 22: Quick Sense Studio UG

QuickSenseStudio-UG

22 Rev. 0.2

groups or add customized groups. Right-click on the group name and choose Add file to group. Select files to be added. Continue adding files until all project files have been added.

3.3.2.2. Building and Downloading the QuickSense Firmware API Project for Debugging

1. Once all additional source files have been added to the target build, build the project by clicking on theBuild/Make Project button in the toolbar or selecting ProjectBuild/Make Project from the menu.

Note: After the project has been built the first time, the Build/Make Project command will only build the files that have been changed since the previous build. To rebuild all files and project dependencies, click on the Rebuild All button in the toolbar or select ProjectRebuild All from the menu.

2. Before connecting to the target device, several connection options may need to be set. Open theConnection Options window by selecting OptionsConnection Options... in the IDE menu. First, selectthe “USB Debug Adapter” option. Next, the correct “Debug Interface” must be selected. See the appropriatekit or data sheet documentation to determine the proper “Debug Interface” selection for the microcontroller inthe application. Once all the selections are made, click the OK button to close the window.

3. Click the Connect button in the toolbar or select DebugConnect from the menu to connect to the device.

4. Download the project to the target by clicking the Download Code button in the toolbar.

Note: To enable automatic downloading if the program build is successful select Enable automatic con-nect/download after build in the ProjectTarget Build Configuration dialog. If errors occur during the build process, the IDE will not attempt the download.

5. Save the project when finished with the debug session to preserve the current target build configuration,editor settings and the location of all open debug views. To save the project, select ProjectSave Projectfrom the menu.

3.3.2.3. Downloading an Intel HEX Firmware Image

The QuickSense Evaluation Kit installer packages install the firmware source code as well as a pre-built Intel HEXimage that can be downloaded directly into the board. The firmware source code and an example IDE project islocated in the relevant kit’s installation directory (C:\SiLabs\MCU\QuickSense_Studio\Kits\<kit_name>\Firmware\).The pre-built HEX image is located in the C:\SiLabs\MCU\QuickSense_Studio\Kits\<kit_name>\Firmware\Release\directory. An Intel HEX file can also be created from a calibrated board’s firmware image as described in Section3.3.2.4..

To update or refresh the HEX image in a board:

1. Connect the USB Debug Adapter or Debug port on the target hardware to the PC using a USB cable.2. Launch the Silicon Labs IDE, and click on OptionsConnection Options.3. Select “USB Debug Adapter” and then select the Debug Adapter from the list.4. Select the appropriate debug interface (“C2” in most cases) and press “OK”.5. Connect to the board by pressing the “Connect” icon, or using the keyboard shortcut Alt+C.6. Click on the “Download” icon, or use the keyboard shortcut Alt+D.7. In the download dialog window, click “Browse”.8. Change to Files of Type “Intel Hex (*.hex)” and then browse to the appropriate folder to select the HEX file

to be downloaded.9. Click “Open” then “Download”.10. To run the new image, either press “Go” in the IDE or disconnect from the board (keyboard shortcut Alt+C).

It is necessary to disconnect from the board in the IDE if the Performance Analysis Tool will be used to view data later.

Page 23: Quick Sense Studio UG

QuickSenseStudio-UG

Rev. 0.2 23

3.3.2.4. Creating a Calibrated Final Firmware Image Intel HEX File using the IDE

After a board has been calibrated and completely configured, an Intel HEX firmware image file can be createdusing the Silicon Labs IDE. This image can then be downloaded to other boards in a production setting. To createthis firmware image, perform the following steps:

1. Open the Silicon Labs IDE. A project does not have to be open.2. Before connecting to the target device, several connection options may need to be set. Open the

Connection Options window by selecting OptionsConnection Options... in the IDE menu. First, selectthe “USB Debug Adapter” option. Next, the correct “Debug Interface” must be selected. See the appropriatekit or data sheet documentation to determine the proper “Debug Interface” selection for the microcontroller inthe application. Once all the selections are made, click the OK button to close the window.

3. Click the Connect button in the toolbar or select DebugConnect from the menu to connect to the device.

4. Go to ToolsUpload Memory to File.

Figure 29. IDE Tools Menu

5. Under “Memory Type,” select CODE from the drop-down menu.6. Once CODE has been selected, the default address range will be the entire Flash memory. A smaller por-

tion of the Flash can be optionally uploaded by changing the Starting Address or Ending Address values. The default “Hex” option should be kept.

7. The file name can be specified using the text box under “Output File.” The default “Hex” option should be selected.

8. Press the GO button. This will create an ASCII text image of the Flash area specified.

Figure 30. IDE Upload Memory to File Dialog

Page 24: Quick Sense Studio UG

QuickSenseStudio-UG

24 Rev. 0.2

9. Go to the following KnowledgeBase article and download the “ASC2HEX_V1.1.zip” attachment:http://portal.knowledgebase.net/article.asp?article=174726&p=4120. This attachment will include an ASCII to binary converter (ASC2HEX.exe) and a binary to .HEX converter (BIN2HEX.exe).

10. Navigate to the directory where the attachment was saved. Unzip the file and run the ASCII to HEX utility (ASC2HEX.exe). In the program, use Browse to navigate to the file created in Step 8 using the IDE. Press OK. This will create a binary program of the same filename.

11. Run the binary file through the binary to .HEX converter (BIN2HEX.exe). This can be done by dragging and dropping the binary file on the BIN2HEX.exe executable or calling the executable from the command line (Usage: BIN2HEX C:\firmware_image.bin).

12. The binary to .HEX converter output file name is limited to eight characters, so the .HEX file should be renamed as desired. The file is now a calibrated .HEX file that can be downloaded to other boards.

3.4. QuickSense Quick BuilderThe QuickSense Quick Builder utility allows code to be compiled and optionally downloaded without opening theproject through the Silicon Labs IDE.

When opened from QuickSense Studio, QuickSense Quick Builder will automatically build the project specified inthe Set Up section. To access the QuickBuilder build and download options using QuickSense Studio, go to Con-figureOpen the QuickSense Configuration WizardClick on the Code tabPress the Additional ProjectSettings button. The compiler can be selected using the Compiler drop-down menu, and this compiler’s locationcan be specified using the Compiler Directory text box. The Debug Adapter can be selected using the DeviceAdapter drop-down menu. Additionally, the QuickBuilder can automatically download on a successful build if thisoption is enabled (disabled by default).

3.5. Silicon Labs Flash UtilityThe Silicon Labs Flash Utility is a GUI interface that can download code to a device and perform other memoryoperations without needing to use the Silicon Labs IDE. For more information on the functions called in this GUI,see “AN117: Using C8051Fxxx On-Chip Interface Utilities DLL.”

Figure 31. Silicon Labs Flash Utility

Page 25: Quick Sense Studio UG

QuickSenseStudio-UG

Rev. 0.2 25

3.6. QuickSense Performance Analysis ToolThe QuickSense Performance Analysis Tool can be used to view values, save threshold values, calibrate, and logdata in real-time from a device running the QuickSense Firmware API.

Figure 32. QuickSense Performance Analysis Tool

3.6.1. Connecting to a Device

To connect to a device running the QuickSense Firmware API, use the Devices menu to select the desired device.The program can connect to either a COM port (or Virtual COM port) or a ToolStick “TSxxxx”. Once the device isselected, the Performance Analysis Tool will automatically connect to that device. The connection can be manuallycontrolled using the Connection menu.

Figure 33. Connecting to a Device in the Performance Analysis Tool

3.6.2. Selecting a Button to Graph

Once the Performance Analysis Tool connects to a board, a Board Representation window will open representingthe available buttons or switches on the board.

The generic Board Representation window is a graphical description of the target hardware where each channel isrepresented as a button. Each button has three different states: not selected and not displayed, displayed and notselected, and displayed and selected. A button that is displayed has data for its corresponding channel shown onthe program’s graph. A button that is selected can have the threshold values viewed and modified. The defaultstate for all buttons is not displayed and not selected.

Page 26: Quick Sense Studio UG

QuickSenseStudio-UG

26 Rev. 0.2

Each button has a color box surrounding the checkbox. This is the color used to display the data of the correspond-ing channel on the graph. The color associated with a particular channel can be modified at any time by right-click-ing on the button in the Board Representation window. The text shown on the button in the Board Representationwindow is the channel number followed by the most recent value acquired for the channel the button represents.The color of the text is red if the button is inactive and green if the button is active.

To display a channel using the generic Board Representation window, check the checkbox next to the button. Toselect the button so the threshold values are displayed, press the portion of the button with the raw data value.

Figure 34. Generic Board Representation

The QuickSense demo kits have custom Board Representation windows that represent the hardware. To display achannel using the custom Board Representation window, check the checkbox associated with the button. To selectthe button so the threshold values are displayed, click inside the white line surrounding the button.

Figure 35. ITO Film EK Custom Board Representation

Page 27: Quick Sense Studio UG

QuickSenseStudio-UG

Rev. 0.2 27

Once a button has been selected, press the green play button under “Acquisition” to start graphing. This play but-ton will become a pause button that can be used to stop graphing.

Figure 36. Performance Analysis Tool Start Acquisition Button

3.6.3. Adjusting a Channel’s Thresholds

If a button is displayed and selected, the thresholds for that channel are modifiable in the graph window (in Timeand Bar graphing modes only) if the Flash is not read-only (Flash write and erase routines were included in theQuickSense Firmware API). The inactive-to-active threshold is represented by a green dotted line and the active-to-inactive threshold is represented by a red dotted line. To adjust a threshold, left-click and hold either thresholdand move it up or down anywhere in the graph window.

For applications where the Flash should be read-only, a .HEX file that includes calibration values can be createdusing the IDE. See 3.3.2.4. "Creating a Calibrated Final Firmware Image Intel HEX File using the IDE‚" on page 23for more information on this process.

3.6.3.1. Manual Adjust

The values in the Manual Adjust area under Threshold Settings will automatically update as the threshold is movedup and down with the mouse. Alternatively, the threshold can be updated manually by typing a percentage value inthe “Inactive to Active” and “Active to Inactive” text boxes.

Figure 37. Adjusting the Active-to-Inactive Threshold

Checking the “Apply to Displayed” checkbox will apply the values in the “Inactive to Active” and “Active to Inactive”text boxes to the thresholds for all the channels displayed on the graph.

Page 28: Quick Sense Studio UG

QuickSenseStudio-UG

28 Rev. 0.2

3.6.3.2. Auto Adjust

The Threshold Auto Adjust feature is available if a channel is selected and the program is actively graphing thechannel’s real-time values. To use the Auto Adjust feature, press the “Selected” button and follow the instructions.For a new board, the Auto Adjust feature may provide a good starting point for the threshold values. The thresholdscan then be manually adjusted as necessary. This feature is only available with the Periodic transfer mode.

3.6.3.3. Save

The Threshold Save feature can be used to save the adjusted thresholds back to the hardware. In the Saveoptions under Threshold Settings, pressing “Selected” will save the values for the currently selected channel.Pressing “All” will save the thresholds for all channels. Any changes made in the Performance Analysis Tool to thethresholds of a channel without saving will be lost the next time the program connects to the hardware.

3.6.3.4. Revert

The Revert options reset the displayed thresholds with the ones saved in the hardware. Pressing “Selected” willreload the threshold settings for the selected channel and pressing “Displayed” will reload the threshold settings forall displayed channels. Any changes made to the threshold without saving will be lost when the Revert options areused.

3.6.3.5. Erase

The Threshold Erase feature will reset the thresholds in the hardware back to their default states (100% for “Inac-tive to Active” and 0% for “Active to Inactive”). Pressing “Selected” erases the hardware’s threshold settings for theselected channel and pressing “All” erases the hardware’s threshold settings for all channels.

3.6.4. Interacting with Groups

A group is the set of channels creating a single element, such as a scroll wheel or a slider. Each group type has awindow with a visual representation of the latest states of the groups defined for the hardware. Upon connecting tothe hardware, these windows are opened if the Performance Analysis Tool detects one or more valid groups of thattype.

Figure 38. Generic Groups Representation Examples

The numeric indicator presents a range of 0 to 511 position units for the slider and a range of 0 to 360 degrees forthe wheel.

Page 29: Quick Sense Studio UG

QuickSenseStudio-UG

Rev. 0.2 29

3.6.5. Performance Analysis Tool Settings Menu Options

The Settings Menu has additional graphing options available.

Figure 39. Performance Analysis Tool Settings Menu

3.6.5.1. Graph

The Graph submenu contains the graphing options in the Performance Analysis Tool. The available options aredescribed below.

Type

The SettingsGraphType menu has three options: Time, Bar, and Threshold State. The Time graph is thedefault setting and graphs the real-time value and thresholds of the displayed channels over time. The Bar graphoption displays the instantaneous real-time value and thresholds for displayed channels. The Threshold Stateoption displays the “Active” and “Inactive” state for each channel but does not display the real-time raw data valuesor threshold information. With both the Bar and Threshold State graphing options, the bar representing a selectedchannel is solid and all other bars are transparent. If no channel is selected, all bars are solid.

Page 30: Quick Sense Studio UG

QuickSenseStudio-UG

30 Rev. 0.2

Figure 40. Performance Analysis Tool Graphing Types

Channel Selection

The GraphChannel Selection options allows a quick way to select sets of channels. The “All” option will displayall channels and “None” will set the state of all buttons to not displayed, not selected.

Set Manual Scale

This window can be used to manually specify the Time and Counts ranges for the Time graph. The Time range hasno effect on the Bar and Threshold State graphs. Setting either the Time and Counts ranges manually will automat-ically disable the Auto Scale feature.

Auto Scale

This option toggles automatic scaling of the Counts range in the different graphing types. This option is forced off ifa manual scale is entered.

Reset

Selecting this option clears all acquired data and resets the Time graph, setting the elapsed time back to zero.

Page 31: Quick Sense Studio UG

QuickSenseStudio-UG

Rev. 0.2 31

Show Baseline

This option toggles the Active and Inactive Baselines on the graph. For detailed information on baselining in theQuickSense Firmware API, see “AN418: Baselining in the QuickSense Firmware API.” This option is on by default.

3.6.5.2. Data Logging

Selecting this option opens the Data Logging Settings dialog. The dialog controls settings for the log file size, logfile name, and filters the channels whose data will be logged.

Figure 41. Data Logging Options

Note that when the "Log displayed channels" option is selected, the checkboxes of the desired channels must bechecked in the Board Representation window.

To start logging data:

1. Select a File. By default the file name is created from the date and time.

2. Select the "Maximum file size."

3. Select the desired Raw Data, Threshold State, Baseline Data, Threshold Level, and Groups Filter options.

4. In the Board Representation window, check the checkboxes of the channels to log (needed only if the option "Log displayed channels" is selected in any of the Filters).

5. Click OK in the Data Logging Settings dialog.

6. During acquisition, check the "Log to file" checkbox control when logging start and stop. If a file for data logging has not been set up, clicking the "Log to file" checkbox will bring up the Data Logging Settings dialog.

The contents of the data logging file are readable at any time and modifiable when the user selects a different fileor disconnects from the hardware. The data streamed to the log file is saved as text with a Tab Separated Valuesformat. Up to six sets of information are saved, in the following order, depending on the filter options chosen:

1. Time stamp

2. Raw data (optional)

3. Threshold state (optional)

4. Active and Inactive Baselines (optional)

5. Threshold level (optional)

6. Group state data (including gestures, where applicable) (optional)

The Threshold State information has two values:

Table 1. Threshold State Values

State Value Definition

0 Active-to-Inactive threshold crossed, negative slope (button is off)

1 Inactive-to-Active threshold crossed, positive slope (button is on)

Page 32: Quick Sense Studio UG

QuickSenseStudio-UG

32 Rev. 0.2

3.6.5.3. Sampling Frequency

This option sets the frequency in Hz at which the hardware sends data to the Performance Analysis Tool using theQuickSense Firmware API serial interface. This value is only relevant if the Periodic Data Transfer mode is used.The range of sampling frequencies supported is determined by the hardware.

3.6.5.4. Buffer Size

This option modifies the size of the data acquisition buffer used by the Performance Analysis Tool. The acquisitionbuffer is shared by all the channels present on a system. The size is specified in MB and the default value is 1 MB.This option is only available when the Performance Analysis Tool is not connected to hardware.

3.6.5.5. Data Transfer

Figure 42. Data Transfer Options

Data Transfers can be Periodic, On Demand, or On Update. Periodic is the default Data Transfer mode and thesampling rate is determined by the Sampling Frequency option.

If On Demand is selected, the available Transfer Types are “Selected” and “Selected and Updated.” In this mode, aSample button will be available next to the Start Acquisition Button. To take a sample, press the Start Acquisitionbutton and press the Sample button when a sample is desired.

Figure 43. On Demand Data Transfer Mode

If On Update is selected, only new events detected by the hardware will be displayed by the software. The avail-able Transfer Types in this mode are “Selected” and “Selected and Updated.” In this mode, data will be displayedonly if a change in state or an update is detected on a channel or group.

For a detailed description of the transfer modes and types, see “AN366: QuickSense Firmware API.”

Page 33: Quick Sense Studio UG

QuickSenseStudio-UG

Rev. 0.2 33

3.6.5.6. Baseline Update Period

This option modifies the period in seconds at which the hardware recomputes the Active and Inactive Baselines.This parameter is global to the hardware (the same update period is used for all channels) and it is stored in thehardware. This parameter can only be set when an acquisition is not acquiring data.

3.7. QuickSense Calibration UtilityThe QuickSense Calibration Utility can be used to update thresholds and calibrate a device without the graphicalinterface of the Performance Analysis Tool. Additionally, a board configuration can be saved to download to multi-ple boards.

To connect to a device, go to Device and select either the ToolStick “TSxxxx” or the COM (or Virtual COM) port ofthe hardware. Once a device is selected, the program will automatically attempt to connect to the hardware. Theconnection status can also be manually controlled using the Connection menu options.

3.7.1. Threshold Settings

The program will automatically detect the group and switch elements on a board. To modify the parameters for aparticular group or channel, select that element in the “Channels and Groups” list. Then the channel’s thresholdscan be modified by moving the Active-to-Inactive or Inactive-to-Active sliders up and down under Threshold Set-tings. The default values for these thresholds is 30 and 70, respectively.

Figure 44. Setting Thresholds in the QuickSense Calibration Utility

Page 34: Quick Sense Studio UG

QuickSenseStudio-UG

34 Rev. 0.2

The channel numbers correspond to the button and group elements on the hardware based on the listed order inthe arrays QS_Config.c file. The first element in these arrays is element 0 (Channel or Group 0).

Figure 45. Corresponding Channels and Hardware

Once the desired value is represented by the sliders, the “Set Thresholds” button sets the thresholds for theselected channel. However, these thresholds are not saved until a channel has been calibrated. The “Set All” but-ton sets the thresholds to the slider values for all the channels. The “Reset All” button resets the thresholds to theirdefault values.

3.7.2. Minimum SNR Requirements

The Minimum SNR Requirements section sets the desired SNR for each channel. When the channel or channelsgo through the calibration process, the program will verify that the desired SNR has been met using the ThresholdSettings. The application will cancel a calibration process without writing any calibration values to the device if min-imum configured SNR requirements cannot be met for a channel.

The “Set Selected SNR” button sets the desired SNR for the selected channel. The “Set All SNR” buttons sets thedesired SNR for all channels to the value represented by the “Desired SNR” text box. The “Reset All SNR” buttonresets the desired all SNR channels to the default value of 5.

3.7.3. Calibration

To calibrate one channel or group, select the channel or group and use the “Calibrate Selected” button. The pro-gram will then proceed with a series of steps to calibrate that channel or group. The calibration process can only becompleted if the Flash is writable and erasable.

Page 35: Quick Sense Studio UG

QuickSenseStudio-UG

Rev. 0.2 35

Figure 46. Calibrating a Group in the QuickSense Calibration Utility

The calibration instructions are shown in dialog boxes and are described in the Test Instructions section. Once thechannel has been calibrated, the threshold settings will be written to the hardware. The result of the calibrationoperation will be displayed in the Test Instructions text box when calibration has completed.

For non-group channels, the calibration operation will display the calculated SNR of the button while the program iswriting the thresholds to the hardware.

Figure 47. Calculated Channel SNR

The program will issue a notification if the calculated SNR for the channel was not high enough to meet the desiredSNR set for the channel.

Once all of the channels have been calibrated and configured, the calibration profile can be saved by going to theFile menu and selecting Save. A previous calibration profile can be loaded by using the FileLoad option.

For applications where the Flash should be read only, a .HEX file that includes calibration values can be createdusing the IDE. See Section 3.3.2.4. for more information on this process.

Page 36: Quick Sense Studio UG

QuickSenseStudio-UG

36 Rev. 0.2

3.8. QuickSense XY Display UtilityThe QuickSense XY Display Utility provides a drawing pad for multi-dimensional pad (nD Pad) groups in the Quick-Sense Firmware API. For more information on this group type, see “AN366: QuickSense Firmware API.” For thesegroup types, the coordinate transmitted by the QuickSense Firmware API Serial Interface is displayed on the draw-ing pad. The displayed coordinates location is displayed in the lower left-hand corner.

Figure 48. QuickSense XY Display Utility with the One-Dimensional IR Slider Evaluation Kit

To connect to a device, use the DeviceSettings menu option to select the device and the program will automat-

ically connect. The connection status can also be manually controlled using the DeviceConnect menu. Theconnected device will be displayed in the lower left-hand corner.

Once a device is connected, the device should begin transmitting location information to the XY Display Utility. Inthe case of the Infrared Slider, the relative one-dimensional position should be displayed.

3.8.1. View Menu

The View menu provides several options for the XY Display Utility drawing pad:

Figure 49. QuickSense XY Display Utility View Menu

3.8.1.1. Status Bar

When checked, this option will enable the status bar at the bottom of the program. The status bar reports thedevice connection information and coordinate locations.

3.8.1.2. Change Pad Scale

This option allows the drawing area to be scaled larger or smaller.

3.8.1.3. Change Pen Width

This option scales the size of the pen point used in the drawing area. The default value is 5. A size of 1 will displaya 1 pixel pen point that represents 1 X and 1 Y unit size.

3.8.1.4. Change Pad Drawing Options

This option allows the cursor to be gray or colored in both point or rectangle modes. The default option is “ColorHighlight” for both modes.

Page 37: Quick Sense Studio UG

QuickSenseStudio-UG

Rev. 0.2 37

NOTES:

Page 38: Quick Sense Studio UG

QuickSenseStudio-UG

38 Rev. 0.2

CONTACT INFORMATIONSilicon Laboratories Inc.400 West Cesar ChavezAustin, TX 78701Tel: 1+(512) 416-8500Fax: 1+(512) 416-9669Toll Free: 1+(877) 444-3032

Please visit the Silicon Labs Technical Support web page:https://www.silabs.com/support/pages/contacttechnicalsupport.aspxand register to submit a technical support request.

Silicon Laboratories, Silicon Labs, and QuickSense are trademarks of Silicon Laboratories Inc.

Other products or brandnames mentioned herein are trademarks or registered trademarks of their respective holders.

The information in this document is believed to be accurate in all respects at the time of publication but is subject to change without notice. Silicon Laboratories assumes no responsibility for errors and omissions, and disclaims responsibility for any consequences resulting from the use of information included herein. Additionally, Silicon Laboratories assumes no responsibility for the functioning of undescribed features or parameters. Silicon Laboratories reserves the right to make changes without further notice. Silicon Laboratories makes no warranty, rep-resentation or guarantee regarding the suitability of its products for any particular purpose, nor does Silicon Laboratories assume any liability arising out of the application or use of any product or circuit, and specifically disclaims any and all liability, including without limitation conse-quential or incidental damages. Silicon Laboratories products are not designed, intended, or authorized for use in applications intended to support or sustain life, or for any other application in which the failure of the Silicon Laboratories product could create a situation where per-sonal injury or death may occur. Should Buyer purchase or use Silicon Laboratories products for any such unintended or unauthorized ap-plication, Buyer shall indemnify and hold Silicon Laboratories harmless against all claims and damages.