AN0004: Clock Management Unit



Similar documents
AN111: Using 8-Bit MCUs in 5 Volt Systems

Figure 1. 8-Bit USB Debug Adapter

AN962: Implementing Master-Slave Timing Redundancy in Wireless and Packet- Based Network Applications

Figure 1. Proper Method of Holding the ToolStick. Figure 2. Improper Method of Holding the ToolStick

AN862. OPTIMIZING Si534X JITTER PERFORMANCE IN NEXT GENERATION INTERNET INFRASTRUCTURE SYSTEMS. 1. Introduction

AN952: PCIe Jitter Estimation Using an Oscilloscope

AN803. LOCK AND SETTLING TIME CONSIDERATIONS FOR Si5324/27/ 69/74 ANY-FREQUENCY JITTER ATTENUATING CLOCK ICS. 1. Introduction

AN486: High-Side Bootstrap Design Using ISODrivers in Power Delivery Systems

UG103.8: Application Development Fundamentals: Tools

TS1005 Demo Board COMPONENT LIST. Ordering Information. SC70 Packaging Demo Board SOT23 Packaging Demo Board TS1005DB TS1005DB-SOT

AN580 INFRARED GESTURE SENSING. 1. Introduction. 2. Hardware Considerations

UG129: ZigBee USB Virtual Gateway Reference Design (RD ) User's Guide

Current Digital to Analog Converter

Backup Power Domain. AN Application Note. Introduction

UG103-13: Application Development Fundamentals: RAIL

AN922: Using the Command Line Interface (CLI) for Frequency On-the-Fly with the Si5346/47

Analog to Digital Converter

Making Prototyping Boards for the EFM32 kits

Bootloader with AES Encryption

Connect the EFM32 with a Smart Phone through the Audio Jack

AN LPC1700 timer triggered memory to GPIO data transfer. Document information. LPC1700, GPIO, DMA, Timer0, Sleep Mode

RoHs compliant, Pb-free Industrial temperature range: 40 to +85 C Footprint-compatible with ICS , 2.5, or 3.3 V operation 16-TSSOP

Selecting the Right MCU Can Squeeze Nanoamps out of Your Next Internet of Things Application

AN583: Safety Considerations and Layout Recommendations for Digital Isolators

Hello, and welcome to this presentation of the STM32L4 reset and clock controller.

AN3252 Application note

AVR151: Setup and Use of the SPI. Introduction. Features. Atmel AVR 8-bit Microcontroller APPLICATION NOTE

APPLICATION. si32library. Callback CMSIS HARDWARE. Figure 1. Firmware Layer Block Diagram

USER GUIDE EDBG. Description

PAC52XX Clock Control Firmware Design

AVR131: Using the AVR s High-speed PWM. Introduction. Features. AVR 8-bit Microcontrollers APPLICATION NOTE

APPLICATION NOTE. Atmel AVR134: Real Time Clock (RTC) Using the Asynchronous Timer. Atmel AVR 8-bit Microcontroller. Introduction.

AN LPC1700 RTC hardware auto calibration. Document information. RTC, Hardware Auto Calibration, LPC1700, Graphic LCD

Software Real Time Clock Implementation on MC9S08LG32

Gecko. Energy-friendly microcontrollers for the IoT. Gecko MCUs Complete portfolio of energyfriendly 32-bit microcontrollers PRODUCT SELECTOR GUIDE

AN614 A SIMPLE ALTERNATIVE TO ANALOG ISOLATION AMPLIFIERS. 1. Introduction. Input. Output. Input. Output Amp. Amp. Modulator or Driver

CPU. PCIe. Link. PCIe. Refclk. PCIe Refclk. PCIe. PCIe Endpoint. PCIe. Refclk. Figure 1. PCIe Architecture Components

PC Base Adapter Daughter Card UART GPIO. Figure 1. ToolStick Development Platform Block Diagram

GCLK (Generic Clock Management) PM (Power Management) SYSCTRL (Clock Source Control) The following devices can use this module:

ETRX3USB ETRX3USB-LRS ETRX3USB+8M ETRX3USB-LRS+8M PRODUCT MANUAL

USB Audio Simplified

AN655 R ANGE TEST APPLICATION FOR EZRADIO AND EZRADIOPRO. 1. Introduction. 2. Supported Radio Types

AN3265 Application note

AVR1321: Using the Atmel AVR XMEGA 32-bit Real Time Counter and Battery Backup System. 8-bit Microcontrollers. Application Note.

AVR125: ADC of tinyavr in Single Ended Mode. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

Develop a Dallas 1-Wire Master Using the Z8F1680 Series of MCUs

AVR126: ADC of megaavr in Single Ended Mode. Introduction. Features. AVR 8-bit Microcontrollers APPLICATION NOTE

AN0009: Getting Started with EFM32, EZR32, and EFM32 Gemstones

CHAPTER 11: Flip Flops

Hello, welcome to this presentation of the low power timer, or LPTMR, module for Kinetis MCUs. In this session you ll learn about the LPTMR, it s

AN108 IMPLEMENTING A REALTIME CLOCK. Relevant Devices. Introduction. Key Points. Overview

Simplifying System Design Using the CS4350 PLL DAC

Table 1. RF Pico Boards of the EZRadioPRO Development Kits. Qty Description Part Number

UG103.8 APPLICATION DEVELOPMENT FUNDAMENTALS: TOOLS

AVR1003: Using the XMEGA Clock System. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

AVR1301: Using the XMEGA DAC. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

ES_LPC4357/53/37/33. Errata sheet LPC4357/53/37/33. Document information

Am186ER/Am188ER AMD Continues 16-bit Innovation

AN220 USB DRIVER CUSTOMIZATION

Flexible Active Shutter Control Interface using the MC1323x

QSG108: Blue Gecko Bluetooth Smart Software Quick-Start Guide

AN3332 Application note

Microtronics technologies Mobile:

ETEC Digital Controls PIC Lab 10 Pulse Width Modulation

Atmel Norway XMEGA Introduction

How To Develop A Toolstick

APPLICATION NOTE Atmel AT02509: In House Unit with Bluetooth Low Energy Module Hardware User Guide 8-bit Atmel Microcontroller Features Description

Real-Time Clock. * Real-Time Computing, edited by Duncan A. Mellichamp, Van Nostrand Reinhold

AN588 ENERGY HARVESTING REFERENCE DESIGN USER S GUIDE. 1. Kit Contents. 2. Introduction. Figure 1. Energy Harvesting Sensor Node

8-bit Microcontroller. Application Note. AVR134: Real-Time Clock (RTC) using the Asynchronous Timer. Features. Theory of Operation.

APPLICATION NOTE. AT07175: SAM-BA Bootloader for SAM D21. Atmel SAM D21. Introduction. Features

AVR115: Data Logging with Atmel File System on ATmega32U4. Microcontrollers. Application Note. 1 Introduction. Atmel

Section 14. Compare/Capture/PWM (CCP)

AN104 I NTEGRATING KEIL 8051 TOOLS INTO THE SILICON LABS IDE. 1. Introduction. 2. Key Points. 3. Create a Project in the Silicon Labs IDE

Freescale Semiconductor, Inc. Product Brief Integrated Portable System Processor DragonBall ΤΜ

Designing an Induction Cooker Using the S08PT Family

Implementing SPI Master and Slave Functionality Using the Z8 Encore! F083A

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

How To Use A Watt Saver On A Microcontroller (Watt Saver) On A Cell Phone Or Mp3 Player

SMARTCARD XPRO. Preface. SMART ARM-based Microcontrollers USER GUIDE

Keil C51 Cross Compiler

AN75. Si322X DUAL PROSLIC DEMO PBX AND GR 909 LOOP TESTING SOFTWARE GUIDE. 1. Introduction

AN4646 Application note

AVR134: Real Time Clock (RTC) using the Asynchronous Timer. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

AVR32788: AVR 32 How to use the SSC in I2S mode. 32-bit Microcontrollers. Application Note. Features. 1 Introduction

Telegesis is a trademark of Silicon Laboratories Inc. Telegesis ZigBee Communications Gateway. Product Manual

AVR055: Using a 32kHz XTAL for run-time calibration of the internal RC. 8-bit Microcontrollers. Application Note. Features.

RENESAS TECHNICAL UPDATE

AN3371 Application note

AT15007: Differences between ATmega328/P and ATmega328PB. Introduction. Features. Atmel AVR 8-bit Microcontrollers APPLICATION NOTE

