F1, F3, F4 and F7 are the different processors in flight controllers. This article explains the differences between these MCU, the advantages and disadvantages and help you decide which FC suits you best.
There are currently 10 series of STM32 MCU, from faster to slower processing speed they are: H7, F7, F4, F3, F2, F1, F0, L4, L1, L0.
|Processor (example chip)||Processor Speed||no. of UART on FC||Flash Memory*|
* Flash memory in a STM32 processor is integrated inside the chip, and it’s used to store the flight controller firmware codes. Don’t get confused with the flash memory that is used for blackbox logging, which is a separate chip on the flight controller.
The first 32-bit flight controller ever used on a mini quad was the CC3D which had the F1 processor.
The F1 FC has the the lowest processing power of the four STM MCU used in flight controllers these days. F1 is actually considered outdated now because Betaflight ended support for F1 FC’s in 2017 due to its hardware limitations.
As flight controller firmware development goes on, the F3 is struggling to handle all the processing intensive features without lowering looptime.
F4 flight controllers were introduced shortly after the F3, and quickly gained popularity due to its processing power advantage. They can be found in many FC’s on the market such as the Kakute F4 AIO, DYS F4, Matek CTR AIO, Raceflight Revolt and BrainFPV RE1.
F7 is the newest generation MCU of the four. F7 FC’s are slowly taking over the market, and there are more and more options of F7 flight controllers, for example the Kakute F7, Betaflight F7 FC and SP Racing F7.
Fun Fact: ESC’s are moving from 8-bit to 32-bit processors too! STM32 F0 processors are currently used in many 32-bit ESC’s.
To summarize, the F3 has the following advantages over F1:
- Similar clock speed on paper, but the F3 has additional hardware to improve its capability over the F1, namely the dedicated floating point unit (FPU) which allows faster floating point calculation
- F1 boards only have 2 UART’s compared to the 3 offered by an F3. In addition, and possibly more importantly, the F3 series provide a dedicated USB port. It was common for users of F1 boards to avoid connecting any peripherals to UART1 in order to retain this slot for PC connection. In reality this means that an F1 board has only 1 UART for additional hardware, whereas an F3 board can usually utilize all 3 UART’s for extra devices
- All UART’s on an F3 processor have native inversion, which means you can run SBUS and Smart Port directly without doing any “un-inversion hacks”
- Newer F3 FC’s provide more features than the old F1 boards, and they are generally better thought out with a design optimized for mini quad and often multirotor in general
Processing Power (Speed)
F1 and F3 processors have the same clock speed of 72MHz, however the F3 is better at handling floating point calculations thanks to the FPU (aka “math co-processor”). This allows an F3 to run floating point based PID controllers significantly faster than F1.
The highest looptime we can run in Betaflight with an F1 Naze32 board is 2KHz. The processor is simply incapable of calculating looptime faster than that. (It can be pushed to 2.6KHz but it becomes unstable)
F3 boards can get looptime up to 4KHz, even running other CPU-intensive tasks at the same time, such as the accelerometer (Acc), LED strips, Soft-serial, Dynamic Filter etc. An F3 can even run at 8KHz with Dynamic Filter disabled, however an F1 needed many of these common features to be sacrificed in order to run just 2K.
When People are talking about “8K/8K”, or “4K/4K”, they are referring to the looptime, and Gyro sampling rate.
- F1’s mostly run between 2K-2.6K, if you get a CC3D they can run 4K/4K because of the SPI Gyro
- F3 and F4 with SPI Gyro Bus can run 8K/8K, but with i2C Gyro you can only do 4K/4K
- The ICM-20602 and MPU6500/9250 Gyro’s are capable of 32K sampling rate allowing an FC, such as the Revolt, to run 32K/32K
When you set a new looptime in your FC, always check CPU usage via CLI command “status”, the general concensus suggests it’s best to stay under 30% CPU usage in BF, though some boards might handle a bit more.
Number of UARTs
Apart from additional processing power and increased looptime, the F3 also offers more hardware serial ports (UART) all of which have built-in inverters.
F1 flight controllers, such as the Naze32, only have 2 UART’s which limits the number of supported external devices. It frustrating to be forced to choose to sacrifice blackbox, SBUS or MinimOSD, which I like to include on all my miniquads. F3 boards however, support the use of all 3.
Other advantages of common F3 FC
Most F3 boards these days, have an integrated 5V regulator, now it’s becoming more common to see an integrated PDB (power distribution board), which means the FC can be powered directly from your LiPo battery.
The F3 is almost pin-to-pin compatible with the STM32 F1-series, in fact someone commented on my blog, that he successfully replaced the F1 chip with an F3 on his CC3D, and is now running 8K looptime on it (thanks to the SPI Gyro used by this FC)
Note the size of flash data storage used for Blackbox logging doesn’t depend on the processor. It’s actually determined by a separate memory chip on the flight controller.
- The processing speed of the F4 processor is more than double that of the F1 and F3 (72MHz) at 180MHz, while it also commonly has a dedicated FPU which is what gives the F3 the advantage over the F1
- It’s possible to run 32KHz Looptime on a F4 board compared to the 8K max from an F3; Since Betaflight encourage users to run 8K looptime on the F4 as the max looptime even though it can go higher, there is more processing power left over to devote to extra features
Looptime is a whole different discussion. Check out this article about whether 32KHz looptime is better in terms of performance.
- F3 boards are generally limited to 3 UART’s, but some F4 FC’s can offer as many as 5 to allow you to take full advantage of their extra processing power. With the recent introduction of serial controller FPV cameras, these extra serial ports give the F4 a definite advantage going forward
- Betaflight’s new feature “Dynamic Filter” is very labour intensive for a processor, giving the increased speed of the F4 another clear advantage
Majority of F4 FC’s are supported by both Betaflight and Raceflight firmware(The latest Raceflight One is now closed source and only support their own FC, the Revolt)
- F1 and F4 FC’s do not have the built-in inversion capability that we see on the F3 or F7 processors. If you want to run SBUS or Smart Port, you might be required to do the inversion hack (getting uninverted signal); F3 and F7 processors have built-in inverters on all UART‘s because they are newer generation MCU’s
Why F4 doesn’t work with SmartPort natively:
SmartPort is a half-duplex protocol, meaning the S.Port wire is bi-directional that data is sent and received in the same wire (though not at the same time, that’s why it’s only “half”).
F3 and F7 STM MCU can handle half-duplex protocol internally in the chip itself, so you can connect SmartPort directly to these flight controllers without any modification. But F4 doesn’t have this capability.
Although SmartPort is also inverted, F3 and F7 can invert the signal coming in or going out internally, so no problem there.
F4 does have the half-duplex capability too, but it doesn’t work with inverted signal without an external circuit that does inversion for it bidirectionally.
- F7 is a faster processor (216MHz vs 168MHz of F4)
- The F7 processor has superscalar pipeline and DSP capabilities – which means the F7 is a better platform for future flight firmware development, allowing the developers to further optimize the flight controller algorithms
- F7 boards allow for more UART’s, all with built-in signal inversion capability. Considering all the peripherals that we can use nowadays – serial receiver, OSD, SmartAudio, SmartPort Telemetry, GPS, Camera control etc, more UART’s is always welcome!
It’s necessary to overclock F4 when running 32KHz, while the F7 processor is fast enough to handle 32KHz without overclocking.
Looptime is also limited by the type of gyro (IMU) and their maximum sampling rate. For example MPU6000 has a maximum sampling rate of can 8KHz. If you want to do 32KHz, you would have to use IMU with higher maximum sampling rate, such as the ICM-20602.
Some designers decided to put two different gyros in their F7 flight controllers. One is the proven, low noise gyro such as the MPU6000, and the other is a faster gyro that can do 32KHz such as the ICM-20602. This allows the pilot to choose whichever gyro they want to use.
Sure, you can get your multirotor flying just fine with an older F1 board, but you will certainly get better performance from newer flight controllers with faster processors, and run more resource intensive features.
We can anticipate technology moving toward faster processors, which will provide capacity for more exciting features and peripherals, and the capability to run more sophisticated filters and algorithms that can really make our quads amazing to fly!
As FC firmware continues to advance, the limited capacity of F1 boards will miss out on all the cool features that the future holds.
Update (Jun 2017) – F1 boards are running out of flash memory to store the FC firmware code, and Betaflight has decided to end support to F1 boards. Therefore, avoid buying new F1 flight controllers if you care about running the latest FC firmware.
Even F3 is running out of space to house the firmware, so many features including GPS, HID Joystick have to be removed from F3 targets. So I won’t encourage buying new F3 FC today either.
So really, the decision is now down to F4 and F7, and it’s pretty clear which one is better.
- Running 32KHz Looptime? Get the F7, because on F4 you can probably only be able to run 16K with other processing intensive features
- You need more UART? Get the F7, because in general, you will find more UART’s on a F7 than a F4 FC
- Are you a Frsky user? Get the F7 because all the UART’s support inverted signal like SBUS and SmartPort. It’s a lot easier to set these up than on F4 FC.
One downside with today’s F7 FC is that they use a bigger F7 chip (F745VG) which takes up some more physical space on the board, so there isn’t much room for other components and connections. Hopefully we will see smaller F7 variants (such as F722RE) used in the future. The F722RE chip has the same package as F3/F4 chips on many existing flight controllers. However the F745VG does have more flash memory and RAM for storing the firmware and code execution.
If I was going to buy a new flight controller today, I would probably opt for an F7, because these FC’s are generally packed with features, and have very well thought-out layouts with mature and user-friendly designs.
Here are our FC recommendations, and here is a full list of FC’s that I spent days gathering…
|I compiled the specifications of all FC’s for mini quad in this spreadsheet so you can compare them more closely.|
The only STM32 chips we have seen used in flight controllers are F1, 3, 4 and 7, those who have a curious mind might wonder why they skipped F2, F5 and F6?
First of all, the F2 is more like an older version of the F4 and as such does not have integrated signal inversion. This, in conjunction with the next-in-line F3’s faster calculation from the built-in “floating point unit” made it natural for developers to just skip F2.
STM32 F5 and F6 simply do not exist.
- Oct 2015 – Article created for F1 and F3
- Oct 2016 – Updated F4 info
- May 2017 – Updated F7 info
- Jun 2017 – updated news about “Betaflight will end support for the F1 FC”, and added a column for flash memory in the table thanks to Boris B.’s idea
- Aug 2017 – updated info about the missing F2, F5 and F6
- Oct 2017 – edited by Tom BD Bad, info about some F7 FC having 2 gyros
- Oct 2018 – updated my thoughts about F7 FC