Silicon Labs EMF8BB5x and Simplicity

I purchased a “Busy Bee” EMF8BB51xxx processor test board (for around $15) (BRD2700A, Rev A01).

That board has an EMF32GG12 on it, which is programmed with the Segger J-Link firmware, as well as a 20 pin QFN package 8051 Busy Bee processor. The EMF32 processor handles USB as well as communicates with the EMF8 MCU.

I chose this part to test due to the 4 Configurable Logic Units, which should allow me to replace some functionality of the PSOC5LP processor. (This is only due to that processor being unobtanium, for now. Refer to the movie Avatar for the “unobtanium” quote.)

Starting up with the Processor and the Development Kit

Silicon Labs is a step ahead of Microchip. I was able to plug in their board, have it recognized by the Simplicity Studio. It configured the board and updated firmware, and suggested a “blinky” project. I loaded the Blinky project, and within an hour I was debugging the code using single step and breakpoints. The 8051 debugging is fast and accurate. Breakpoints occur where you expect them, unlike the Microchip debugging system.

Most of the hour was spent downloading for configuring and registering. The Simplicity Studio build system very intelligently uses “wine crossover” and executes the Keil assembler/compiler development suite executables. The build is very fast.

Still Not As Good As PSOC Creator For Ease Of Use

It took several hours to try to modify the Blinky code and disable the watchdog timer. This is partly due to the fact there is no specific documentation for the EMF8BB5x family. I had to Google, dig, and experiment. Hopefully, I can save you some grief. Most of my attempts failed. Also, Google was of little help, as the SiLabs forums are not well enough traveled to show up in generic google search terms.

There are some “API” functions from SiLabs, but they are hidden, and are not accessible from the standard demo project template without some work. These functions and files could have been made available, but, eclipse. It is greedy for files and if you make a reference to them, you will end up compiling the world. And most of the time that compile fails because eclipse is too greedy.

Under PSOC Creator, I did not have to guess. I was able to double click on the component, choose data sheet, and then read about the API available. I then used the API, and the system built and worked.

Shortcut Information For Simplicity Studio Users On Mac

In brief, SiLabs hid the sdk inside the application for simplicity studio, inside the eclipse folder, inside the developer folder, inside the 8051 folder, inside the Device folder, inside the folder for that part, inside the peripheral_driver folder, inside the src folder. Whew! To start the access effort, open the Applications folder, right click on Simplicity Studio App, select “Show Contents.” This is not a normal operation for Mac Users.

Then navigate to Contents->Eclipse->developer->sdks->8051->v4.2.4->Device->EFM8BB51->peripheral_driver->inc. That directory may already be shown in the project pane, once you double click on “includes.” If not, right click on the project line in the project pane, select “properties” at the bottom, and add that directory’s path to your Paths and Symbols part of the “GNU C with IAR” section under the includes tab. Ugh.

That step will add the ability to find the generic SiLab driver code include files for the 8051. You should see files adc_0.h through wdt_0.h in your project pain under that directory. That makes these header files accessible through something like #include <adc_0.h>.

Once that is done, go to one of your source files in the project pane (like Interrupts.c), right click on it, and choose Open Command Line Here. In that command line, you can then either copy from the Contents->Eclipse->developer->sdks->8051->v4.2.4->Device->EFM8BB51->peripheral_driver->src folder to your source code folder any of the “library” files you need to use, or you can create a “soft link” (ln -s) to that file, which should be write protected.

I did that so I could add the function WDT0_stop() to the Blinky project in the SiLabs_Startup(void) function. That stopped the Watchdog Timer from firing every umpteen seconds.

What took 5 minutes on PSOC Creator, took over 2 hours under Simplicity Studio. That is not completely SiLab’s fault. It is the fault of the Eclipse environment. However, SiLab chose Eclipse, so they started the nonsense. SiLabs have put significant work into Eclipse to get it to the point you can actually start a project and have it compile and debug with minimal user configuration pain! That is generally unheard of in the Eclipse world.


My initial heat test has shown promise. The board works up to 320F, where it appears the LDO voltage regulator on it has a thermal shutdown trigger. Until that point, the processor reboots and runs its internal code quite well. I suspect with proper power supply, it will work up to 350F, where it will be golden for us.

Hopefully, this helps someone else out there. I am impressed with how far SiLabs has taken Eclipse. They need to move it farther down the road and correctly identify and set up a peripheral driver library that is automagically accessible. In addition, they need a block diagram of the internals of the processor, where you can double click and get the driver API code information, as well as info about the peripheral. The driver API needs to be automatically included when referenced in code through the #include mechanism. At that point, it would equal PSOC Creator (except for No Schematic Editor). Even so, it is an environment that can be used with much less hassle than other Eclipse systems.


Add a Comment

Your email address will not be published. Required fields are marked *