AN11008 Flash based non-volatile storage

ZigBee Technology Overview

Microprocessor & Assembly Language

Serial Communications

8-bit Microcontroller. Application Note. AVR415: RC5 IR Remote Control Transmitter. Features. Introduction. Figure 1.

QSG105 GETTING STARTED WITH SILICON LABS WIRELESS NETWORKING SOFTWARE

Technical Note. Micron NAND Flash Controller via Xilinx Spartan -3 FPGA. Overview. TN-29-06: NAND Flash Controller on Spartan-3 Overview

Measuring Resistance Using Digital I/O

STM32L. Ultra-low-power Cortex -M3 devices

AN437. Si4432 RF PERFORMANCE AND FCC COMPLIANCE TEST RESULTS. 1. Introduction. 2. Relevant Measurements to comply with FCC

Transcription:

This application note gives an overview of the CMU module with explanations on how to choose clock sources, prescaling, and clock calibration. It also contains information about how to handle oscillators on wake up, external clock sources, and RC oscillator calibration. This application note includes: This PDF document Source files (zip) Example C-code Multiple IDE projects KEY POINTS EFM32 devices have several internal clock sources available, ranging from 32 khz up to 28 MHz. EFM32 devices can also use external highfrequency and low-frequency clock sources. Selecting the right clock source is key for creating low energy applications. WDOG clock LETIMER clock LCD clock Oscillators CMU Peripheral A clock Peripheral B clock Peripheral C clock Peripheral D clock CPU clock silabs.com Smart. Connected. Energy-friendly. Rev. 1.08

Overview 1. Overview The Clock Management Unit (CMU) on the EFM32 or EZR32 controls the oscillators and clocks. It can enable or disable the clock to the different peripherals individually, as well as enable, disable, or configure the available oscillators. This allows for minimizing energy consumption by disabling the clock for unused peripherals or having them run at lower frequencies. The EFM32 or EZR32 has 3 main clock branches (HFCLK, LFACLK, and LFBCLK) which are then routed to the different peripherals. Some peripherals have dedicated prescalers such as the Low Energy peripherals. Other peripherals need to be prescaled by prescaling the clock source, which will affect all the peripherals driven by the same source. HFPERCLK HFRCO HFCLK HFCORECLK HFXO HFCORECLKLE/2 LFA LFRCO LFB LFXO WDOG ULFRCO SWO AUXHFRCO FLASH Figure 1.1. Clocks and Oscillators Overview silabs.com Smart. Connected. Energy-friendly. Rev. 1.08 1

Overview x 2 USB USHFRCO 2 HFPERCLK HFRCO HFCLK HFCORECLK HFXO LFA HFCORECLKLE/2 LFRCO LFB LFXO ULFRCO WDOG SWO AUXHFRCO FLASH Figure 1.2. Clocks and Oscillators Overview (Happy Gecko) There are 5 selectable clock sources: 1-28 MHz High Frequency RC Oscillator (HFRCO) 4-32 MHz High Frequency Crystal Oscillator (HFXO) 32.768 khz Low Frequency RC Oscillator (LFRCO) 32.768 khz Low Frequency Crystal Oscillator (LFXO) (Happy Gecko only) 48/24 MHz Universal Serial High Frequency RC Oscillator (USHFRCO) The HFCLK can use any of these sources while the LFACLK and LFBCLK can only be sourced from the Low Frequency Oscillators or the HFCORECLK LE /2, which is a prescaled version of the HFCLK for the Cortex-M3 Core and related modules (HFCORECLK), such as DMA or MSC (Memory System Controller). In addition to these clock sources, there is a 14 MHz RC Oscillator (AUXCLK) which is used for flash programming and SWO debug output, and a 1 khz RC Oscillator (ULFRCO) which can be selected as clock source only for the Watchdog Timer (WDOG) only. For a detailed diagram of the EFM32 or EZR32 clock tree, refer to the reference manual. silabs.com Smart. Connected. Energy-friendly. Rev. 1.08 2

