Microcontroller or Microprocessor: Which is Right for Your New Product?

Microcontroller or Microprocessor: Which is Right for Your New Product?

Discover how to choose the very best microcontroller or microprocessor for your specific electronics product.

Just about any new electronic product requires some sort of “brains”. The question though is what type of brains does your product really need? There are two choices: a microcontroller unit (MCU) or a microprocessor unit (MPU).

As the name implies a microcontroller excels at “controlling” other hardware components (sensors, switches, motors, etc.), whereas a microprocessor excels at “processing” large amounts of data very quickly.

FREE GUIDE: Introduction to Microcontrollers

That being said, microcontrollers are able to also process data, and microprocessors are able to control other devices. But each excels in one area.

Selecting the correct option is one of the most important first steps to developing your new electronic product.

microcontroller contains a central processing unit (CPU), memory, and peripherals all embedded in a single chip. A MCU is a highly integrated computer chip designed to mostly stand on its own without the need for external support chips.

The central processing unit inside of a microcontroller is essentially the same as a microprocessor. So fundamentally a microprocessor is just a CPU. On the other hand, a MCU includes a CPU plus memory and peripherals so:

Microprocessor (MPU) = CPU

Microcontroller (MCU) = CPU + Memory + Peripherals

The first rule to remember is that whenever it is possible, use a microcontroller! Only consider a microprocessor if it is absolutely required. I estimate that probably 90% of the product ideas that are presented to me can be best served with a microcontroller.

Only about 10% of products are really complex enough to warrant a faster microprocessor.

I recommend approaching this decision by assuming your product can use a microcontroller, until you can prove otherwise.

Although, there will be some applications that are best served with both a microcontroller and a microprocessor. For instance, an advanced robot with artificial intelligence, facial recognition, speech processing, and a complex graphical user interface will require a fast microprocessor.

On the other hand, the robot also needs to incorporate sensors and motors. Those functions are best controlled by a microcontroller separate from the core microprocessor. The microcontroller will act as a subsystem that interfaces with the microprocessor.

Arduino / Raspberry Pi

If you already have a Proof-of-Concept (POC) prototype based on an Arduino, then your choice is much easier.

An Arduino is based on a microcontroller, and a rather simple one at that. If you’ve been able to create a Proof-of-Concept prototype for your product using an Arduino then a microcontroller is likely the right choice for production.

Raspberry Pi Zero

Figure 1 – If you have already built a Proof-of-Concept prototype based on an Arduino or Raspberry Pi then your choice is greatly simplified.

If, on the other hand, you built your POC prototype using a microprocessor development kit such as a Raspberry Pi, then your choice isn’t quite so clear. I’ve seen a good number of projects built on a Raspberry Pi, that could in fact have been more easily created using an Arduino.

So, just because you have been using a Raspberry Pi doesn’t necessarily mean your production product requires such a high-speed processor.

Feature Preferred Solution
Bluetooth Microcontroller
WiFi MCU / MPU
Cellular Microcontroller
Sensors Microcontroller
GPS Microcontroller
Motor/solenoid control Microcontroller
SD camera Microcontroller
HD 720p camera MCU / MPU
HD 1080 camera Microprocessor
AMOLED display MPU or STM32F69 MCU
USB 3.0 Microprocessor
Real-time processing Microcontroller
Long battery life Microcontroller
Advanced data processing Microprocessor
Graphical User Interfaces MCU or MPU
3rd-party network connectivity Microprocessor

Table 1 – Preferred solution for various functions/features

Video

For standard definition video a microcontroller is usually up to the task. In fact, a fast microcontroller can even handle 720p high-definition video just fine. However, once you exceed 720p and move to 1080 then it becomes necessary to use a more advanced microprocessor.

When it comes to video the decision whether to use a microcontroller or microprocessor many times comes down to the communication interfaces available and not necessarily the processing speed.

There are many protocols used to interface cameras and displays to your product’s brains. Many, but not all, of these are supported by microcontrollers.

