If we are going to delve into the world of ESP32, one of the first things we have to talk about is what is an SoC, an SoM, a development board, and the differences between them.
This is because later you still see a lot of people getting confused saying that if it has a Wemos ESP32-S2, an ESP32-D0WD-V3, and that if this other has a “I don’t know what”.
In addition, if we take into account that the designations of the Espressif families are not very helpful (ESP32-C2, ESP32-S2, ESP32-S3). Furthermore, the advertising of the vendors, especially the Chinese vendors, does not help to clarify.
So let’s go step by step and let’s dedicate an entry first to see what a CPU, an SoC, SoM, and a development board are.
What is an SoC and what is an SoM
Let’s start at the beginning. More or less we all know what a CPU (Central Processing Unit) is. It is the part that performs calculations and, so to speak, the brain of a machine.
Now a System on Chip (SOC) is a single integrated circuit (a chip) that combines several essential components of an electronic system into a single integrated. This usually includes one or more CPUs, and adds other things like (optionally) memory, storage, GPU, I/O controllers, among others.
For its part, a System on Module (SoM) is an electronic board (a PCB), which also combines essential components. For example, it usually includes an SoC, and other things (optional) such as storage, antennas, I/O devices, among others.
Finally, we have development boards, which is the final device that you buy. Generally, they add things like pins, power supply, antennas… Here we can have boards that mount an SoC directly, or boards that mount an SoM.
In general, the order of aggregation is:
- Development board
Let’s see it in the case of ESP32
By this point I imagine you are thinking what on earth this guy is telling me about Soc and SoM. Well, let’s see it with a specific example, seeing how we apply all this when we talk about an ESP32 and its variants.
The ESP32, as we usually refer to it, is an SoC. I leave you a link with the list of available ESP32 models Chipsets | Espressif Systems. There are not many, there are 5 models, ESP32, ESP32-S2, ESP32-S3, ESP32-C, ESP32-H, and that’s it.
Each of these SoCs has a different set of characteristics. They mount a different CPU (Risc-V, Dual Core, Single Core…), they support a different amount of memory. To complicate things a bit more, within each SoC there are variants. Although don’t be too scared, within each of the 5 SoCs the variants do not modify the basic characteristics. The size and little else.
Now, these SoCs are mounted on modules offered by the manufacturer. How many are there? Oh, a lot! Only the “normal” ESP32 (not the S2, S3) has more than 20 available modules. Here we have a list of available SoM modules ESP32 Wi-Fi & Bluetooth Modules | Espressif
Both SoCs and SoMs are industrial products. They are designed for you to buy them industrially (in thousands) and integrate them into your final product. For example, in a smart switch.
Finally, we have development boards that mount an SoM. They are used for prototyping, or for us to play at home 😉. Here is a list of the boards Development Boards | Espressif Systems
Logically there are even more than SoC. Each one with different modules, we can choose a form factor, put a screen, a USB connector, or whatever.
In addition, unlike SoCs and even SoMs, which have to be made by the manufacturer, in the case of development boards any manufacturer can make their own. That is, you can find on Amazon models of development boards, which are called whatever the manufacturer wants.
Let’s see an example
It will be easier to understand if we do an example. Imagine you have a board, from whichever manufacturer, that mounts a module (an SoM) ESP32-WROOM-32E. I’m going to look at the modules and see what information I can get from this module:
- SoM: ESP32-WROOM-32E tells me that it is compatible with 4/8/16MB Flash memory, and that it does not have PSRAM
With the SoM, I can obtain some of the characteristics, including which SoC it mounts. In this case it would be an ESP32-D0WD-V3, which is a variant of the ESP32 family. With the name of the SoC, I already have the rest of the characteristics, including the CPU and memory.
- SoC: ESP32-D0WD-V3 tells me that it is a dual-core Xtensa CPU, with 520KB SRAM, 448KB ROM, 16KB RTC SRAM
- CPU: Xtensa single-/dual-core 32-bit LX6 microprocessor @240Mhz
With all this, I would already have all the information and characteristics of my device. It is an SoM ESP32-WROOM-32E, which mounts an SoC ESP32-D0WD-V3, which is a variant of the ESP32 (original, from 2016).
On the other hand, with the information from the SoM, I can also find the official board that mounts this SoM. In this case it would be an ESP32-DevKitC
- Board: ESP32-DevKitC in that specific development board, they have put 4MB Flash
But of course, the board that you have may have other technical characteristics. For example, it could have a different pinout, a different amount of Flash memory, or PSRAM.