Overview 1.1 Clock Sources To select the clock source for a branch (HFCLK, LFA or LFB), the chosen oscillator must be enabled before the switch is done. If this is not done, the modules that are running from that clock branch will stop. In the case of selecting a disabled oscillator for the HFCLK branch, the CPU will stop and can only be recovered after a reset. To enable or disable an oscillator, the following function from the emlib can be used: CMU_OscillatorEnable(CMU_Osc_TypeDef osc, bool enable, bool wait) With this function, the user can select which oscillator to enable or disable and if it should wait for the oscillator to stabilize before returning. For the HFXO and LFXO the timeout period can be configured in the CMU_CTRL register. Once enabled, the selected oscillator can be used as a clock source for one of the branches using the following function: CMU_ClockSelectSet(CMU_Clock_TypeDef clock, CMU_Select_TypeDef ref) This function also enables the chosen clock source in case it has not been enabled yet. The clock parameter can be one of the three clock branches HF, LFA, or LFB, and the reference can be the HFRCO, HFXO, LFRCO, LFXO, or HFCORECLK LE /2 for the LFA and LFB branches only. After a reset, the HF branch is clocked by the HFRCO at 14 MHz and both low frequency branches have the LFRCO selected as clock source. The LFRCO is disabled upon reset so it needs to be enabled before using the low frequency peripherals. 1.2 Prescaling Deriving from the HF clock branch there are two sub-branches, HFPERCLK and HFCORECLK that can be prescaled individually up to a factor of 512. The HFPERCLK drives the high-frequency peripherals and the HFCORECLK drives the Core Modules which consist of the CPU and modules tightly coupled to it such as the DMA or MSC. Some peripherals allow for even further clock prescaling (such as the ADC) which is controlled by the peripheral's registers. As for the low frequency branches (LFB and LFA) all the peripherals driven from these can be prescaled individually with the exception of the Pulse Counter (PCNT). The prescaling function is the following: CMU_ClockDivSet(CMU_Clock_TypeDef clock, CMU_ClkDiv_TypeDef div) When using this function some attention should be made to both parameters. Not all clocks have a prescaler and the maximum prescaling value is also not the same for the different clocks (for instance the HFPERCLK has a maximum of 512 but the LETIMER clock can be divided by 32768). 1.3 HFRCO Band Selection By default, the HFRCO band is set to 14 MHz. It can be changed to 1, 7, 11, 14, 21 or 28 MHz using the BAND bitfield in the CMU_HFRCOCTRL register. The tuning value for each band is set using the TUNING bitfield in the same register. Each band is calibrated during production, and suitable tuning values for each band can be read from the Device Information page. To make this task easier, there is also a function available to change the HFRCO band: CMU_HFRCOBandSet(CMU_HFRCOBand_TypeDef band) This function handles the band setting with the correct tuning value. Note: Happy Gecko and Zero Gecko devices do not support the 28 MHz band. The highest band available on these devices is 21 MHz. 1.4 Wait States When changing the core clock frequency (HFCORECLK) to a value above 16 MHz, the number of flash-access wait states must be set to 1 before the frequency switching. This is handled automatically by the CMU functions in the emlib, but if the user wants to make the change by writing directly into the registers, the number of wait states is modified using the MODE bitfield in the MSC_READCTRL register. silabs.com Smart. Connected. Energy-friendly. Rev. 1.08 3

Overview 1.5 Output Clock to Pin It is possible to configure the CMU to output clocks on two pins. This clock selection is done using CLKOUTSEL0 and CLKOUTSEL1 fields in CMU_CTRL. The pin location and enabling is configured in the CMU_ROUTE register. It is also necessary to configure the pins as outputs. Please refer to AN0012 GPIO for information on pin configuration. LFRCO or LFXO can be output on one pin (CMU_OUT1 on the Gecko STK) HFRCO, HFXO, HFCLK/2, HFCLK/4, HFCLK/8, HFCLK/16 or ULFRCO can be output on another pin (CMU_OUT0 on the Gecko STK) Note that HFXO and HFRCO clock outputs to pin can be unstable after startup and should not be output on a pin before HFXORDY/ HFRCORDY is set high in CMU_STATUS. 1.6 Software Example This document includes a software example that demonstrates how to enable and select clock sources and also do prescaling and changing HFRCO bands. In these examples, a timer is constantly running and, on each overflow, it toggles the LEDs on the STK and all user LEDs on the DK. The timer is clocked in 4 different ways that change in a constant loop after every 5 LED toggles. The program starts with the HF branch being clocked by the HFRCO at 14 MHz but prescaling it by 2 for the HFPERCLK, which drives the timer. At this point the timer is clocked at 7 MHz. Then the prescaler is removed and the timer is clocked at 14 MHz. Next the HFRCO band is changed to 21 MHz and the HF clock source is changed from the HFRCO to the HFXO running at 32 MHz. For Happy Gecko devices, the example switches from the HFRCO to the USHFRCO. Note: The maximum clock speed for Zero Gecko devices is 24 MHz, and the maximum clock speed for Happy Gecko devices is 25 MHz. silabs.com Smart. Connected. Energy-friendly. Rev. 1.08 4