For lower resolutions cameras a relatively simple serial protocol such as SPI is a reasonable option. However, for higher resolution cameras it becomes necessary to use a parallel interface to meet the necessary data throughput speeds.

A parallel camera interface can be used just fine with most microcontrollers, up to a resolution of 720p. Once you exceed the resolution of a 720p camera the data speeds need to be much higher.

Most cameras with resolutions higher than 720p use a very high speed serial video interface known as MIPI (actually that is the name of the organization that oversees this standard).

Specifically, cameras use an interface known as MIPI-CSI and displays use an interface protocol known at MIPI-DSI. These two protocols are used in almost all modern smart phones to communicate between the display and cameras.

Because of this fact there are numerous displays and cameras available only with a MIPI interface.

HD camera module

Figure 2 – There are multiple communication protocols used for connecting to a camera. However, a MIPI-CSI interface is the most common option for higher end cameras.

Up until a couple years ago MIPI interfaces were only found in the realm of high-speed microprocessors (sometimes also called application processors). If you were developing a product that uses an advanced, high-resolution, AMOLED display, then you had to use a microprocessor.

Fortunately, ST Microelectronics changed all of that with their STM32F469 microcontroller (the STM32 series is overall my favorite line of microcontrollers). The STM32F469 is based on a blazingly fast ARM Cortex-M4 32-bit processor core. The STM32F469 is the world’s first microcontroller to incorporate a MIPI-DSI interface.

So if your product requires an advanced display with a MIPI-DSI interface you can now use a microcontroller. Unfortunately, the STM32F469 doesn’t include the MIPI-CSI interface so you’re still limited in your selection of HD cameras.

If you require a 1080 camera, for example, you will still need to use a microprocessor, not a microcontroller.

USB 3.0

Want to incorporate the new, insanely fast USB 3.0 standard in your product? If so, you’re going to need to match it with a really fast microprocessor. USB 2.0 has a maximum theoretical speed of 480 Mbits/sec (60 MB/s).

Most slower microcontrollers only incorporate USB 2.0 Full-Speed mode which is rated at only 12 Mbits/sec. There are plenty of higher-end microcontrollers that can support USB 2.0 High-Speed mode at up to 480 Mbits/sec.

The new USB 3.0 standard blows these specs out of the water with a maximum throughput speed about 10 times faster than USB 2.0 at 5 Gbits/sec (640 MB/s).

There are no microcontrollers available that can handle such an incredibly high data transfer speed. If you want to incorporate USB 3.0 you have to use a much faster microprocessor.

Ultra-fast processing

If your product requires complex data to be quickly processed then a microprocessor is most likely going to be required. One way around this requirement is to offload your processing requirements to a smart phone.

For example, you could potentially use a microcontroller in your device to collect the necessary data. Then transfer that data over to a mobile app for any advanced processing requirements.

MCU/MPU Max. clock speed (MHz) Benchmark (DMIPS)
Arduino Uno 16 5.2
STM32F0 (Cortex M0) 48 38
STM32F4 (Cortex M4) 180 225
STM32F7 (Cortex M7) 216 462
STM32H7 (Cortex M7) 400 856
Raspberry Pi 3 1,200 2,760

Table 2 – Speed comparison for various microcontrollers

The processor in your smart phone is obviously extremely fast. This can be a simple trick for some applications that will allow you to get by with a simpler, lower cost microcontroller that won’t drain your battery so quickly.

Graphical User Interfaces (GUI)

For a simple GUI interface it’s completely possible to use a microcontroller. However, as the complexity and resolution of this graphical interface increases so do the needs for processing speed.

Graphics User Interface

Figure 3 – Advanced graphical user interfaces (GUI) can require significant processing speed.

Using a higher-end microcontroller allows you to develop some pretty sophisticated user interfaces. For example, the STM32F469 microcontroller includes a hardware graphics accelerator allowing it to be used to create very complex, graphical user interfaces.

There may become a point however where it becomes necessary to use an even faster microprocessor for truly advanced, very high-resolution user interfaces.

Battery Life

When it comes to conserving battery life, a microcontroller is the clear winner. The slower speeds of a microcontroller translate to less current consumption.

For example, an Arduino Uno consumes a maximum current of around 45mA, whereas a Raspberry Pi 3 consumes about 580mA.

Battery life

Figure 4 – Microprocessors consume significantly more power than microcontrollers. So if battery life, or small size, are critical for your product then a microcontroller is likely the best choice.

However, most microcontrollers also implement various low-power modes that allow it to enter standby or sleep states. The current consumption may drop from tens or hundreds of milliamps when running to only a few microamps when in standby mode. An external interrupt can be used to wake up the microcontroller.

If battery life, or ultra-small size, is critical for your product then you will most likely want to use a microcontroller. This is why many smart watches use microcontrollers.

Memory

If you need access to large amounts of really fast memory then a microprocessor is likely your best option. A microcontroller is already embedded with memory so the memory choices are fewer than with a microprocessor.

The maximum amount of FLASH memory available with most microcontrollers is usually around 2MB. However, it is possible to incorporate additional external FLASH memory into a microcontroller system.

This memory typically interfaces with the microcontroller via a fairly fast SPI serial interface (faster microcontrollers even support quad-SPI).

Need lots of high-speed RAM memory? Then you likely need a microprocessor. Adding high-speed DDR RAM memory to a microcontroller system is not practical and that is the domain of a microprocessor.

Get your FREE Ultimate Guide - How to Develop and Prototype a New Electronic Hardware Product in 2024

Operating System

One major difference between a MCU and MPU is that a microprocessor requires an operating system such as Windows, Android, or Linux. On the other hand, a microcontroller can run straight firmware without the requirement of an operating system.

This doesn’t mean a MCU can’t run an operating system but the choices are more limited, usually to some sort of real-time operating system (RTOS). For starters, an operating system requires quite a bit of processor overhead and memory.

For example, running a full operating system such as Windows, Android, or Linux will require 300+ DMIPS of processor speed overhead.

Whereas, a RTOS may only require around 50 DMIPS of processing speed, and a few kB of memory for the OS kernel.

Conclusion

If your product needs to incorporate HD video with a resolution greater than 720p then you definitely need a microprocessor.

The same is true if you want to be able to use the maximum transmission speeds possible with the new USB 3.0 standard.

Finally, if you need to process lots of data, or complex data, then you need a MPU.

For just about every other type of product and function, a microcontroller is the right answer. The performance range available with microcontrollers is quite large and you have a huge selection at your fingertips.

Other content you may like:

3.7 3 votes
Article Rating
Subscribe
Notify of
guest

11 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
Fred

Interesting post but only refering to ST micro shows lack of independancy…. As an example you could have mentionned the vast and highly secured MCU Arm based families from Renesas from RA2 to RA8 or very low power RL78 proprietary core? Vbr Fred

shakil

Thanks so much for the blog article. Really looking forward to read more.

Christones Michel

Hey John,

Great read.

Ashok
Ashok

Hi john,
As per your experience could you know any kind of single controller or a single processor which supports a CAN and bluetooth and wifi.

Daniel
Daniel

Hi John,

I was wondering if you could explain more in depth as to what you exactly mean by “third party connectivity”. We are currently developing a product that will use a large amount of sensors. Based of results from these sensors certain actuation devices will be triggered. The data from these sensors will be stored on a database.

We also would like to be able to set the control levels (the level at which a actuation device is activated) remotely through an app on a smart phone.

Based off this small description do you notice the use for a MCU or MPU.

Would it be possible to discuss this question more in depth privately?

Thank you for your time,
Its greatly appreciated
-Daniel

AHILAJI

Hi,
Thanks for providing details about microprocessor and microcontroller.

Babbu Toor
Babbu Toor

Hi
I am trying to design Tinyg cnc controller Board.
I need help to read schematic .
If u Can help me .

Thanks
reply if u receive this

Paul
Paul

Wow! Very clarifying! Thanks for the time!

Copyright 2024 Predictable Designs LLC.  Privacy policy | Terms
  10645 N Oracle Blvd, Ste 121-117, Tucson, Arizona 85737 USA