Why is this cool?
Silicon Labs has designed a series of 8-bit microcontrollers that specifically target certain use-cases. They come with excellent documentation and a breathtaking amount of example code to get every feature and aspect of the microcontroller working. When you combine this with an affordable J-Link enabled development board and a gorgeous cross-platform, Eclipse-based IDE, you practically have your next project built.
Who should care?
If you are looking for the next step from Arduino, I strongly recommend Silicon Labs EFM8 series of microcontrollers, mainly for two reasons:
- Excellent software support and documentation. I cannot emphasize how many times I have picked products just because of how they are documented. Documentation will save you a lot of time and heartache down the line.
- Emphasis on registers. Silicon Labs emphasizes the use of registers when programming instead of providing an overarching SDK. This is a break from Arduino and provides a good opportunity to learn another form of programming. Instead of referring to the API of the SDK, instead you will just refer to the datasheet of the device. Don't be afraid! Using registers is as easy as referring to the datasheet.
While the EFM8 series does not have a huge latitude in terms of capabilities, they do come with very specific features:
- Laser Bee: Precision analog sensing projects. Inbuilt DAC and ADC.
- Universal Bee: USB-based projects. USB library, on-chip 3.3V regulator
- Busy Bee: General purpose.
- Sleepy Bee: Low power projects. Touch sensing.
These features are very targeted and will actually help you to narrow down the scope of your project. For example, perhaps you want to build a keyboard or something that interacts with the computer, then the Universal Bee would be good choice!
I found that a lot of the peripherals make sense once you consider them in light of their use cases. For example the Laser Bee only has a I$^2$C slave. Why is that? Well if you are using the Laser Bee, it is probably to take advantage of its ADC, and correspondingly might only be using it as a data collector for another MCU, therefore, having only a slave module makes sense. You are probably not using the Laser Bee as a general purpose MCU. Another interesting inclusion I want to point out is the 3.3V regulator in the Universal Bee, which is obviously for USB projects. I have never used a USB connector without a 3.3V regulator in my designs, and for modern projects, a lot of your ICs and parts will only be 3.3V compliant. Having the regulator in the IC saves on the parts required and board space. There is a lot of thought that goes into the design and this translates into some really obvious choices that would make you go 'huh, I guess that actually makes sense. I wonder why no one else does this?'
The development board costs as much as an Arduino: $30. But these boards come with current sensing from 100mA down to 10nA, which more than justifies the price tag. They also come with a SHARP Memory LCD (which is currently going for $24 on Adafruit) can you can use for debugging, a joystick, and two buttons. On top of that, you can also use these boards as programmers for other custom boards that you might design, or even other microcontrollers that use the J-Link for programming.
When you first download Simplicity Studio, you will be greeted with this screen:
The launcher detects any development board that you plug in. The neat thing is that it loads up the correct demos and examples for the correct microcontroller. This is in stark contrast to Atmel, where code examples are not only hard to find, but are sometimes non-existent for the chip you are looking for. What I like about this view is that the "New Project" and examples are right in the middle of the page, easily found.
On the top right are your views, and they are actually quite well arranged. In logical order, you start with the Launcher, and then go into the IDE to program, after that you either use the Energy Profiler to determine how much power your system is drawing or to Debug to hunt for bugs. The last option, Configurator, was added by me.
This is a clean, usable interface, with absolutely no extraneous buttons. There is no debug button or build button in the Launcher view, which makes sense because at this point you don't have any code to debug yet.
The Eclipse-based IDE feels very zippy compared to Atmel Studio.
The Configurator is Silicon Lab's answer to ST Microelectronic's CubeMX. I was worried for a second about configuring a new microcontroller for example projects but this set me at ease immediately. It comes with the same indispensable view of the pins as defined on the microcontroller itself, very useful for building a circuit or debugging one.
This works the same way as the CubeMX: pick a pin, configure it, save, and the project's code is updated automatically. I did prefer CubeMX's layout, because I felt it was clearer. It is sometimes hard to keep track of what must be changed in the Configurator, and I ran into an issue where I kept forgetting to set up the timers properly for the interrupts, but I expect more time with this system would reduce this occurrence. I found it useful that the system does warn you if anything is wrongly configured immediately.
One thing that I liked about the Configurator over CubeMX is that you can take any example project and view the configuration in Configurator instead of having to comb through the startup file. CubeMX is not as strongly integrated into the IDE and example projects, and I felt this was another example where SiLabs' design of the entire development process shined through.
The IDE itself had a great interface, primarily because only the main icons are set up organized in terms of priority and use from the left to the right, with the green debug icon, the icon I click on the most often, being the first in the list. This is the default view, clean, simple, and unobtrusive, and you can definitely add more options as you get more experienced.
The crossbar helps you to route GPIO signals to any unused pin.
Why these microcontrollers?
My interest in exploring the features of this line of microcontrollers is to establish a small microcontroller for simple projects. The other contenders are the STM32 line, the ATSAMD10 line, the ATTiny85, and the Padauk line.
Update: I no longer recommend the ATTiny85 for development.
If I am sensing and just doing a simple conversion of the data, I tend towards the ATTiny85 with Arduino support. However the ATTiny85 has some drawbacks because debugging is a little challenging without a UART output. This recently became very important in one of the projects that I was working on and was actually the main impetus for me to start looking again.
Atmel's support and documentation for their chips is patchy, so I decided against using Atmel Studio for programming
The STM32 line is limited in terms of the physical size of the microcontroller. The smallest they offer is a TSSOP package on the lowest end, which is about 4 times the size of a QFN module with the same number of pins. While this saves on soldering complexity, it sacrifices a lot on the board space.
However, having the CubeMX take care of peripheral configuration is a pure joy and a big reason why I would want to work with the STM32.
The ATSAMD10 has a QFN package, however it uses the clunky Atmel Studio, and updating the peripherals takes a lot of time because the ASF Wizard is slow to launch. While I have quite a bit of code written so that I can create projects easily, the lack of an auto-configuration tool like the CubeMX has made it very tedious to create new projects.
The Padauk MCU line is incredibly cheap, and yet they are easy to program because of the admittedly smaller register set due to the lack of any hardware peripherals. However, they are only available through sources in China and Taiwan, and is generally not available in QFN packages.
Almost all of the Bee series MCUs come in QFN packages. This is a definite plus for me because a small physical footprint means a smaller board. They also come in friendlier SOIC-16 and TQFP packages.
Strong software support and great documentation already make this a winning entry. With easy-to-use hardware kits and tight integration between software and hardware, it makes SiLab's entry hard to beat. Not to mention the cost, where you can get ICs in the sub $0.50 range in single quantities. The intangibles, like IC that is easy to obtain from major distributors, as well as a 10 year commitment, puts it over cheaper ICs like Padauk.
This is definitely a chip you would want to have in your back pocket. And if you are interested, I'll let SiLabs themselves help you chose the best microcontroller in their EFM8 line for you.