Energy Modes 2. Energy Modes 2.1 Active Oscillators The energy mode of the EFM32 or EZR32 determines which oscillators are active. In EM0 and EM1, all the oscillators can be enabled and used as clock sources. Going down to EM2 causes the High Frequency Oscillators (HFXO, USHFRCO, and HFRCO) and AUXHFRCO to shut off automatically so the high frequency peripherals that run from them are no longer available. In EM3 the Low Frequency Oscillators will also stop, disabling the low frequency peripherals. The ULFRCO is always running from EM0 down to EM3 and is only disabled when the EFM32 or EZR32 goes to EM4. 2.2 Wake Up Considerations 2.2.1 Waking up from Energy Modes All the oscillators are able to run in EM1, so the core wakes up instantly from this Energy Mode. In EM2 and EM3, the High Frequency Oscillators are disabled and need to be enabled before the core starts running code. When waking up from EM2 or EM3, the core will run from the HFRCO by default, regardless of which oscillator it was running from before entering these energy modes. The HFRCO has a very short wake-up time and it takes only 2 µs before the CPU starts running code. The previously configured HFRCO band is also restored by hardware on wake up. The wake time from EM4 is 163 µs and the core will run the HFRCO at 14 MHz. silabs.com Smart. Connected. Energy-friendly. Rev. 1.08 5

Energy Modes 2.2.2 Restoring the Oscillator To use a different oscillator after wake up, the user must either enable and select the oscillator manually or use the energy mode functions from emlib, which can handle it automatically. If an oscillator (HFXO for instance) is manually selected as a clock source before the oscillator is stable, the system's behavior is undefined. The functions that send the EFM32 or EZR32 to EM2 and EM3 (see figure below) have a boolean parameter which indicates if the oscillator should be restored or not. If chosen not to be restored and the user wants to switch oscillator upon wake up, the oscillator will have to be selected manually. If chosen to be restored, the functions will handle the oscillator switching but the wake time will be longer than 2 µs. The oscillators running prior to going to EM2/3 will be enabled and the function will wait for the ready flag to be set before selecting it as a clock source. The ready flag is set when the start-up time is exceeded, which can be configured by the user in the CMU_CTRL register. The HFRCO will also be disabled after switching the clock source. If restore is false: HFCLK will be HFRCO Wake up time is 2 µs If restore is true: HFCLK will be the same prior to EM2 Wake up time is proportional to TIMEOUT value and inversely proportional to oscillator speed EM0 EM2/3 EMU_EnterEM2(bool restore) or EMU_EnterEM3(bool restore) Figure 2.1. Oscillator restoring For the LFXO or HFXO oscillators the start-up delay is set by the HFXOTIMEOUT or LFXOTIMEOUT bitfields in the CMU_CTRL register. The value in these bitfields configures the number of cycles before the ready flag is set and it can be adjusted by the user depending on the crystal characteristics (faster or slower start-up). A longer timeout (e.g. 16K cycles) will guarantee that the oscillator will be stable but it also accounts for a long wake up period if polling the oscillator ready flag. Selecting 16K cycles of timeout for a 32 MHz crystal means approximately 500 µs between start-up and the ready flag being set. The timeout can be configured to a lower value which means that the ready flag will be set sooner but the oscillator might not yet be stable. A recommended way of switching oscillator on wake up without stopping the processor or waiting for the ready flag is using interrupts. The user can enable the HFXO Ready Interrupt before going into EM2/3 and on wake up simply enable the HFXO and continue running code from the HFRCO. When the HFXO is ready it generates an interrupt and then the HF clock source can be switched without the risk of stopping the core. 2.2.3 Start-Up Current The start-up time can also be affected by the current supplied to the crystal oscillators, which can be adjusted in the HFXOBOOST and LFXOBOOST bitfields in the CMU_CTRL register. It is recommended to leave these bitfields at their default value which configures the EFM32 to supply the maximum current. silabs.com Smart. Connected. Energy-friendly. Rev. 1.08 6

