Status: Active development. Interfaces, configs, and behavior can change quickly.
32Raven is a high-performance, bare-metal flight control ecosystem designed from the ground up.
Unlike standard hobbyist stacks, 32Raven utilizes a decoupled dual-target architecture to ensure maximum reliability:
stm32/(The Brain): Real-time, deterministic flight-control logic (sensors, PID loops, low-level drivers) running on STM32F407.esp32/(The Bridge): High-level communication, telemetry (MAVLink/CRSF), and wireless integration (WiFi/OTA).libs/: Shared core logic and math utilities used by both targets.
The project is built on a "Bare-Metal First" philosophy. Our goal is to eliminate the unpredictability of heavy abstractions to achieve industrial-grade timing and control.
- Deterministic Performance: We prioritize minimal abstraction overhead for predictable runtime behavior.
- HAL Strategy: HAL is currently used for initial bring-up (clocks, peripherals). Runtime data paths are being systematically migrated to direct register-level control.
- Hardware Stack: Optimized custom drivers for the
ICM42688PIMU andu-blox M9NGPS. - Wireless First: Built-in support for flashing the STM32 "over the air" via the ESP32 communication bridge.
stm32/— STM32 firmware, drivers, core flight state machine.esp32/— ESP-IDF firmware, MAVLink/CRSF bridge, and failsafe services.libs/— Shared headers and portable source code.tools/— Helper scripts for flashing, bridging, and telemetry dashboards.scripts/— Linting and project automation.
- CMake (3.22+)
- ARM GCC toolchain (
arm-none-eabi-*) for STM32 - ESP-IDF for the ESP32 target
- Python 3 for helper tools
Note: Optional local overrides (e.g.,
IDF_PATH, serial port, baud) are read fromuser_config.cmake.
make configure
| Target | Command |
|---|---|
| STM32 Only | make stm32 |
| ESP32 Only | make esp32 |
| Complete Stack | make all |
| Cleanup | make clean |
make flash-esp32
make flash-wifi-esp32 ESP_IP=192.168.4.1
This flashes the STM32 via the ESP32's WiFi connection:
make flash-wifi-stm32 ESP_IP=192.168.4.1
- Generator: The top-level build uses
GEN(defaultNinja). To change:make configure GEN="Unix Makefiles". - Output: The STM32 binary is generated under
build/stm32/. - Toolchains: If switching generators or toolchains, always run
make cleanfirst.