My Giant Gecko Developer Kit seems to have problems booting up. Sometimes it gets stuck in a loop with the red LED labeled RESET (schematic component LED1) on the GG990 MCU processor plug-in board (BRD3600A) repeatedly turning on and off for around 1.5 minutes before the MCU finally boots and begins running code.
When this happens, the TFT LCD screen does not come on once the board eventually boots and it does not temporarily flash like it does during a normal boot.
Is this a problem you have experienced before and can it be fixed?
Diagnosis
You have encountered a bug in the Developer Kit board controller firmware that introduces a long delay before the MCU boots and that prevents the TFT LCD from powering up.
Solution
A new, common Developer Kit firmware release is now available in Simplicity Studio that resolves this problem. The firmware update applies to all Developer Kits (Gecko, Giant, Leopard, and Wonder). To install the new firmware:
1. Make sure your installation of Simplicity Studio is up-to-date. Click the Update Software icon in the upper right corner and allow any updates to be downloaded and installed.
2. Make sure your Developer Kit is plugged in and recognized by Simplicity Studio...
3. Now click on the Kit Manager...
4. You should be prompted to install new firmware (you may need to restart Simplicity Studio if the upgrade prompt does not pop up automatically).
5. Allow the new firmware to install. This takes about 3 or 4 minutes.
6. Your board will restart after installation, and Kit Manager will report that the firmware has been updated to the new version.
AN0038 Operational Amplifiers covers use of the op-amps present on the Giant, Leopard, Tiny, and Wonder Gecko devices. The application note includes many examples, but in all of them, you cannot see how the amplifiers work without connecting some kind of external signal to the amplifier. This is, of course, what the op-amps are intended to do, but wouldn't it be nice to have the Gecko device generate the op-amp input instead?
The provided example code does just that, using DAC output 0 to generate a low amplitude waveform that is then fed into OPA2. The code can be compiled to configure OPA2 for inverting or non-inverting operation. A couple of jumper wires are needed to connect the op-amp inputs to DAC output 0 and either ground (non-inverting) or DAC output 1 (inverting) depending on how the code is compiled.
While this code was tested on the Wonder Gecko Starter Kit (STK), it will also work on the Giant, Leopard, and Tiny Gecko STKs. In fact, the connections made with the jumper wires are identical because the expansion header pin out on all of these STKs is the same.
For non-inverting operation, connect the expansion header pins as follows:
When the code is running, the original and amplified signals can be monitored with oscilloscope probes connected to pins PB11 (DAC output 0) and PD5 (OPAMP_OUT2), respectively.
Before compiling the code, you need to decide whether to configure OPA2 for inverting or non-inverting operation. A single macro definition must be left in the code or commented out to make this determination. Go to line 54 in dac_opa_example.c and make sure...
//#define INVERTING
...is commented out, as shown above, for non-inverting operation.
On the other hand, make sure...
#define INVERTING
...is uncommented, as shown above, to demonstrate inverting operation. In either case, make sure the appropriate expansion header connections are made, or you'll probably only see the original waveform on DAC output 0 and not the amplified waveform on OPAMP_OUT2.
The program operates in a simple enough fashion:
A sawtooth waveform with max/min values of ±600 counts is centered around the DAC midpoint of 2048.
DAC0 is setup with a reference of 2.5V and a 1 MHz clock.
The frequency of the output waveform is set to 10 kHz based on the top value for TIMER0's counter, which generates an interrupt upon overflow.
TIMER0's interrupt handler updates the DAC output and updates the pointer to the next value in the waveform table.
OPA2 is setup for inverting or non-inverting operation depending on the conditional compilation of the code as determined by the #define INVERTING macro cited above.
For inverting operation, DAC output 1 is set to 2048, which is VREF divided by 2. The connection between PB12 and PD4 (the non-inverting input to OPA2), provides the positive voltage around which the waveform produced on DAC output 0 is inverted. DAC output 1 remains unused when the code is compiled for non-inverting operation and VSS is connected to PD3 (OPA2's inverting input) instead. In both cases, OPA2's gain is set to 2 but is easily changed.
Once everything is setup, the MCU enters and remains in EM1, waking only to service the TIMER0 overflow interrupt.
Once the code is compiled and running on the STK, the original (shown in gold) and amplified waveforms look like this for inverting operation...
...and like this for non-inverting operation:
The attached project file EFM32_DAC_OPA_Example.zip is imported into Simplicity Studio as follows:
In the Simplicity Studio IDE, go the File menu and select Import...
Under General, select "Existing Projects into Workspace", then click Next.
For "Select archive file", browse to wherever you downloaded the EFM32_DAC_OPA_Example.zip file and select it.
Make sure Copy projects into workspace is checked.
Click Finish.
From here, have your STK prepared as explained above, connect it to your PC, build the project, and run it as you would anything else in Simplicity Studio. Comment or uncomment the #define INVERTING line and change the STK expansion header connections to switch between inverting and non-inverting modes as desired.
The first few sections discuss using C2 and/or JTAG interfaces with a production programmer, which is not applicable to the classic EFM32 devices (which use SWD as the debug interface). However, the page does address EFM32 programming by:
The "Programming a Small Number of Flash MCUs for Development Purposes" note refers to using a ToolStick platform to program 8bit devices. Similarly, you can use a EFM32 Starter Kit ("STK") - and the on-board Segger J-Link debugger - in "Debug: OUT" mode to debug and/or program external targets. See more info on Debug modes in the User Manual for your STK. (For a low-level treatment of the SWD interface, see Application Note "AN0062: Programming Internal Flash Over the Serial Wire Debug Interface")
The "In-House Programming" section is also applicable to EFM32 devices. As stated there, contact your local Sales Representative to inquire about this Silicon Labs service.
The "Third Party Programmers" section provides a table of known programmer devices to interface with your custom hardware. See the "Description" field for options that include support for EFM32 devices.
The "Third Party Programming Services" section lists some options that can provide production programming for you. Contact these where convenient, and feel free to reach out to your local distributor to inquire about volume programming services they may provide.
Can the AAP Expansion Sequence/Extension Window be used on EFM32 Gemstone devices?
Answer
The Authentication Access Port (AAP) is a controller connected to the SWDIO/SWCLK interface that is only visible when the flash Debug Lock Word (DLW) is set. The AAP can be used to perform a full erase of a debug-locked device, thus unlocking it.
However, the window to issue commands using the AAP is a fairly short 47 microseconds unless it is extended using the AAP expansion mechanism, an I/O pulsing sequence applied to the SWDIO and SWCLK pins before the initial 47 microseconds expires. Use of the AAP expansion mechanism is documented in the Debug Lock and Erase section of each reference manual and in application note AN0062 Programming Internal Flash Over the Serial Wire Debug Interface. Note that the original EFM32 Gecko device does not support the AAP expansion mechanism.
In practice, the start of the AAP window is not exactly deterministic because it depends on the start-up of analog circuits related to the clocks. For this reason, the EFM32 Gemstones have replaced the traditional AAP window and expansion sequence with a more robust mechanism. This and other changes have prompted a major revamping of the AAP, including the addition of several new registers.
One of these registers, the AAP Control Register (AAP_CTRL at offset 0x00C) contains a bit specifically to stall the system bus. When SYSBUSSTALL is set, the system remains stalled until this bit is cleared. What is particularly useful about SYSBUSSTALL is that it can be set while RESETn is asserted. This completely eliminates the need for something like the AAP expansion sequence and resolves the problem of the indeterminate starting point of the AAP window.
After setting SYSBUSSTALL, the AAP command key can be written to the AAP Command Key Register (AAP_CMDKEY), which unlocks access to the AAP command register (AAP_CMD). Once the command register is unlocked, SYSBUSSTALL can be cleared, and the DEVICEERASE command can be issued to unlock a locked device and restore debug access.
Where can I find Export Classification Control Numbers (ECCN) for Silicon Labs devices?
Answer
Requests for ECCNs can be submitted through our Request for Information (RFI) service. Corporate, product, and environmental data is available to all registered users via an online database search by part number. To initiate an RFI, please login to your Silicon Labs account at the link below:
The following step by step instructions will help you access the Silicon Labs Quality page and use the part number search to download ECCN information and other quality and environemtntal data for a specific device:
1. Please note that you must register for a www.silabs.com account to access the Quality and Environmental portal.
(or click Community & Support->Quality & Environmental Information)
3. Click either the large Quality or Environment links at the bottom left of the page - both pages contain an access portal to the Corporate, Product, and Environmental Data Search.
4. If you are prompted, please log in.
5. Enter a specific part number and click the right arrow to search.
6. Select the exact orderable part number from the search result list and click the right arrow to continue.
7. Check [Product Information] > [Product] > [ECCN] and click the right arrow to continue.
8. The ECCN is now displayed for the selected device.
How do you get Simplicity Studio™ to generate a mixed C and assembly language listing file?
Answer
C/C++ programs written for EFM32 are compiled with GCC/G++ in Simplicity Studio, so it is a simple matter to use one of the components of the GNU binutilis package to generate a listing from the ELF output file generated by GCC/G++.
Simplicity Studio, conveniently, has a way to execute a user-specified post-build step after linking a project. Bring up the project properties in Studio by selecting the project in the Project Explorer pane of the IDE and selecting Properties from the Project menu (this is also an option when right-clicking on the project in the explorer pane) or using the Alt+Enter keyboard shortcut.
Expand the project properties C/C++ Build options tree, select Settings, then click the Build Steps tab. Under "Post-build steps" enter...
...for the command. In the "Description" box, enter something like "Generate listing", then click the Apply button, followed by OK.
The options specified for the objdump command will generate a C source listing interspersed with the compiler-generated assembly code. Symbols generated by the compiler will also be included. Refer to the official manpage at...
...for additional flags that can be passed to objdump. Keep in mind that the version of binutilis included with Simplicity Studio may not always be in sync with the latest release hosted by the Free Software Foundation, so if building a project generates a binary but not a listing file, the likely cause is an invalid flag.
The listing output by objdump will be found in a project's "GNU ARM v4.8.3 - debug" folder, the same place as the AXF file used by the debugger and the HEX file that is programmed into flash on the target MCU. The LST file is a plain text file that can be opened in any text editor.
When using the back-up power domain (BUD) can I also use an external reset device?
Answer
An external reset device is not recommended to be used with the BUD. The low voltage as driven by the external reset at the reset pin will cause the device to not enter the back up domain.
The Biometric EXP software is not offered in Simplicity Studio. How do I go about receiving the example code?
Answer
The Biometric EXP example code was previously a part of the Simplicity Studio releases. The examples will be added back in a future release.
If you check the Software Examples in the latest Simplicity Studio release and do not see the Biometric EVB example listed, you can still receive the examples by placing a support request to the Optical Sensors support queue.
The code that is available via these examples are static heart rate monitoring algorithms designed for fingertip applications. There are other code examples using the HRM for the wrist wearables that are available under NDA. Please contact your local sales representative for more information on signing an NDA and receiving the additional code.
32-bit Knowledge Base
EFM32 Development Kit gets stuck in a loop before powering up
Using OPA2 in Inverting and Non-inverting Modes
Programming Options for EFM32 Microcontrollers
Is a "Statement of Volatility" available for your EFM32 MCU products?
What flash technology is implemented on the EFM32WG?
Changes to Authentication Access Port (AAP) on EFM32 Gemstones
Where to obtain ECCN numbers
Question
Where can I find Export Classification Control Numbers (ECCN) for Silicon Labs devices?
Answer
Requests for ECCNs can be submitted through our Request for Information (RFI) service. Corporate, product, and environmental data is available to all registered users via an online database search by part number. To initiate an RFI, please login to your Silicon Labs account at the link below:
https://www.silabs.com/support/quality/Pages/RoHSInformation.aspx
The following step by step instructions will help you access the Silicon Labs Quality page and use the part number search to download ECCN information and other quality and environemtntal data for a specific device:
1. Please note that you must register for a www.silabs.com account to access the Quality and Environmental portal.
2. Go to the Silicon Labs Quality page at
https://www.silabs.com/about-us/corporate-responsibility
(or click Community & Support->Quality & Environmental Information)
3. Click either the large Quality or Environment links at the bottom left of the page - both pages contain an access portal to the Corporate, Product, and Environmental Data Search.
4. If you are prompted, please log in.
5. Enter a specific part number and click the right arrow to search.
6. Select the exact orderable part number from the search result list and click the right arrow to continue.
7. Check [Product Information] > [Product] > [ECCN] and click the right arrow to continue.
8. The ECCN is now displayed for the selected device.
Generating a listing file in Simplicity Studio™ for EFM32 Devices
Back-up Power Domain
Biometric EXP software