Skip to content

Conversation

@sensei-hacker
Copy link
Member

@sensei-hacker sensei-hacker commented Jan 24, 2026

User description

Summary

Adds support for the Aikon F405 V3 flight controller board.

Hardware Specifications

  • MCU: STM32F405RGT6
  • Gyro: ICM42688P/ICM42605 on SPI1 (CW270 alignment)
  • Flash: W25Q128FV 16MB on SPI2
  • OSD: MAX7456 on SPI3
  • Barometer: BMP280/DPS310 on I2C1
  • Motor Outputs: 6 with DMA (full DSHOT support)
  • UARTs: 5 (UART1-5)
  • LED: PB4, Beeper: PB5
  • PINIO: PB7 (10V BEC), PB3 (Camera control)

Key Differences from AIKONF4

  • Different gyro: ICM42688P instead of MPU6000
  • LED/Beeper pins swapped
  • UART5 added (RX-only on PD2)
  • All 6 motor outputs have DMA enabled (vs 4 on AIKONF4)

Notes

This is a draft PR pending hardware testing


PR Type

Enhancement


Description

  • Adds support for Aikon F405 V3 flight controller board

  • Configures ICM42688P/ICM42605 gyro with CW270 alignment

  • Enables 6 motor outputs with full DMA/DSHOT support

  • Includes 5 UARTs, OSD, barometer, and PINIO features


Diagram Walkthrough

flowchart LR
  MCU["STM32F405RGT6"]
  SPI1["SPI1: ICM42688P/ICM42605 Gyro"]
  SPI2["SPI2: W25Q128FV Flash"]
  SPI3["SPI3: MAX7456 OSD"]
  I2C["I2C1: BMP280/DPS310 Baro"]
  MOTORS["6 Motor Outputs with DMA"]
  UART["5 UARTs + USB VCP"]
  PINIO["PINIO: 10V BEC, Camera"]
  
  MCU --> SPI1
  MCU --> SPI2
  MCU --> SPI3
  MCU --> I2C
  MCU --> MOTORS
  MCU --> UART
  MCU --> PINIO
Loading

File Walkthrough

Relevant files
Configuration changes
target.h
Complete hardware configuration for AIKONF4V3                       

src/main/target/AIKONF4V3/target.h

  • Defines board identifier and USB product string for AIKONF4V3
  • Configures LED (PB4) and beeper (PB5) pins with beeper inversion
  • Sets up SPI1 for ICM42688P/ICM42605 gyro with CW270 alignment
  • Configures SPI2 for W25Q128FV 16MB flash with blackbox logging
  • Enables SPI3 for MAX7456 OSD module
  • Defines I2C1 for barometer (BMP280/DPS310) and magnetometer
  • Configures 5 UARTs with UART5 RX-only on PD2
  • Sets up ADC3 for voltage, current, and RSSI monitoring
  • Enables PINIO for 10V BEC (PB7) and camera control (PB3)
  • Includes DSHOT, ESC sensor, BLHeli passthrough, rangefinder, and
    Spektrum bind support
  • Enables default features including OSD, telemetry, blackbox, and TX
    profile selection
+169/-0 
target.c
Timer and DMA configuration for motors                                     

src/main/target/AIKONF4V3/target.c

  • Defines timer hardware configuration for 6 motor outputs
  • Motors 1-4 on TIM8 with DMA2 streams (2, 3, 4, 7)
  • Motors 5-6 on TIM3 with DMA1 streams (7, 2)
  • LED strip on TIM4 with DMA1 stream 0
  • All motor outputs configured with TIM_USE_OUTPUT_AUTO for DSHOT
    support
+42/-0   
CMakeLists.txt
Build configuration for AIKONF4V3                                               

src/main/target/AIKONF4V3/CMakeLists.txt

  • Adds CMake build configuration for AIKONF4V3 target
  • Specifies STM32F405 MCU variant with 1MB flash
+1/-0     

Create target configuration for Aikon F405 V3 flight controller.

Hardware:
- MCU: STM32F405RGT6
- Gyro: ICM42688P/ICM42605 on SPI1
- Flash: W25Q128FV 16MB on SPI2
- OSD: MAX7456 on SPI3
- Baro: BMP280/DPS310 on I2C1
- 6 motor outputs with DMA (full DSHOT support)
- 5 UARTs
- PINIO support for 10V BEC and camera control

Key differences from AIKONF4:
- Different gyro (ICM42688P vs MPU6000)
- LED/Beeper pins swapped (LED=PB4, Beeper=PB5)
- UART5 added (RX only on PD2)
- All 6 motor outputs have DMA enabled

INAV-specific optimizations:
- FEATURE_TX_PROF_SEL enabled for stick-based profile switching
- BLHeli passthrough (USE_SERIAL_4WAY_BLHELI_INTERFACE)
- Rangefinder support (USE_RANGEFINDER, USE_RANGEFINDER_MSP)
- Spektrum bind support (USE_SPEKTRUM_BIND)
- Explicit OSD definition (USE_OSD)

DMA allocation verified conflict-free:
- TIM8 motors 1-4: DMA2 streams 2,3,4,7
- TIM3 motors 5-6: DMA1 streams 7,2
- TIM4 LED strip: DMA1 stream 0

Build verified: 68.27% flash usage (within limits)
@sensei-hacker sensei-hacker added New target This PR adds a new target Testing Required labels Jan 24, 2026
@sensei-hacker sensei-hacker marked this pull request as ready for review January 24, 2026 04:02
@qodo-code-review
Copy link
Contributor

PR Compliance Guide 🔍

All compliance sections have been disabled in the configurations.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant