-
Notifications
You must be signed in to change notification settings - Fork 1.7k
target: add CIPHERWINGF4 (STM32F405) #11087
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
PR Compliance Guide 🔍All compliance sections have been disabled in the configurations. |
PR Code Suggestions ✨Explore these optional code suggestions:
|
|||||||||||
|
Please note that new targets must follow the INAV New Hardware Policy Have you been in contact with any developers? |
|
Thanks for the automated suggestions 🙏 No change required — design verified and working as intended ✅ |
Thanks for the reminder about the INAV New Hardware Policy 🙏 The Cipherwing F4 (STM32F405) is part of an early testing phase for our upcoming product line. Key points: This target is intended for internal and community testing only, not as an official commercial release at this stage. Once the board reaches its stable revision, I’ll be happy to coordinate with INAV maintainers to provide documentation, samples, and request official inclusion. Please proceed treating this PR as an unofficial / prototype target submission for evaluation and early feedback. |
IMHO, the RX UART should be a full UART. The only SBUS needs only the RX UART pad. All other protocols, which are more widely used, use RX and TX. The only thing I can think of where only a UART receiver pad is needed is ESC telemetry from a BLHeli32 ESC. I really don't think the Omnibus F4 is a good FC to base a new FC on. It was limited when it was release years ago. It is even more limited now. UART wise, it's only half a UART better than an F411 based FC. Modern F405 based FCs have 4 or 5 full UARTs broken out. It would be better to start from the ground up with the design or look at more modern flight controllers for inspiration. |
About the RX-only UART: So the target meets the policy requirement of ≥3 full UARTs; RX-only UART5 is just an extra dedicated SBUS/telemetry input. About basing on Omnibus F4: For the next hardware rev, I plan to: If preferred, I’m happy to keep this as an unofficial/prototype target (e.g., CIPHERWINGF4-DEV) while we iterate. Thanks again for the guidance—open to any specific changes you’d like on the target to align better with INAV expectations. |
|
OK, that's sounding pretty cool. It sounds like it is much different to the Omnibus F4 at this stage. So I would probably remove that association, as it just raises red flags. I immediately thought 2.5 UARTs and issues using UART 3 due to the I2C integration. As this is still in development, and doesn't yet meet the new hardware policy (due to INAV developers not having test samples). I'm going to add the |
Thanks so much for the clarification and for keeping it open 🙏 I’ll remove the Omnibus F4 references in the next update and make the documentation clearly describe it as a stand-alone Cipherwing F4 design (since, as you said, the layout and peripherals have diverged significantly). Over the next iteration, I’ll: Thanks again for the feedback and for keeping the PR active — really appreciate the guidance! 🙌 |
@MrD-RC Can you please verify the pcb |
|
I don't know what you mean by verify the PCB. I can look at it and offer some advice on the layout. But not much more than that. It certainly couldn't be merged just by looking at the PCB.
|
Thanks for reviewing! |
|
you can check the user manual for all the details @MrD-RC |
|
My first thoughts are that it is pretty large. For a standard board like this, you should be aiming for around 36mm square. I'd also aim to get all the pads that the pilots are soldering to around the outside edge in useful groups. So for all UARTs also have 5v and gnd, plus with one UART have I2C pads too. I'd go back to using through hole pads too. Then header pins or direct soldering can be used. I see there is one ADC broken out (RSSI). But it may be worth breaking out another. There is no current sensor on this FC, so an external one may be wanted. TBH, most RC links these day provide RSSI over the UART. So I would default the existing ADC to a different function. Perhaps a voltage ADC input, as this board can only handle up to 3S. You could save a lot of space by removing the power and grounds for the servo outputs. I see this is a design taken over from Omnibus. The problem is that they were never good, as there was no separate 5V servo power rail that had enough current available. It was also only 5v, whereas most servos benefit from using 6v. Anyway, they always needed an external DC-DC to power the servos to be reliable. I see your board only has a 2A 5V rail, which powers all 5v peripherals. This really isn't enough to power servos too. For servos alone, you should be looking at a minimum of 4A when you have 6 outputs available. Please don't take this as bad. I'm trying to be constructive. |
|
Mr D. made some good points. The servo power rail was mentioned. The Omnibus had three Schottky diodes on the servo rail, so it could be powered from the onboard BEC, from an external BEC, or USB. With no jumpers needed. I liked that option. It could run a couple small servos from the onboard BEC, or you could plug in an ESC with a BEC, and could test servos with just USB plugged in. |








User description
🧩 Summary
Adds support for Cipherwing F4 — a custom STM32F405 flight-controller board derived from Omnibus F4, with a fully customized UART, ADC, and motor-timer map.
⚙️ Board Information
🧱 Folder Structure
📦 Build Information
✅ Hardware Verification
IMU detected (SPI1)
OSD & Blackbox operational (SPI3)
VBAT / RSSI ADC inputs functional
8 motor outputs verified (PWM + DSHOT)
LED strip on PB6 and beeper on PB4 tested
UART mapping validated (CRSF on UART1)
🧾 Notes
Only one IMU should be active at a time (shared SPI1 bus).
UART5 TX left unassigned to avoid conflict with SPI3 MOSI.
Current sensor input removed — VBAT and RSSI only.
🧰 Files Added
PR Type
Enhancement
Description
Adds support for Cipherwing F4 STM32F405 flight controller board
Implements custom UART, ADC, and motor-timer configuration
Defines 8-motor PWM outputs with LED strip support
Configures IMU, OSD, blackbox flash, and sensor interfaces
Diagram Walkthrough
File Walkthrough
target.h
Board configuration and peripheral definitionssrc/main/target/CIPHERWINGF4/target.h
target.c
Motor and LED timer hardware mappingsrc/main/target/CIPHERWINGF4/target.c
TIM1/3/4/8/12
CMakeLists.txt
Build configuration for STM32F405src/main/target/CIPHERWINGF4/CMakeLists.txt