UG235.01: Developing Code with Silicon Labs Connect

Similar documents
EFM8 Laser Bee Family QSG110: EFM8LB1-SLSTK2030A Quick Start Guide

QSG155: Using the Silicon Labs Dynamic Multiprotocol Demonstration Applications

EFM32 Pearl Gecko Family QSG118: EFM32PG1 SLSTK3401A Quick- Start Guide

QSG114: CPT007B SLEX8007A Kit Quick- Start Guide

AN1160: Project Collaboration with Simplicity Studio

QSG123: CP2102N Evaluation Kit Quick- Start Guide

QSG144: CP2615-EK2 Quick-Start Guide

EFM32 Happy Gecko Family EFM32HG-SLSTK3400A Quick-Start Guide

EFM8 Universal Bee Family EFM8UB2 Errata

QSG126: Bluetooth Developer Studio Quick-Start Guide

AN999: WT32i Current Consumption

UG103.13: Application Development Fundamentals: RAIL

SMBus. Target Bootloader Firmware. Master Programmer Firmware. Figure 1. Firmware Update Setup

EFM8 Busy Bee Family EFM8BB2-SLSTK2021A Quick Start Guide

QSG153: Micrium s μc/probe Tool Quick- Start Guide

AN125 INTEGRATING RAISONANCE 8051 TOOLS INTO THE S ILICON LABS IDE. 4. Configure the Tool Chain Integration Dialog. 1. Introduction. 2.

QSG107: SLWSTK6101A/B Quick-Start Guide

AN1143: Using Micrium OS with Silicon Labs Thread

QSG119: Wizard Gecko WSTK Quick-Start Guide

QSG107: SLWSTK6101A/B Quick-Start Guide

AN1117: Migrating the Zigbee HA Profile to Zigbee 3.0

EFM32 EFM32GG11 Giant Gecko Family QSG149: EFM32GG11-SLSTK3701A Quick-Start Guide

AN888: EZR32 Quick Start Guide

QSG159: EFM32TG11-SLSTK3301A Quick- Start Guide

UG365: GATT Configurator User s Guide

Figure 1. CP2108 USB-to-Quad UART Bridge Controller Evaluation Board

Software Release Note

AN888: EZR32 Simple TRX Application Quick Start Guide

UG294: CPT213B SLEXP8019A Kit User's Guide

CP2110-EK CP2110 EVALUATION KIT USER S GUIDE. 1. Kit Contents. 2. Relevant Documentation. 3. Software Setup

CP2103-EK CP2103 EVALUATION KIT USER S GUIDE. 1. Kit Contents. 2. Relevant Documentation. 3. Software Setup USBXpress Driver Development Kit

QSG107: SLWSTK6101A Quick-Start Guide

CP2104-EK CP2104 EVALUATION KIT USER S GUIDE. 1. Kit Contents. 2. Relevant Documentation. 3. Software Setup USBXpress Driver Development Kit

Figure 1. Precision32 AppBuilder

UG369: Wireless Xpress BGX13P SLEXP8027A Kit User's Guide

Translate HCSL to LVPECL, LVDS or CML levels Reduce Power Consumption Simplify BOM AVL. silabs.com Building a more connected world. Rev. 0.

AN976: CP2101/2/3/4/9 to CP2102N Porting Guide

CP2105-EK CP2105 EVALUATION KIT USER S GUIDE. 1. Kit Contents. 2. Relevant Documentation. 3. Software Setup USBXpress Driver Development Kit

AN1154: Using Tokens for Non-Volatile Data Storage

AN1083: Creating and Using a Secure CoAP Connection with ARM s mbed TLS

UG254: CP2102N-MINIEK Kit User's Guide

UG345: Si72xx Eval Kit User's Guide

UG366: Bluetooth Mesh Node Configuration User s Guide

AN1083: Creating and Using a Secure CoAP Connection with ARM s mbed TLS

Date CET Initials Name Justification

µc/probe on the Freescale FRDM-KL05Z without an RTOS

The process also requires the use of the following files found in the Micriµm Quick Start Package for the FRDM-KL46Z:

BRD4300B Reference Manual MGM111 Mighty Gecko Module

Router-E and Router-E-PA Wireless Router PRODUCT MANUAL

AN1010: Building a Customized NCP Application

EFM8 Universal Bee Family EFM8UB1 Errata

EFM8 Busy Bee EFM8BB1 Errata

Wireless Development Suite (WDS) is a software utility used to configure and test the Silicon Labs line of ISM band RFICs.

UG271: CP2615-EK2 User's Guide

UG313: Thunderboard Sense 2 Bluetooth Low Energy Demo User's Guide

QSG139: Bluetooth Development with Simplicity Studio

EFR32MG13, EFR32BG13 & EFR32FG13 Revision C and Data Sheet Revision 1.0

WT12 EVALUATION KIT DATA SHEET. Monday, 09 September Version 1.7

AN719 PRECISION32 IDE AND APPBUILDER DETAILED TUTORIAL AND WALKTHROUGH. 1. Introduction. Figure 1. Precision32 IDE and AppBuilder Walkthrough Overview

Date CET Initials Name Justification

8-Bit MCU C8051F85x/86x Errata

UG274: Isolated USB Expansion Board User Guide

UG322: Isolated CAN Expansion Board User Guide

Humidity/Temp/Optical EVB UG

AN324 ADVANCED ENCRYPTION STANDARD RELEVANT DEVICES. 1. Introduction. 2. Implementation Potential Applications Firmware Organization

EFR32 Mighty Gecko Family EFR32MG1 with Integrated Serial Flash Errata History

AN1106: Optimizing Jitter in 10G/40G Data Center Applications

USBXpress Family CP2102N Errata

AN1139: CP2615 I/O Protocol

AN1119: Using RAIL for Wireless M-Bus Applications with EFR32

UG103.7: Tokens Fundamentals

UDP UPPI Card UG UDP UPPI CARD USER S GUIDE. 1. Introduction. Figure 1. UPPI Cards with and without Radio

AN706: EZSP-UART Host Interfacing Guide

μc/probe on the element14 BeagleBone Black

AN0059.1: UART Flow Control

Bluegiga WF111 Software Driver Release Notes

μc/probe on the RIoTboard (Linux)

AN1053: Bluetooth Device Firmware Update over UART for EFR32xG1 and BGM11x Series Products

CP2114 Family CP2114 Errata

EFM32 Zero Gecko EFM32ZG Errata

USB Debug Adapter. Power USB DEBUG ADAPTER. Silicon Laboratories. Stop. Run. Figure 1. Hardware Setup Using a USB Debug Adapter

USB Debug Adapter. Power USB DEBUG ADAPTER. Silicon Laboratories. Stop. Run. Figure 1. Hardware Setup using a USB Debug Adapter

Date CET Initials Name Justification

QSG108: Getting Started with Silicon Labs Bluetooth Software

USB Debug Adapter. Power USB DEBUG ADAPTER. Silicon Laboratories. Stop. Run. Figure 1. Hardware Setup Using a USB Debug Adapter

Si1146 UVIRSlider2EK Demo Kit

Table 1. Kits Content. Qty Part Number Description. Si4010 Simplified Key Fob Demo Kit 868 MHz

The Si50122-Ax-EVB is used to evaluate the Si50122-Ax. Table 1 shows the device part number and corresponding evaluation board part number.

ETRX3DVK Development Kit Quick-Start Guide

AN1114: Integrating Silicon Labs Bluetooth Applications with the Micrium RTOS

AN724: Designing for Multiple Networks on a Single Zigbee Chip

AN1095: What to Do When the I2C Master Does Not Support Clock Stretching

Si1140-DK. Si1140 DEVELOPMENT KIT USER S GUIDE. 1. Kit Contents. Figure 1. Si1143 Evaluation Board

AN1023: HTTP SERVER EXAMPLE

UG352: Si5391A-A Evaluation Board User's Guide

QSG166: WF200 Wi-Fi Development Kit Quick Start Guide

AN690. Si4010 DEVELOPMENT KIT QUICK-START GUIDE. 1. Purpose. 2. Kit Content. Table 1. Kit Content

2. Key Points. F93x F92x F91x F90x. Figure 1. C8051F93x-C8051F90x MCU Family Memory Size Options

USB Debug Adapter. Power USB DEBUG ADAPTER. Silicon Laboratories. Stop. Run. Figure 1. Hardware Setup Using a USB Debug Adapter

Software Design Specification

Transcription:

UG235.01: Developing Code with Silicon Labs Connect The Connect User s Guide provides in-depth information for developers who are using the Silicon Labs Connect stack as a foundation for their application development on the Wireless Gecko (EFR32 ) portfolio or custom hardware. The Connect stack is delivered as part of the Silicon Labs Flex SDK. The Connect User s Guide assumes that you have already installed the Simplicity Studio development environment and the Flex SDK and that you are familiar with the basics of configuring, compiling, and flashing Connect-based applications. If you are new to Connect and the Flex SDK, see QSG138: Getting Started with the Silicon Labs Flex Software Development Kit for the Wireless Gecko (EFR32 ) Portfolio. KEY POINTS Introduces the Connect User s Guide and its contents. Describes available software and hardware tools. Provides an overview for Silicon Labs Connect application development. Describes configuration options available through AppBuilder in Simplicity Studio. Describes the Silicon Labs Connect Application Framework. silabs.com Building a more connected world. Rev. 0.1

Introducing the Silicon Labs Connect User s Guide 1 Introducing the Silicon Labs Connect User s Guide Silicon Labs recommends that you review QSG138: Getting Started with the Silicon Labs Flex Software Development Kit for the Wireless Gecko (EFR32 ) Portfolio before proceeding with the more focused discussion presented in the Connect User s Guide series. For an overview of Connect and its features, see UG103.12: Application Development Fundamentals: Silicon Labs Connect. For the Connect API documentation, go to https://docs.silabs.com/connect-stack/latest. The Silicon Labs Connect User s Guide series provides in-depth guidance in the following chapters: UG235.01: Developing Code with Silicon Labs Connect Introduces the Connect User s Guide and provides a general overview of the code development process for Connect-based applications, and the hardware and software tools that support it. UG235.02: Using Silicon Labs Connect with IEEE 802.15.4 Connect is based on the IEEE 802.15.4-2011 standard which defines various Physical (PHY) and Media Access Control (MAC) layer modes designed for short-range communication in Personal Area Networks (PANs). UG235.02 gives a short introduction to the IEEE 802.15.4 features that are used in Connect, suitable to understand the Silicon Labs Connect MAC layer without reading the full specification. UG235.03: Architecture of the Silicon Labs Connect Stack Presents a complete review of the Connect stack architecture and capabilities: available modes of operation, supported network topologies, stack layers (PHY, MAC, Network), and features applicable to each configuration. UG235.04: Using Plugins with Silicon Labs Connect Silicon Labs Application Builder (AppBuilder) selectively implements plugins and callbacks on top of the Application Framework to provide a developer-configurable sophisticated state machine for complex features and application behavior. UG235.04 describes how to use Connect plugins and callbacks to provide developer-configurable features and application behavior. UG235.05: Using Micrium OS (RTOS) with Silicon Labs Connect Describes the process to implement a Connect-based application on top of the Micrium OS RTOS (real-time operating system). UG235.06: Bootloading and OTA with Silicon Labs Connect Explains the bootloader options (standalone, application, and Over the Air (OTA)) available for use within Connect-based applications. UG235.07: Energy Saving with Silicon Labs Connect Discusses techniques to reduce power consumption of network applications based on the Silicon Labs Connect Stack. UG235.08: Using Other Services with Silicon Labs Connect Reviews time-based scheduling with the Connect Event handler, describes the token system and simulated EEPROM within the Connect stack, and offers implementation guidance for the powerful Command Line Interface (CLI) support. This document is not yet published. It is planned for release in early 2019. UG235.09: Using NCP with Silicon Labs Connect Discusses the implementation of a Network Coprocessor (NCP) application based on the Connect stack. This document is not yet published. It is planned for release in early 2019. silabs.com Building a more connected world. Rev. 0.1 1

