When STM32F4 based flight controllers made its way to the world of MultiWii derivatives (Cleanflight and whole family), all I think all developers assumed that SoftwareSerial feature will not be needed on those boards. Why it should be? STM32F4 has enough hardware UARTs to satisfy everyones needs.
Unfortunately, live had it’s own point of view on that topic:
- Most F4 flight controllers have only 2 to 3 hardware UARTs available and usually one of them is shared with I2C (Revolution, Airbot F4)
- STM32F4 does not have internal hardware inverters. Hardware manufacturers usually put only one external inverter for S.Bus and that’s all
Because of that, Software Serial feature is coming back to F4 boards. Together with INAV 1.5, SoftSerial will be available on Airbot F4 / Flip32 F4 target on two small pads located near UART3 connector. RX line on pad CH5, TX line on CH6 line. Pads are quite small, but with basic soldering skills and decent soldering iron there should be no problems to solder thin cables to them.
Since F4 CPU is much more powerful than F1, limitation of 19200bps on Software Serial UARTs is no longer actual. I have tested 57600bps and 115200bps should be archivable.
Omnibus F4 is a new family of All-In-One (AIO) STM32F4 based flight controllers with integrated OSD (On-Screen-Display) for FPV purposes. Basically, it is Airbot F4 / Flip32 F4 with added MAX7456 and some minor tweaks.
- OSD connected via SPI bus
- VCP port
- 3 UART ports, UART3 is shared with I2C
- Hardware inverter on UART1 allows to connect S.Bus receivers
- Dedicated PPM/S.Bus connector
- DSMX connecter
- PWM connector that allows to connect 4 PWM channels
- Integrated voltage stabilizer and voltage monitoring
- Analog current monitoring
- Analog RSSI monitoring
- Buzzer connector
- Integrated 16MB Blackbox flash memory
Currently, only Betaflight and Raceflight (?) supports OSD on this board. INAV OSD support is on its way.
- RAM pins are connected only to each other. For OSD only GND and Video IN and Video OUT lines have to be connected with camera and VTX
- Integrated voltage stabilizer tends to get hot when powered from 4S. Do not try to power camera or VTX from it
- Current and RSSI are NOT 5V tolerant. 3.3V max
- S.Bus and DSMX are shared with UART1
- To use UART1 and PPM, SBUS jumper has to be removed
Omnibus F4 can be purchased as Airbot Omnibus F4, Flip32 F4 Omnibus and “no-name” from Banggood and other Chinese shops.
Today I've discovered another small but irritation limitation of Airbot F4 / Flip32 F4 also known as CC3D REVO for unknown reason. Looks like, by default, this board is unable to share UART1 RX line and PPM input. So, if you would like to connect, for example, OSD or GPS to UART1, you would have a problem. I've discovered that PPM input does not blocks UART1 totally, but makes UART1 transmission erratic and unreliable.
This is because PPM input pin is connected to both UART1 RX (pin PA10 of STM32F405) via inverter and PPM input pin (PB14) without inverter. Any electrical signal applied to PPM input would also be sent to UART1 RX.
Luckily, there is pretty simple, hardware, solution to allow UART1 and PPM input function simultaneously. Jumper called SBUS located near SBUS/PPM input has to be removed with soldering iron. This operation breaks the connection between PPM/SBUS input and UART1 RX.
There is a drawback of this solution too. If jumper is removed, SBUS will not work. To make SBUS works again, jumper would has to be closed again. With a blob of solder for example…
INAV 1.3 has been released few hours ago, now I would like to do unofficial release of Flip32 F4 / Airbot F4 target of INAV 1.3. Target was flight tested last weekend.
Airbot F4 / Flip32 F4 reporting for navigational duty, sir!
What is inside:
- Full 6 motors support
- 2 motors / 4 servos support, so it can be used on airplanes
- RSSI ADC on dedicated pin
- Current meter ADC on dedicated pin
- S.Bus and PPM working
- I2C bus works, it is possible to attach external barometer and magnetometer. Tested hardware:
- Barometeres: BMP085, BMP280 and MS5611
- Magnetometers: HMC5883l
- I2C is not initialized when UART3 is configured
- GPS over UART. Supported protocols: UBLOX, NMEA and NAZA
The only think that is not working, is LED strip support. Looks like there is generic STM32F4 LED strip issue in INAV and we will be able to fix it in reasonable future.
HEX file of INAV for Airbot F4 / Flip32 F4 can be downloaded here.
There is very little reliable information about Flip32 F4 / Airbot F4 on the internet, so I've decided to fix it. Today, pinout map for Flip32 F4 (Betaflight 3.0.1) and some additional notes:
- Betaflight 3: use REVO target
- UART1 is only UART with inverters, so S.BUS can be connected only here
- S.BUS / PPM pin is connected to UART1 RX
- To use PPM, UART1 can not be used
- To use S.Bus, UART1 has to be used as SerialRx
- FrSky S.Port can be used only with UART1 (inverters)
- UART3 is shared with I2C. I2C can not be used when UART3 is enabled
- external I2C is not tested ATM
- Both Vbat lines are connected to onboard 1.5A voltage regulator (BEC)
- Onboard BEC has to be powered if voltage monitoring is used
- Onboard BEC will be disabled only if voltage supplied to ESC lines is higher than BEC output! This is a design flaw! There is no way to force usage of external BEC and still use voltage monitoring!
- I suggest not to supply 5V to OSD from UART header but use external BEC with common ground
Yesterday I've received new flight controller for my Reptile X4R 220 quadcopter: Flip32 F4 from ReadyToFlyQuads. This is my first contact with STM32F4 based flight controller and I'm really looking forward to see if it really puts a difference comparing to F3 boards like SPRacingF3 I've been using last few months.
- STM32F405 CPU running at 168MHz
- MPU6000 gyro connected via SPI interface
- Integrated 1.5A voltage regulator
- VCP port
- 3 UARTs
Flip32 F4 (and Airbot F4 which is exactly the same board) is supported by Betaflight, RaceFlight (that due to some GPL violations I'm boycotting) and INAV (at the moment of writing this post INAV support is not complete) and REVO target. Well, basically, this board was designed based on OpenPilot Revolution stripped from radio modem, barometer and those JST connectors (pin headers rules!). There are some differences between Revolution and Flip32 F4 in terms of hardware (voltage regulator for example) or separate LED header (which does not work).
There are two "problems" I've discovered so far:
- Whole board is getting very hot. Looks like it's because voltage regulator and battery monitoring are connected. You can not have one without the other even when you have BEC somewhere else
- STM32F4 does not have built in inverters. That means, S.Bus has to be connected to UART1, since this is the only UART with external inverter
Although I've been able to install it on Reptile X4R 220 already, I have no idea how it flies yet. Weather outside is very rainy…