Is there a bootloader pre-loaded on the EFM32PG and EFM32JG?
The revision 0.31 of the datasheet mentions a bootloader in reserved flash, however according to errata BL_E201, this bootloader is not yet available. The bootloader will be available on revision C. The revision of the part can be determined by the first letter of the trace code. See the package marking section of the datasheet (p83 and p88) to determine the part's revision.
The bootloader can be disabled by clearing bit 1 of CLW0 (Config Lock Word), at address 0x0FE041E8 . It can be cleared by firmware or debugger, but can only be reset (erased) by the debugger.
What is Simplicity Commander and how can I use it?
Simplicity Commander is a utility that provides GUI and command line access to the debug features of an EFM32 device. It allows you to flash firmware, update the kit firmware, and lock, or unlock debug access. This tool is intended to replace eACommander.
As of 7/2017, Simplicity Commander is now available as a standalone utility (in addition to the Simplicity Studio-based install/launch options listed below). See the download links listed under the "In-System Programming" section at Production Programming Options for Silicon Labs Devices. Installers and release notes are available for Windows, Mac, and Linux. Please download the installer for different platform here:
See the included README.txt for additional guidance and dependencies (Commander currently requires the SEGGER J-Link software pack to be installed).
Simplicity Studio v3
In SSv3, if wireless support is installed, Simplicity Commander will be available from the "File->Simplicity Commander" menu in the IDE. It will also be installed in C:\SiliconLabs\SimplicityStudio\v3_3\bgtool\commander (depending on your Studio install path). It will also be available, along with a reference guide at C:\SiliconLabs\SimplicityStudio\v3_3\SimplicityCommander
Simplicity Studio v4
In SSv4 the commander binary can be run by going to Preferences->Simplicity Studio->Adapter Packs, selecting Simplicity Commander->commander: commander.exe and clicking on "Bare run". See picture. The binary can also be run directly from C:\SiliconLabs\SimplicityStudio\v4\developer\adapter_packs\commander\commander.exe
In SSv4, Simplicity Commander can be opened from the Launcher perspective. Click the wrench icon near the top left corner, then select Simplicity Commander.
How do I generate 44100 Hz and 48000 Hz I2S master clocks on EFM32 USART?
We need to use a dedicated crystal for HFXO to generate 44100 Hz and 48000 Hz I2S master clock on EFM32.
For 44100 Hz, 16-bit Stereo signal:
11.2896 MHz = 44100 x 16 x 2 x 8
16.9344 MHz = 44100 x 16 x 2 x 12
33.8688 MHz = 44100 x 16 x 2 x 24
45.1584 MHz = 44100 x 16 x 2 x 32
For 48000 Hz, 16-bit Stereo signal:
12.288 MHz = 48000 x 16 x 2 x 8
18.432 MHz = 48000 x 16 x 2 x 12
24.576 MHz = 48000 x 16 x 2 x 16
49.152 MHz = 48000 x 16 x 2 x 32
How do I enable code correlation for use with Simplicity Studio Energy Profiler with my EFM32 project?
Code correlation is supported on the EFM32 devices using Simplicity Studio Energy Profiler, including devices on an EFM32 STK and external devices on a custom board. Some examples available in Simplicity Studio have this functionality enabled already, whereas for others and for user developed programs, this functionality will have to be added. It is important to note that on an STK or a custom board, the SWO pin will have to be connected to the debugger and enabled in the user program (along with a connection to VMCU, GND, SWCLK, and SWDIO).
Luckily, adding this functionality is fairly simple using the emlib device firmware library. First, you must make sure that the board support package directory is included in your project include paths (this path is probably something similar to "C:\SiliconLabs\SimplicityStudio\v3\developer\sdks\efm32\v2\kits\common\bsp"). This can be done by opening the project properties window and expanding [C/C++ Build]>[Settings] and then [Tool Settings]>[GNU ARM C Compiler]>[Includes]. Then Click the Add icon, and add the path :
Next, include a copy of "bsp_trace.c" (it is in that same directory) in your project build. Then, add the following code to your initialization before your main loop to enable SWO output, thus enabling code correlation:
/* If first word of user data page is non-zero, enable eA Profiler trace */ BSP_TraceProfilerSetup();
You can look in "main.c" in the example "SLSTK3401A_powertest" or any other EFM32 example that implements code correlation to see how this function is used.
For information on the extra steps that must be taken to enable code correlation and Energy Profiler functionality for an device on an external device, please see the following knowledge base article: