STM32 F1, F3, F4, G4, F7 and H7 flight controllers
Currently, almost all flight controllers we use on our multirotor FPV drones and airplanes are powered by microcontrollers from an STM32 family. When we say about flight controller families or generations, we refer to them by the family of the MCU. For example:
F1 flight controllers are no longer supported
or
You should get F7 to do it
STM32F1
Historically speaking, F1 were the first flight controller boards for MultiWii derivatives based on STM32 MCU. All the F1 boards like Naze32 or CC3D (ok, this one is from OpenPilot family) were equipped with STM32F103 chips. Currently, F1 boards are not supported by any major flight controller firmware. Reasons are simple: low speed, lack of hardware floating-point acceleration, very little RAM and Flash memory, only a couple of UARTs. They were not powerful enough and as a result, had to die.
Do not buy and if you have one, just keep it somewhere in a drawer as a souvenir of good old times.
STM32F3
F3 series (to be more precise STM32F303) boards came right after F1. They were the obvious choice since F303 is almost completely pin-to-pin compatible with F103. As a result, we got FC with more RAM, flash, UARTs, integrated hardware floating-point operations, and much more flexible I/O capabilities! F3 has built-in inverters on all pins! SBUS? No problem! SmartPort? No problem!
Unfortunately, more RAM and more flash does not mean enough! Betaflight already dropped support for all F3 boards and INAV is not putting any new features for them for a year at least. The reason is simple: both flash and memory are full even with the most aggressive code optimizations.
STM32F4
STM32F405
F4, STM32F405 in particular, series solved a lot of problems. First of all, plenty of RAM, plenty of flash, high performance. Almost a perfect MCU for flight controllers. Unfortunately, all F4 MCUs have a very serious flaw: they do not have build-in inverters! In a world of SBUS, SmartPort and F.Port this is a huge problem. Once again, to be able to connect a serial receiver or telemetry, additional hardware has to be installed on the board! This is a pain in the ass! SmartPort? Only if the board designer put a bidirectional inverter. SBUS can be connected to the UART designed for SBUS. Do you want another inverted UART? Sorry, mate, you can not do it!
An example of F4 flight controllers confirms the old truth, that sheer power is not always an answer. People were looking for a better solution. And the solution came with the name of F7
Example F405 Flight Controllers:
STM32F411
It's worth to mention, that smaller cousins of F405 are sometimes also in use. F411 share the same architecture but will lower CPU clock, fewer UARTs, smaller package, and lower price. F411 allows building small flight controllers with limited capabilities but enough processing power to run modern flight controller software. Less powerful, but smaller and cheaper than F405!
Popular Matek F411-WSE is a great example of such an approach.
STM32F7
When people started to see limitations of F4 boards, it was only a matter of time until someone replaced F405 with something else. This something else was STM32F745
STM32F745
Hell yeah! Plenty of processing power, plenty of UARTs, inverters built into all ports just like in F3 series and RAM and flash enough for all the code flight controller software might utilize. Unfortunately, F745 comes with a price: it's big and relatively expensive. The price difference might not be big comparing F405, but the size is a real problem! It's hard to fit F745, OSD, SD Card slot and pads for all the motors, servos and ports on a 36x36mm board! This is why you will almost never see an F745 board with an integrated power distribution board or even a 5V BEC. No space for that, mate!
Popular F745 FC is a Holybro Kakute F7
STM32F722
If F745 is too big, then what about something smaller? Like STM32F722? Still plenty of UARTs and outputs, but less flash, less RAM and much smaller package. It's not a coincidence that the majority of F7 flight controllers use STM32F722. They offer just enough to meet the needs of 95% of users. Too bad, that limited flash does not allow Ardupilot to be used on F722...
Popular F722 boards:
STM32F765
Hail the king! More ports than F745, more outputs, more functions, more everything. Including size and price. Boards based on F765 are for people who do not care about the size and want all the ports and outputs a flight controller can give. Just take a look at Matek F765-WING
STM32H7
STM32H7 series is currently the most powerful family of the STM32 series. To start, H7 can be 2-3 times faster than F7 or 5 times faster than F405. However... the processing speed does not really convert into flight performance. There are still waiting states for SPI, gyro, ESC protocols, I2C, inertia and so on. So what MCU will finish computation in 30us when an update is happening every 128us. For the remaining 98us, MCU will be just idling.
On top of that, the current H7 boards (SPRacingH7 series) are using the cheapest and smallest H7 out there: STM32H750 with has only 128kB of flash. The same amount Neze32 had. That means firmware has to be stored on an external flash or SD card. All of that makes the whole H7 business sketchy at least...
STM32G4
STM32G4 is an MCU family placed somewhere between F3 and F4. The main features of the G4 series are:
- advanced ADC converters, comparators, op-amps, and DAC converters
- ADC hardware oversampling
- AES encryption and secure memory
- High-resolution timers
Currently, April 2020, G4s are supported only by Betaflight 4.2 and there are no G4 flight controllers generally available on the market. Let's call it and experiment phase.
If you want to know more about STMicroelectronics and STM32 family, visit:
I'm Paweł Spychalski and I do things. Mainly software development, FPV drones and amateur cinematography. Here are my YouTube channels: