While STM32F4 family processors installed in newest flight controllers are superior to STM32F3 (and F1 of course) in terms of raw speed, they are inferior to F3 family in terms of IO handling capabilities. For example, F4 family is not equipped with UART port inverters. And that creates a series of problems when it comes to connecting various serial RX receivers and telemetry systems.
The most popular FrSky (Futaba) S.Bus serial RX protocol and FrSky SmartPort telemetry require inverted UART signal. If there is no hardware inverter on hardware UART port, they will not work. While S.Bus requires only one data line, external inverter is not a big issue. Some time ago I’ve published The Simplest Harware Inverter. One MOSFET transistor, one resistor and that’s all.
In case of SmartPort, it’s slightly more complicated. Not only signal is inverted, SmartPort also combines TX and RX UART line into single wire. That means the following:
- More complicated inverter is required
- Software has to support this case and fallback to unidirectional UART mode
- 2x N-channel MOSFET transistors, for example 2N7000
- 2x 4.7kOhm resistors
- 1x 47kOhm resistor
- Some cables
Hardware is simple enough to be build “in the air” and then put inside heat shrink or deluged in epoxy.
Like I mentioned previously, software has to be able to switch to unidirectional mode when this hardware is used. Luckilly, both Betaflight and INAV supports it.
In case of Betaflight 3.1 and newer required command is
In case of INAV 1.4 and newer required command is
In case of Cleanflight, it should work in 1.14 out of the box, but only on F1 targets, since Cleanflight does not supports F4 yet.