Connect Overview 2 Connect Overview The Silicon Labs Connect stack provides a fully-featured, easily-customizable wireless networking solution optimized for devices that require low power consumption and are used in a simple network topology. Connect is configurable to be compliant with regional communications standards worldwide. Each RF configuration is designed for maximum performance under each regional standard. Connect stack supports many combinations of radio modulation, frequency and data rates. The stack provides support for end nodes, coordinators, and range extenders. It includes common wireless MAC (Medium Access Control) layer functions such as scanning and joining, setting up a point-to-point or star network, and managing device types such as sleepy end devices, routers, and coordinators. With all this functionality already implemented in the stack, developers can focus on their end application development and not worry about the lower-level radio and network details. The Connect stack should be used in applications with simple network topologies, such as a set of data readers feeding information directly to a single central collection point (star or extended star topology) or a set of nodes in the same range exchanging data in a singlehop fashion (direct devices). It does not provide a full mesh networking solution such as that provided by the EmberZNet PRO or Silicon Labs Thread stack. The Connect stack supports efficient application development through its building block plugin design. When used with AppBuilder, developers can easily select which functions should be included in their applications. The resulting applications are completely portable they can be recompiled for different regions, different MCUs, and different radios. 2.1 Connect Developer Resources Silicon Labs equips developers with an array of tools to accelerate the code development process for applications based on the Connect stack, reducing time-to-market and facilitating the creation of robust wireless solutions. These include: Simplicity Studio, featuring: Eclipse-based IDE: Enables code editing, downloading, and debugging for all Silicon Labs EFR32 MCUs. Flex SDK (contains the Connect Stack): Supports both GCC (included) and IAR toolchains. Provides pre-compiled stack libraries, fully documented stack API, and full source code for comprehensive and configurable application framework. Application Builder (AppBuilder, which includes the Radio Configurator): Pivotal utility that facilitates development of Connect-based applications with a graphical interface for Radio/PHY configuration and a modular application code constructor. Network Analyzer: Enables debugging of complex wireless systems by capturing a trace of wireless network activity (such as timestamps, Link Quality Indicator (LQI), Relative Received Signal Strength Indicator (or RSSI), CRC pass/fail results, etc.) that can be examined in detail live or at a later time all without any software overhead. Multi-Node Energy Profiler: Performs Advanced Energy Monitoring (AEM) which enables network power profiling of code in real time by measuring the per-node power consumption. Code correlation links the power consumed with the associated line of code. Device Console: Provides a CLI with a powerful way to interact with Connect sample applications and custom applications that implement the serial interface. Hardware tools: Wireless Starter Kit (WSTK): Provides a common motherboard to support development and debug features for all EFR32 variants. The on-board SEGGER J-Link debugger can target an installed radio board during proof-of-concept phase or an external customer board to support in-system bring-up. EFR32 Radio Boards: Tuned for various operational frequencies, transmit powers, etc. The boards contain both a PCB antenna and a U.FL cable connector to support immediate range testing and RF lab measurements. Easy copy-and-paste reference designs: Design files for the WSTK and radio boards are accessible from within Simplicity Studio. For general guidance on how to install, access, and utilize these products, see QSG138: Getting Started with the Silicon Labs Flex Software Development Kit for the Wireless Gecko (EFR32 ) Portfolio. silabs.com Building a more connected world. Rev. 0.1 2

Code Development Process for Connect-based Applications 3 Code Development Process for Connect-based Applications The Connect stack has been structured to support optional functionality blocks. These software components are called plugins. An Application Framework is layered on top of the Connect stack, consumes the stack handler interfaces, and exposes its own more highly abstracted and application-specific interface to developers. The Connect Application Framework is also structured in plugins. Provided as either a standalone pre-compiled library or a set of source code, each plugin adds a specific feature set to the project. Unnecessary features can be disabled by removing the associated plugin(s), which removes the code from the build and reduces the project s resource footprint. A plugin can have plugin options, depend on other plugins, can provide callbacks, subscribe to, and implement callbacks. Connect stack APIs can be invoked directly by the application. Stack callbacks are implemented by the associated plugin and dispatched to the application and subscribing plugins using the Application Framework bookkeeping functionality. The procedure to construct an application based on the Connect stack generally involves the following steps: 1. Using AppBuilder in Simplicity Studio: configure a new project to support your desired wireless protocol (that is, configure the radio) and selectively enable any features/plugins/callbacks your application will require. Click [Generate] to populate your project workspace with the files and linked resources necessary to implement your application. 2. Within the Simplicity Studio IDE: write the specifics of your application into the callback functions that were generated along with your project files. Use the Connect Application Framework API and Hardware Abstraction Layer (HAL) support to interact with the network and perform the tasks required of your application. 3. Build and flash the project to your target EFR32 device(s). 4. Leverage the powerful toolset (Network Analyzer, Multi-node Energy Profiler, CLI, etc.) in Simplicity Studio to verify or debug your application. 3.1 Application Builder (AppBuilder) Connect-based application development begins with and depends heavily upon AppBuilder within Simplicity Studio, a graphical user interface that works in harmony with the Flex SDK (including the Connect stack) and the Gecko Bootloader. AppBuilder allows developers to start a new project based on an existing framework of best practice application state machine code developed and tested by Silicon Labs. This framework sits on top of the Connect stack to interface with the HAL and provide application-layer functionality, including the following: Start-up routines Mechanisms for finding, joining, or forming networks High-level APIs for creating, parsing, and handling message payloads Configuration of the networking stack CLIs for control of the program Human-readable debug output tailored to the needs of the developer Incorporation of customer-provided libraries and code modules silabs.com Building a more connected world. Rev. 0.1 3

