This article first appeared on OscarLiang.com. Click here to view.
When choosing flight controllers, the term “F1”, “F3”, “F4” and “F7” pop up all the time. These are the FC processors and in this article we will explain the differences between them and which one you should get.
What are F1, F3, F4 and F7 in Flight Controllers?
F1, F3, F4 and F7 are different STM32 processors (a.k.a. MCU – Microcontroller unit) in a flight controller (FC). This STM32 processor is the brain of a flight controller, pretty much like the CPU in a computer where all the calculation takes place. There are currently 10 series in the STM32 family, from faster to slower processing speed: H7, F7, F4, F3, F2, F1, F0, L4, L1, L0.
Processor | Processor Speed | no. of UART on FC | Flash Memory* |
F1 (STM32F103CBT6) | 72MHz | 2 | 128KB |
F3 (STM32F303CCT6) | 72MHz | 3 | 256KB |
F4 (STM32F405RGT6) | 168MHz | 3 | 1MB |
F7 (STM32F745VG) | 216MHz | 8 | 1MB |
* Flash memory is not the memory for blackbox log, but the integrated memory in the processor to store the flight controller firmware. The actual flash memory size might vary between chip variants of different dimension
The first 32-bit flight controllers for mini quad was the CC3D with F1 processor. F1 FC has the the lowest processing power in the four. Good examples of F1 flight controller would be the Naze32 and CC3D.
F3 FC boards were introduced in 2014 and currently have the X-Racer, Betaflight F3, LUX V2, and the KISS FC.
F4 Flight controllers were introduced shortly after the F3. They are also getting more popular, such as the Raceflight Revolt, BrainFPV RE1, and DemonRC Soul.
F7 is a newer generation MCU. F7 FC’s are very new to the market and at the moment there are only a handful of F7 flight controllers, for example AnyFC F7 FC.
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.
Differences between F1 and F3 Flight Controllers
To summarize, the F3 has these advantages over F1:
- Similar clock speed on paper, but F3 has faster floating point calculation due to the dedicated floating point unit (FPU)
- 1 extra UART on the F3 (3 vs 2), and F3 has dedicated port for USB, so when it’s connected to computer via USB, UART 1 doesn’t get occupied the same way as F1 FC does, so in that sense the UART1 in F3 is more functional (3 vs 1), as we normally would try to avoid using UART1 on F1 boards for that reason
- All UART’s on F3 built native inversion, which means you can run SBUS and Smart Port directly without any hacks
- Newer F3 FC have better design and features than the old F1 FC
Processing Power (Speed)
F1 and F3 has the same clock speed of 72MHz, while the F4 is 180Mhz.
Although the F1 and F3 has the same max speed, F3 can handle floating point calculations quicker thanks to the FPU (math co-processor). F3 can run significantly faster than F1 in floating point PID controllers.
As many of your might already know, 2K looptime is pretty much the highest we can run on the Naze32 boards in Betaflight. It simply cannot go higher as the processor can’t keep up. (It can be pushed to 2.6KHz but it becomes unstable)
F3 boards can easily get up to 4K looptime, even running other CPU-intensive tasks, such as the accelerometer, LED strips, Soft-serial etc. We can even run 8KHz with Acc disabled. But for the F1 boards, we previously needed to disable a lot of these features first in order to run just 2K.
Generally, depending on PID Controller, the number of serial ports used, the number of Aux channels, etc, we can achieve the following looptime (assuming ACC is disabled)
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 only FC that can do 32K/32K at the moment is Raceflight Revolt with ICM-20602 Gyro.
All these FC can run ESC up to 32K ESC update rate at no extra penalty. After setting new looptime, always check CPU usage via CLI command “status”, the general consensus suggests it’s best to stay under 30% CPU usage in BF, some might get away with more.
Number of UARTs
Apart from processing power and looptime advantages, the F3 also provides additional hardware serial ports (UART). And all UART’s have built-in inverters.
External devices like MinimOSD, SBUS, SmartPort telemetry, Blackbox (using Openlog and SD card), computer USB connection, GPS, etc these all use serial ports.
On the F1 flight controllers such as the Naze32, we have only 2 UART’s. It gets quite annoying when you cannot run blackbox, SBUS and MinimOSD all at the same time, which could have been my usual setup. F3 boards have an extra UART which becomes handy.
Other advantages of common F3 FC
Most F3 boards have either an integrated 5V regulator, a few even have PDB integrated, which means the FC can be powered by LiPo directly.
F3 boards also have built-in hardware inversion on their UARTs, so there is no need to hack your X4R-SB receiver in order to run SBUS and SmartPort. F1 board doesn’t so requires additional hardware or hacks.
The F3 is almost pin-to-pin compatible with the STM32 F1-series, and someone commented on my blog recently, that he successfully replaced the F1 chip with a F3 on his CC3D, and running 125 looptime on it (thanks to the SPI Gyro BUS in CC3D)
Note that the processor does not have much to do with the size of flash data storage. It’s actually determined by a separate memory chip on the flight controller.
Differences Between F3 and F4
- F4 has higher processing speed at 168MHz vs 72MHz of F3. It’s possible to run 32KHz Looptime on F4, but not on F3; Both F3 and F4 can handle 8K or less looptime very well, but the F4 leaves you with lower percentage of CPU load to run other features. Especially now with the latest “Dynamic Filter” feature which is quite processing intensive, F4 definitely has an advantage in that regard going forward
- F4 FC’s normally have at least 3 UART’s sometimes even up to 5 depends on the actual board design and pinout; F3 FC normally only has 3
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 built-in inverters in the processor like F3 or F7. If you want to run SBUS or Smart Port, you might be required to do the inversion hack (getting uninverted signal); F3 and F7 have built-in inverters on all UART‘s because they are newer generation MCU’s
- Due to the more powerful processor on the F4 FC’s, it’s possible to drive the OSD feature by the main processor instead of using a dedicated OSD chip, such as the BrainFPV RE1
Benefits of F7 FC Compared to F3 and F4
- F7 is a faster processor (216MHz vs 168MHz of F4)
- F7 offers more UART’s with built-in hardware inversion
- F7 has superscalar pipeline and DSP capabilities – basically that means the F7 is a better platform for future development that allows the developers to further optimize the flight controller algorithms
The faster speed F7 processor allows faster looptime in theory without overclocking like we do with F4 running 32KHz. But that’s not entirely true as looptime is also limited by the type of gyro (IMU) and their sampling rate. For example with MPU6000, the sampling can only reach 8KHz max, if you want to do 32KHz, you would have to use faster MPU such as the ICM-20602.
But looptime is a whole different discussion, whether 32KHz looptime is better in terms of performance?
F7 has more UART’s with built-in signal inverter. Look at all that peripherals that we can use nowadays, SBUS, OSD, VTX SmartAudio, Smartport Telemetry, Blackbox… There are already a lot of applications and there can only be more in the future.
So, Should I Get F1, F3, F4 or F7 FC?
Sure, you can get your multirotor flying fine with even F1 boards, but faster F3 and F4 can give you better performance and allow you to run resource intensive features. As FC firmwarecontinues to advance, F1 boards will miss out on future cool features due to the lack of processing capacity.
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 soon in the future. Therefore, avoid buying new F1 flight controllers if you care about running the latest FC firmware.
So really, the decision is down to F3, F4 and F7 these days.
As for F7 flight controllers, unless you use it with a 32KHz capable Gyro, and run 32KHz looptime, the main F7 benefit is just more UART ports available (8 of them). It’s not that big of an advantage right now, but it’s more future-proof for sure. In my opinion, F7 would be great for applications where a lot of serial devices are used, such as iNav.
One downside with today’s F7 FC is they are using the bigger F7 chip (F745VG) that takes up too much physical space on the board, it doesn’t leave much room for other components and connections. Hopefully smaller F7 chip variants (such as F722RE) can be used. It has the same package as the F3/F4 we are using, although the F745 does have more flash memory for the software and RAM for code execution though than the F722.
Anyway, it will take time for manufacturers to refine the hardware design, and for the firmware developers to figure out what they can do with the extra processing power and features. So there is no need to rush and get the F7 right now IMO.
If I was going to buy a new flight controller today, I would probably opt for a F3 or F4, because they are generally packed with features we need, and have very well thought-out layouts with mature and user-friendly designs.
Here are our FC recommendations.
What happened to F2, F5 and F6?
The only STM32 chips we have seen used in flight controllers are F1, 3, 4 and 7, for those who have a curious mind might wonder why they skipped F2, F5 and F6?
First of all, F2 is like a older version of F4, and the next in line F3 has built-in “floating point unit” for faster calculation, so it’s natural for developers to just skip F2.
And STM32 F5 and F6 simply do not exist. because the naming of STM32 processors are mainly based on the ARM processor core such as F1 is based on Cortex M1, F3 is based on Cortex M3 etc, and there weren’t Cortex M5 and M6.