New target: FlyDragon Pro
User description
Adds support for FlyDragon Pro flight controllers.
There are two variants, one with ICM42688P IMU and one with MPU6000. Both variants use the same target.
I have tested:
- ICM42688P variant: gyro works and has correct orientation
- MPU6000 variant: gyro works and has correct orientation
- barometer works
- blackbox works
- vbat adc works
- vbat adc calibrated using multimeter
- internal ELRS receiver works
- UART1 works. tested using internal ELRS receiver
- UART2 works. tested using external CRSF receiver
- UART3 works. tested using external CRSF receiver; no telemetry as only RX pin is exposed
- UART4 works. tested using external SBUS and SBUS2 receiver
- UART5 works. tested using external CRSF receiver
- onboard RGB led works and is configured as indicator led by default
- all 9 servo/motor outputs work. tested using a servo.
- USB-C port 5.1k pulldowns exist
PR Type
Enhancement
Description
-
Adds complete support for FlyDragon Pro flight controller
-
Supports two IMU variants: ICM42688P and MPU6000
-
Configures 9 servo/motor outputs with flexible pin mapping
-
Enables internal ExpressLRS receiver, multiple UARTs, barometer, blackbox
Diagram Walkthrough
flowchart LR
A["FlyDragon Pro<br/>STM32F722RET6"] --> B["IMU Variants<br/>ICM42688P/MPU6000"]
A --> C["Peripherals<br/>Barometer, Blackbox"]
A --> D["Connectivity<br/>5x UART, I2C, SPI"]
A --> E["Outputs<br/>9 Servo/Motor Pins"]
A --> F["RGB LED<br/>WS2812B Indicator"]
File Walkthrough
| Relevant files | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Configuration changes |
| ||||||||
| Documentation |
|
PR Compliance Guide 🔍
Below is a summary of compliance checks for this PR:
| Security Compliance | |
| 🟢 | No security concerns identifiedNo security vulnerabilities detected by AI analysis. Human verification advised for critical code. |
| Ticket Compliance | |
| ⚪ | 🎫 No ticket provided
|
| Codebase Duplication Compliance | |
| ⚪ | Codebase context is not definedFollow the guide to enable codebase context checks. |
| Custom Compliance | |
| 🟢 |
Generic: Meaningful Naming and Self-Documenting CodeObjective: Ensure all identifiers clearly express their purpose and intent, making code Status: Passed
|
Generic: Secure Error HandlingObjective: To prevent the leakage of sensitive system information through error messages while Status: Passed
| |
Generic: Secure Logging PracticesObjective: To ensure logs are useful for debugging and auditing without exposing sensitive Status: Passed
| |
Generic: Security-First Input Validation and Data HandlingObjective: Ensure all data inputs are validated, sanitized, and handled securely to prevent Status: Passed
| |
| ⚪ | Generic: Comprehensive Audit TrailsObjective: To create a detailed and reliable record of critical system actions for security analysis Status: Referred Code
|
Generic: Robust Error Handling and Edge Case ManagementObjective: Ensure comprehensive error handling that provides meaningful context and graceful Status: Referred Code
| |
| |
Compliance status legend
🟢 - Fully Compliant🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label
PR Code Suggestions ✨
Explore these optional code suggestions:
| Category | Suggestion | Impact |
| High-level |
Implement dynamic servo output remappingThe current implementation of servo outputs is static, which contradicts the Examples:src/main/target/FLYDRAGONPRO/README.md [30-44]
src/main/target/FLYDRAGONPRO/target.c [27-45]
Solution Walkthrough:Before:
After:
Suggestion importance[1-10]: 9__ Why: The suggestion correctly identifies a critical discrepancy between the documented servo remapping behavior and the static implementation, which would lead to user confusion and incorrect output configuration. | High |
| Possible issue |
Use correct IMU definition macroReplace the src/main/target/FLYDRAGONPRO/target.h [42-46]
Suggestion importance[1-10]: 9__ Why: The suggestion correctly identifies a critical mismatch between the IMU hardware ( | High |
| Learned best practice |
Use consistent hex I2C addressUse a clear hex address constant to match datasheets/docs and avoid ambiguity; src/main/target/FLYDRAGONPRO/target.h [55-69]
Suggestion importance[1-10]: 6__ Why: Relevant best practice - Align mode/enum priorities and max values across modules and documentation to maintain a single source of truth. | Low |
| ||
This checklist can be very handy to see at a glance what has been tested and what still needs to be tested:
- [ ] Samples received
- [x] Flash firmware
- [x] Calibrate
- [x] Orientation matches
- [x] Gyro working
- [x] Accel working
- [x] Baro working
- [x] Blackbox
- [x] UART1
- [x] UART2
- [x] UART3
- [x] UART4
- [x] UART5
- [x] Motor outputs
- [ ] DShot support on m1-4
- [x] Servo outputs
- [x] Voltage ADC
- [ ] Mag I2C Bus
- [ ] PINIO1
The available UARTs have to be adjusted for each board, of course.