Code Development Process for Connect-based Applications Figure 3-1. Silicon Labs Application Builder (AppBuilder) As depicted in Figure 3-1, AppBuilder has the following seven tabbed sections: General: Defines the output directory where AppBuilder will generate the project file structure. Specifies the target architecture for the project (toolchain and target hardware). For Connect sample applications, describes how to utilize and interact with the application. HAL: Specifies whether to include bootloader capability (and what kind). Provides for integration with the Hardware Configurator (to define utilization and routing for peripherals, timers, GPIO, etc.). See AN1115: Configuring Peripherals for 32-Bit Devices in Simplicity Studio for details. Radio Configuration: Allows full configuration of the PHY. Select from the pre-built PHYs optimized for specific regional standards or fully-customize to accommodate your desired radio parameters. See AN971: EFR32 Radio Configurator Guide for details. Printing: Configure debug printing and CLI feature support. Plugins: Select from a wide variety of plugins that each implement one or more callbacks on top of the Application Framework to provide a sophisticated state machine for complex features like application security, OTA bootloader support, etc. Source code for most plugins is available so the code can be used as a point of reference for customized implementations. Callbacks: Callbacks allow user applications to be notified about important events or make decisions based on runtime state. Software designers can choose which callbacks are needed for their application and can leave the rest disabled so that only the chosen callbacks appear in the user s Callbacks C file. Callbacks are the places where custom application code can be added on top of the Silicon Labs existing framework to give that application unique behaviors and decide how it will react. Other: Additional macros and filesystem resources can be defined for the project. Additionally, events can be defined, which allow the Connect stack to support scheduling of timing-specific actions. Once a developer has completely configured application details within AppBuilder, clicking the Generate button (top right of the AppBuilder frame) will generate a software project with customized header files and array definitions in C code to represent the desired application behavior. 3.2 Application Customization In a typical Connect-based application the Connect Common Main plugin is enabled, which defines the main() function for SoC applications. It calls all the required initialization functions, but also implements the stack handlers and dispatches them to every plugin that subscribes to them by calling into the bookkeeping auto-generated callbacks. While Silicon Labs provides all of the source code for the Connect Application Framework (the stack and RAIL are provided as pre-compiled libraries), user-created code should live outside the framework and should interact with the framework through the Connect Application Framework API exposed by the framework utilities and callbacks. AppBuilder generates a stub callback file called flex-callbacks.c that contains default implementations of all callbacks you have selected to include in your project. Hence, rather than modifying main() or the application framework source, in general your application code should be written within flex-callbacks.c. Commonly, emberafmaininitcallback (for initialization) and emberafmaintickcallback (iterations through the application main loop) are utilized for this purpose. silabs.com Building a more connected world. Rev. 0.1 4

Code Development Process for Connect-based Applications Note: Unused callbacks reside by default in stub form in flex-callbacks-stubs.c. See Section 3.3 Callbacks & Stubs AppBuilder Interface for more information. Stack callbacks are routed through and distributed by the Application Framework. This can be observed by noting the prefix on relevant API function names (ember being associated with the stack API and emberaf associated with the Application framework API). For example, when the receipt of an incoming message causes the stack to raise emberincomingmessagehandler, the message is both passed to emberafincomingmessagecallback (for processing by the application) and emberafincomingmessage (to be consumed by plugins, as dictated by flex-bookkeeping.c). The project can then be built from within the Simplicity Studio IDE to compile a binary that can be loaded onto the target device. For more information on this process (compiling, flashing, and debugging), see AN0822: Simplicity Studio User's Guide. For more information on Connect plugins and callbacks, see UG235.04: Using Plugins with Silicon Labs Connect. 3.2.1 Generation The project can be generated by clicking the Generate button in the top right corner of AppBuilder. This will pull in all the required files for the project and generate the radio and other config files. Before overwriting anything, it will open a Generate validation window, as depicted in Figure 3-2. Figure 3-2. Generation validation window This will let you decide which files should be overwritten. Some files, like flex-callbacks.c or the.hwconf files are not overwritten by default: these files should only be overwritten when you create an application from scratch. If you are instead modifying an existing application (or generating an example), these files likely include customized content, so overwriting them would reset/revert them to their default versions. silabs.com Building a more connected world. Rev. 0.1 5

Code Development Process for Connect-based Applications 3.3 Callbacks & Stubs AppBuilder Interface The Callbacks tab in AppBuilder contains a listing of available callbacks and their origin. For most callbacks, you are also provided an option to set or clear two checkboxes labeled Is used? and Stub? as shown in Figure 3-3. Figure 3-3. Figure 3: Silicon Labs AppBuilder Callbacks Tab The appropriate setting for each of these checkboxes depends on the current stage of your development effort: 1. Starting a new project In this case, AppBuilder has not yet generated its output components to populate your workspace. Check both Is used? and Stub? for desired callbacks. This will ensure that AppBuilder not only expects a given callback to be present in your application (by removing its instance from flex-callbacks-stubs.c and creating an instance in flex-callbacks.c), but it will also auto-generate the callback declaration (in flex-callbacks.c) which provides a convenient template within which you can write your custom callback content. 2. Editing callback configuration on an existing project In this case, AppBuilder has already generated its output files at least once. When adding a new callback that was not previously included in your project, check Is used? (so the default instance will be purged from flex-callbacks-stubs.c), but avoid setting any of the Stub? checkboxes, as a selection here will cause AppBuilder to try and overwrite your existing callbacks content with the empty stubs again. You will need to directly edit flex-callbacks.c to add in any newly-introduced callbacks to your existing project. 3. Removing a callback from an existing project Similar to #2 above, you want to avoid any checks in the Stub? column to prevent overwrites to your existing flex-callbacks.c content. When removing an existing callback, you simply clear the associated Is used? checkbox and regenerate. AppBuilder will restore the default instance of the callback to flex-callbacks-stubs.c. You will need to ensure that the unwanted callback is manually removed from flex-callbacks.c to avoid conflicting with the restored default instance. Consult the remaining sections of the Connect User s Guide series for in-depth guidance on the multiple components to consider when developing Connect-based applications. silabs.com Building a more connected world. Rev. 0.1 6

Simplicity Studio One-click access to MCU and wireless tools, documentation, software, source code libraries & more. Available for Windows, Mac and Linux! IoT Portfolio www.silabs.com/iot SW/HW www.silabs.com/simplicity Quality www.silabs.com/quality Support and Community community.silabs.com Disclaimer Silicon Labs intends to provide customers with the latest, accurate, and in-depth documentation of all peripherals and modules available for system and software implementers using or intending to use the Silicon Labs products. Characterization data, available modules and peripherals, memory sizes and memory addresses refer to each specific device, and "Typical" parameters provided can and do vary in different applications. Application examples described herein are for illustrative purposes only. Silicon Labs reserves the right to make changes without further notice and limitation to product information, specifications, and descriptions herein, and does not give warranties as to the accuracy or completeness of the included information. Silicon Labs shall have no liability for the consequences of use of the information supplied herein. This document does not imply or express copyright licenses granted hereunder to design or fabricate any integrated circuits. The products are not designed or authorized to be used within any Life Support System without the specific written consent of Silicon Labs. A "Life Support System" is any product or system intended to support or sustain life and/or health, which, if it fails, can be reasonably expected to result in significant personal injury or death. Silicon Labs products are not designed or authorized for military applications. Silicon Labs products shall under no circumstances be used in weapons of mass destruction including (but not limited to) nuclear, biological or chemical weapons, or missiles capable of delivering such weapons. Trademark Information Silicon Laboratories Inc., Silicon Laboratories, Silicon Labs, SiLabs and the Silicon Labs logo, Bluegiga, Bluegiga Logo, Clockbuilder, CMEMS, DSPLL, EFM, EFM32, EFR, Ember, Energy Micro, Energy Micro logo and combinations thereof, "the world s most energy friendly microcontrollers", Ember, EZLink, EZRadio, EZRadioPRO, Gecko, ISOmodem, Micrium, Precision32, ProSLIC, Simplicity Studio, SiPHY, Telegesis, the Telegesis Logo, USBXpress, Zentri, Z-Wave, and others are trademarks or registered trademarks of Silicon Labs. ARM, CORTEX, Cortex-M3 and THUMB are trademarks or registered trademarks of ARM Holdings. Keil is a registered trademark of ARM Limited. All other products or brand names mentioned herein are trademarks of their respective holders. Silicon Laboratories Inc. 400 West Cesar Chavez Austin, TX 78701 USA http://www.silabs.com