Energy Modes 2.2.4 Glitch Detector When the HFXO starts running glitches can appear on the oscillator output while it builds up the oscillation. These glitches can be filtered away if the HFXOGLITCHDETEN bit is enabled. The detector flags all glitches shorter than 1 ns and no glitches longer than 4 ns. The start-up counter is reset each time a glitch is detected. High frequency glitch High frequency glitch Start-up Counter value Timeout period High frequency glitch HFXORDY is set Time Counter reset Counter reset Counter reset Figure 2.2. Glitch Detector If the glitch detector is enabled the start-up delay might be longer than the configured TIMEOUT. This depends on how many glitches are detected and thus how many times the start-up counter is reset. For optimization purposes the glitch detector can be enabled or disabled while using different timeouts to achieve a faster crystal wake up. silabs.com Smart. Connected. Energy-friendly. Rev. 1.08 7

External Clock Sources 3. External Clock Sources The EFM32 or EZR32 can be clocked by an external clock signal such as a square or a sine wave like a crystal or ceramic oscillator. The selection is done using the HFXOMODE or LFXOMODE bitfields in the CMU_CTRL register. For the EFM32 or EZR32 to run properly, these signals should comply with the characteristics defined in the next sections. 3.1 External Sine Wave To clock the EFM32 or EZR32 with an external sine wave, the BUFEXTCLK option should be set on either HFXOMODE or LFXO- MODE. This will couple an ac-coupled buffer in series with the input pin (HFXTAL_N or LFXTAL_N), which is suitable for an external sine wave (4-32 MHz for the high frequency HFXO and 32.768 khz for the low frequency LFXO). The sine wave should have a minimum of 200 mv amplitude single-ended. For more information, refer to application note, "AN0016: Oscillator Design Considerations". Note: The allowable HFXO frequencies are 4-24 MHz for Zero Gecko and 4-25 MHz for Happy Gecko. 3.2 Digital External Clock The EFM32 or EZR32 can also be clocked by an external digital signal connected to the same pins as in the previous section. The DIGEXTCLK option should be selected in HFXOMODE or LFXOMODE and this actually bypasses the oscillator. The signal should be a rail-to-rail square wave with 50% duty cycle (4-32 MHz for the high frequency oscillator and 32.768 khz for the low frequency oscillator). 3.3 Duty Cycle The recommended duty cycle for an external HFXO clock is 46% to 54% for correct operation. The key requirement is the minimum clock low time and minimum clock high time implied by this specification. If the minimum low and high times are not being met, then setup violations can occur in the digital logic. The recommendation is that designs obey the 46-54% duty cycle requirement at the frequencies that determine the number of wait states used, or 16 MHz and 32 MHz. Table 3.1. External Clock Requirements Key Frequency Minimum Clock Low/High Time 16 MHz 28.75 ns 32 MHz 14.38 ns For example, for an 8 MHz external oscillator, the 16 MHz minimum clock low and high times would be met with 23% duty cycle. silabs.com Smart. Connected. Energy-friendly. Rev. 1.08 8

RC Oscillator Calibration 4. RC Oscillator Calibration The CMU has built-in HW support to efficiently calibrate the RC oscillators at run-time. It compares the HFCLK frequency with a selected reference clock (CALCLK). When the calibration circuit is started, one down-counter (HFCLK counter) and one up-counter (CALCLK counter) are started simultaneously. When the down-counter has reached 0, both counters are stopped and software can read out the reference counter (CALCLK counter) and compare it with the start value of the down-counter. AUXHFRCO CMU_CALCTRL.UPSEL HFRCO LFRCO HFXO CALCLK CALCLK Counter (20-bit up-counter) start stop LFXO Set CMU_IF.CALRDY HFCLK CMU_CALCNT (20-bit down-counter) = 0? CMU_CMD.CALSTART Figure 4.1. Hardware Support for Calibration AUXHFRCO CMU_CALCTRL.UPSEL HFRCO USHFRCO LFRCO HFXO CALCLK CALCLK Counter (20-bit up-counter) start stop LFXO Set CMU_IF.CALRDY HFCLK CMU_CALCNT (20-bit down-counter) = 0? CMU_CMD.CALSTART Figure 4.2. Hardware Support for Calibration (Happy Gecko) silabs.com Smart. Connected. Energy-friendly. Rev. 1.08 9

