In a previous article, I introduced the defining characteristics of microcontrollers, explained the basic aspects of their internal structure, and provided some general ideas about how a microcontroller could be used in various types of embedded systems.
In future articles, I plan to explore the techniques and processes associated with implementing microcontrollers and developing firmware, but before you can design an MCU-based product, you need to know which device you will be using. The skills and techniques involved in the design of microcontroller-based systems are certainly not specific to one part number or even one manufacturer, but if you don’t already have extensive expertise in this field, it’s a good idea to focus on one device (or one device family) and then branch out later on, after you’ve gained some solid experience.
Choosing a Manufacturer
The list of semiconductor companies that sell microcontrollers is rather long. However, I highly recommend that you start with a manufacturer that places great emphasis on their microcontroller category. This will ensure that you have access to an abundance of helpful design resources—app notes, example code, a high-quality integrated development environment (IDE), convenient programming tools, and so forth.
Simplicity Studio, a free IDE from Silicon Labs, gives you one development environment that supports numerous different microcontrollers.
Also, manufacturers that have a more extensive MCU product line allow you to more easily fine-tune your component selection according to the requirements of each application, because you can choose a new part number without subjecting yourself to the drastic changes caused by switching from one manufacturer to another. It can be stressful and time-consuming when you have to learn a new IDE, new register configurations, new coding techniques, a new documentation structure, etc., and I still avoid these inconveniences whenever possible.
As you can see in this selection guide from STMicro, you can limit yourself to MCUs sold by one manufacturer and still cover a wide variety of applications.
If your experience with microcontroller development is still fairly limited, I recommend that you choose one of the following manufacturers: Texas Instruments, STMicroelectronics, Silicon Labs, or Microchip. (Atmel should definitely be included in this list, but it was acquired by Microchip in 2016.)
The next step is to identify your most important and specific requirements. Many types of processing and peripheral functionality will be available in just about any modern microcontroller—for example, you won’t need to go searching for an MCU that offers basic serial communication, clock frequencies above 10 MHz, adequate quantities of Flash and RAM, an internal oscillator, general-purpose timers, or an integrated debugging module (these often use the JTAG interface).
The following subsections provide some examples of “less-standard” functionality that would help you to narrow down the list of microcontrollers that might be appropriate for a given project.
You won’t have any difficulty finding an MCU that includes an analog-to-digital converter, but DACs are significantly less common. They are, nevertheless, very useful in certain applications, and an integrated DAC is certainly much more convenient than an external DAC.
I generated this sinusoid using the 12-bit DAC integrated into a SAM4S microcontroller from Atmel.
I just finished telling you that ADCs are common, and that’s true, but I should point out that many microcontroller ADCs are in the low-to-moderate performance range. If you need an ADC with an unusually high resolution or an unusually high sampling rate, you will have to make this a priority in your selection process. Years ago I found myself in this exact situation, and if I recall correctly, nothing could compete with the C8051F060 from Silicon Labs (it has two integrated ADCs that can perform 16-bit conversion at one million samples per second).
If you want a microcontroller that is more compatible with computationally intensive DSP functionality, you need to prioritize devices that support high processor frequencies. Silicon Labs has two 8-bit families that operate at 100 MHz, and both STMicroelectronics and Microchip have high-performance 32-bit MCUs that operate at 120 MHz.
Universal Serial Bus (USB)
The USB interface is a dominant form of serial communication. I have found it to be a highly effective means of transferring data between an embedded device and a PC, and within the context of consumer electronics it is indispensable. If you’re looking for a compact, straightforward method of incorporating USB connectivity into your system, I recommend that you focus on microcontrollers that incorporate a USB module. I’ve used the EFM8 Universal Bee from Silicon Labs, and Microchip offers 8-bit, 16-bit, and 32-bit USB microcontrollers.
Capacitive Touch Sense
Capacitive touch sensing is an increasingly popular form of user interface. Though capacitive touch sense is conceptually simple, the actual implementation can be rather complicated, and it is definitely helpful to have a microcontroller that is specifically intended to support this type of interface. As far as I know it is still somewhat unusual for microcontrollers to have a capacitive-touch-sense peripheral, so you’ll need to prioritize this feature during part selection.
My colleague Mark Hughes designed a capacitive touch interface around an MSP430 microcontroller from Texas Instruments.
Cost and Package Size
It is difficult to place these parameters in a specific portion of the part-selection process, because their importance varies greatly from one application to another. In some cases you have plenty of board space and can completely ignore the size of the package, and cost is often irrelevant for engineers who are developing prototypes or systems that will never be produced in large quantities.
On the other hand, there are numerous electronic products that must be very small, very inexpensive, or very small and very inexpensive. In these situations you need to be continually cognizant of price and/or package size as you’re gradually filtering out parts based on your critical parameters and your preferred manufacturers.
Everyone from hobbyists to professional engineers can benefit from a carefully designed, affordable development board. This is usually the most painless and reliable way to evaluate a microcontroller and gain some familiarity with its programming interface and functional details. Once you’ve narrowed your search to a few promising part numbers, check for a reasonably priced evaluation board before you make the final decision.
I hope that this guide helps you to navigate the sometimes intimidating process of choosing one microcontroller from among the thousands that are commercially available. After you’ve chosen a device, it’s time to start reading the datasheet and designing the system, and we’ll take a look at these topics in future articles.
Intro to Microcontrollers
This article is part of a larger series. You can find the rest of the articles here:
- What Is a Microcontroller? An Introduction to the Central Component in Countless Electronic Devices
- How to Read a Microcontroller Datasheet: Introduction and First Steps