RC Oscillator Calibration The down-counter initial value is set by writing to the CMU_CALCTRL register before starting the calibration. When the calibration is finished, the result for the reference counter is also read from CMU_CALCTRL. There is a function in the emlib to facilitate this task: uint32_t CMU_Calibrate(uint32_t HFCycles, CMU_Osc_TypeDef ref) The HFCycles is the value that the down-counter will start from and ref is the selected reference oscillator for the CALCLK. The function returns the number of cycles from the reference oscillator counted by the up-counter (CALCLK counter). The following formula can be used to calibrate the RC oscillators: CALCLK counter = HF cycles Ref cycles HF freq Depending on the desired frequency (HF freq ), frequency of the reference oscillator (Ref freq ) and top value for the down-counter (HF cycles ) the user can calculate the expected value for the up-counter (CALCLK counter ) and adjust the TUNING to obtain the desired frequency for the oscillator. 4.1 Software Example The cmu_calib project exemplifies how to use the calibration routine. It calibrates the HFRCO against the LFXO and displays the several TUNING values on the LCD until it reaches the correct value. The TUNING value for the HFRCO is purposely written with the highest number possible (0xFF) so that the HFRCO oscillates at a frequency higher than the default of 14 MHz. The calibration routine runs in a while loop and the TUNING value can either be decremented or incremented in every iteration until the expected value for the CALCLK counter is reached. Then the two last counter values are compared to see which one is closer to the one resulting from the formula and adjust the TUNING value accordingly. The final TUNING value is written on the LCD. If a scope is available, the HFRCO can be probed on the clock output pin (PC12 for the Gecko STK) during the calibration process. For Happy Gecko, the cmu_calib example is the same except it calibrates the USHFRCO against the LFXO. silabs.com Smart. Connected. Energy-friendly. Rev. 1.08 10

Revision History 5. Revision History 5.1 Revision 1.08 2014-02-25 Added Happy Gecko. Updated format. 5.2 Revision 1.07 2014-05-07 Updated example code to CMSIS 3.20.5 Changed to Silicon Labs license on code examples Added example projects for Simplicity IDE Removed example makefiles for Sourcery CodeBench Lite 5.3 Revision 1.06 2013-11-26 New cover layout 5.4 Revision 1.05 2012-11-12 Added software projects for the Tiny and Giant Gecko STKs. Adapted software projects to new kit-driver and bsp structure. 5.5 Revision 1.04 2012-04-20 Adapted software projects to new peripheral library naming and CMSIS_V3. 5.6 Revision 1.03 2011-10-21 Updated IDE project paths with new kits directory. 5.7 Revision 1.02 2011-05-18 Updated project to align with new bsp version 5.8 Revision 1.01 2011-05-16 Changed Figure 4.1 CALCLK mux selection bit, it was CMU_CALCTRL.REFSEL and now is CMU_CALCTRL.UPSEL. 5.9 Revision 1.00 2010-12-02 Initial revision. silabs.com Smart. Connected. Energy-friendly. Rev. 1.08 11

Simpilcity Studio One-click access to MCU tools, documentation, software, source code libraries & more. Available for Windows, Mac and Linux! www.silabs.com/simplicity MCU Portfolio www.silabs.com/mcu SW/HW www.silabs.com/simplicity Quality www.silabs.com/quality Support and Community community.silabs.com Disclaimer Silicon Laboratories 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 Laboratories 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 Laboratories 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 Laboratories 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 must not be used within any Life Support System without the specific written consent of Silicon Laboratories. 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 Laboratories products are generally not intended for military applications. Silicon Laboratories 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, CMEMS, EFM, EFM32, EFR, Energy Micro, Energy Micro logo and combinations thereof, "the world s most energy friendly microcontrollers", Ember, EZLink, EZMac, EZRadio, EZRadioPRO, DSPLL, ISOmodem, Precision32, ProSLIC, SiPHY, USBXpress and others are trademarks or registered trademarks of Silicon Laboratories Inc. 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