
ArduPilot MicoAir405Mini 飞控板硬件适配指南STM32F405 迷你 FPV 飞控的 hwdef 配置与实战部署【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot导读MicoAir405Mini 是一款由 MicoAir Tech 设计生产的迷你 FPV 飞控采用 STM32F405 主控板载 BMI270 惯性测量单元IMU与 DPS310 气压计并原生支持 AT7456E OSD、SD 卡、6 路 UART 与 9 路 PWM 输出。本文以 libraries/AP_HAL_ChibiOS/hwdef/MicoAir405Mini/README.md 为骨架结合同一目录下的 hwdef.dat 硬件定义文件与 defaults.parm 默认参数逐项讲解其硬件特性、UART 映射、RC 输入、OSD/VTX 支持、PWM 分组、电池监测与固件烧录流程。读完本文你将掌握这块板子在 ArduPilot 生态中的完整适配要点并能够依据底层源码自行排查外设配置问题。硬件规格总览核心特性MicoAir405Mini 的硬件规格如下主控芯片STM32F405 微控制器IMUBMI270SPI 接口气压计DPS310SPI 接口OSDAT7456E 字符叠加芯片电源9V 2.5A BEC5V 2.5A BEC存储SD 卡SPI3 接口串口6 路 UARTPWM 输出9 路以上规格与 hwdef.dat 中MCU STM32F4xx STM32F405xx、IMU BMI270 SPI:bmi270 ROTATION_ROLL_180、BARO DPS310 SPI:dps310等定义一一对应。其中 IMU 安装方向为ROTATION_ROLL_180绕横滚轴旋转 180°这是确定姿态解算正确性的关键一行若更换飞控板固件时忽略此旋转定义会出现翻滚/俯仰轴颠倒。机械尺寸安装孔距20 × 20mm孔径 Φ3.5mm外形尺寸30 × 30 × 8 mm重量6g20 × 20mm 是 FPV 穿越机常见的标准孔距配合 6g 的轻量化设计该板定位明确面向追求轻量化的 FPV 与航拍机平台。板卡物理视图与端口布局板卡正面与背面的实物照片位于板卡目录下可直观确认元器件布局正面视图MicoAir405Mini_FrontView.jpg背面视图MicoAir405Mini_BackView.jpg端口接线图MicoAir405Mini_PortsConnection.jpg除此之外目录中还提供了MicoAir405Mini_Pinout.xlsx引脚定义表接线前建议与端口图对照使用。UART 映射与串口协议分配默认串口映射MicoAir405Mini 提供 6 路 UART 加 1 路 USB在 ArduPilot 中依次对应 SERIAL0 ~ SERIAL6SERIAL0→ USB地面站连接SERIAL1→ UART1MAVLink2支持 DMASERIAL2→ UART2DisplayPortTX 单向启用 DMASERIAL3→ UART3GPSSERIAL4→ UART4MAVLink2TX 单向启用 DMASERIAL5→ UART5ESC 遥测SERIAL6→ UART6RX6 来自 SBUS 引脚且为反相信号RX 单向启用 DMA上述映射与 hwdef.dat 中的串口定义行严格对应# order of UARTs (and USB) # SERIAL_NUM|SER0|SER1 |SER2 |SER3 |SER4 |SER5 |SER6 | # FUNCTION |USB | |DJIO3 |GPS | |ESC |SBUS | SERIAL_ORDER OTG1 USART1 USART2 USART3 UART4 UART5 USART6注意第 7 行注释中的功能规划UART2 面向 DJI O3 图传DisplayPort、UART3 面向 GPS、UART5 面向 ESC 遥测、UART6 面向 SBUS。默认串口协议defaults.parmdefaults.parm 中给出了各串口的出厂默认协议可直接作为配置参考SERIAL1_PROTOCOL 2 SERIAL2_PROTOCOL 42 SERIAL3_PROTOCOL 5 SERIAL4_PROTOCOL 2 SERIAL5_PROTOCOL 16 SERIAL6_PROTOCOL 23对照 libraries/AP_SerialManager/AP_SerialManager.h 中的SerialProtocol枚举这些数值含义为参数数值协议含义SERIAL1_PROTOCOL2MAVLink2SERIAL2_PROTOCOL42MSP DisplayPortSERIAL3_PROTOCOL5GPSSERIAL4_PROTOCOL2MAVLink2SERIAL5_PROTOCOL16ESC TelemetryESC 遥测SERIAL6_PROTOCOL23RCIN遥控接收机输入从源码枚举可以看到SerialProtocol_MAVLink2 2、SerialProtocol_GPS 5、SerialProtocol_ESCTelemetry 16、SerialProtocol_RCIN 23、SerialProtocol_MSP_DisplayPort 42与默认参数完全吻合。串口 DMA 支持README 中标注的 DMA-enabled 信息与 hwdef.dat 中NODMA标记对应USART1 收发均支持 DMAUSART2、UART4、UART5 的 RX 被标记NODMA仅 TX 支持 DMAUSART3GPS收发均为NODMAGPS 通常波特率较低、数据量小不依赖 DMAUSART6 的 RX 支持 DMA且由PC15 SBUS_INV OUTPUT提供 SBUS 反相器。DMA 对高波特率、大数据量串口如 MAVLink 遥测影响显著可降低 CPU 中断负载而对 GPS 这类低速率外设影响较小。RC 输入配置MicoAir405Mini 的默认 RC 输入为 SBUS通过板载 SBUS 引脚接入。从 hwdef.dat 可以看到 USART6 的 RX 引脚PC7与 SBUS 反相器PC15直接相连因此 SBUS 信号经硬件反相后进入 USART6。若需要改用其他 RC 协议如 CRSF、FPort、DSM 等有两种途径将其他协议接收机接到某个 UART例如 UART1 或 UART4并把该串口协议设置为SERIALn_PROTOCOL23RCIN同时将 SERIAL6 的协议改为非 23 的值避免两个串口同时声明 RCIN 输入导致冲突。从 AP_SerialManager.h 源码可以看出SerialProtocol_RCIN 23是 RC 接收机信号的统一入口协议任何支持串口的接收机协议SBUS、CRSF、FPort、DSM、SRXL2 等都可以通过该协议值挂载到对应串口。OSD 与 VTX 支持板载 OSDMicoAir405Mini 板载 AT7456E 字符叠加芯片通过 SPI1 总线挂载片选为 PB12。README 中明确使用OSD_TYPE1MAX7456 驱动即可启用板载 OSD。在 hwdef.dat 中可以看到 OSD 相关的编译期定义# setup for OSD define OSD_ENABLED 1 define HAL_OSD_TYPE_DEFAULT 1 ROMFS_WILDCARD libraries/AP_OSD/fonts/font0.bin其中HAL_OSD_TYPE_DEFAULT 1会在运行时把默认 OSD 类型设为 MAX7456。AP_OSD.cpp 中 OSD 类型枚举为0:None, 1:MAX7456, 2:SITL, 3:MSP, 4:TXONLY, 5:MSP_DISPLAYPORT与 README 的说明一致。值得注意的是 defaults.parm 中额外设置了#enable second OSD type OSD_TYPE2 5即第二路 OSD 类型为MSP_DISPLAYPORT用于 DJI O3 图传的 DisplayPort 叠加。这在UART2 接 DJI O3 Air Unit的场景下非常关键地面站可将 OSD 画面同时通过 MAX7456 与 DJI 高清图传输出。VTX图传支持SH1.0-6P 连接器用于连接 DJI O3 Air Unit。特别注意该连接器引脚 1 为 9V 供电务必不要将 5V 外设接到此引脚否则可能烧毁设备。UART2 对应此连接器默认协议为SERIAL2_PROTOCOL 42MSP DisplayPort实现 DJI 高清数字图传的画面叠加与控制。PWM 输出通道与分组MicoAir405Mini 支持最多 9 路 PWM 输出其中通道 1–8 支持 DShot通道 1–4 支持双向 DShotbi-directional DShot可用于 RPM 遥测如 BLHeli_32 电调回传PWM 输出按定时器分组同一组内必须使用相同的输出协议例如不能把 PWM 和 DShot 混在同一组。分组关系如下通道 3、4 → Group 1通道 1、2、5、6 → Group 2通道 7、8 → Group 3通道 9 → Group 4在 hwdef.dat 中可以验证分组来源——同一定时器TIM的通道即为同一组PB0 TIM3_CH3 TIM3 PWM(1) GPIO(50) PB1 TIM3_CH4 TIM3 PWM(2) GPIO(51) BIDIR PA15 TIM2_CH1 TIM2 PWM(3) GPIO(52) BIDIR PB3 TIM2_CH2 TIM2 PWM(4) GPIO(53) PB4 TIM3_CH1 TIM3 PWM(5) GPIO(54) PB5 TIM3_CH2 TIM3 PWM(6) GPIO(55) PB8 TIM4_CH3 TIM4 PWM(7) GPIO(56) PB9 TIM4_CH4 TIM4 PWM(8) GPIO(57) PB14 TIM12_CH1 TIM12 PWM(9) GPIO(58) NODMA可以看到Group 1 TIM2通道 PWM(3)、PWM(4)Group 2 TIM3通道 PWM(1)、PWM(2)、PWM(5)、PWM(6)Group 3 TIM4通道 PWM(7)、PWM(8)Group 4 TIM12通道 PWM(9)其中BIDIR标记PWM(2)、PWM(3)表示这两个通道支持双向 DShot而第 9 路 PWM 因NODMA不支持 DShot。这一分组结构决定了电机/电调接线时必须保证同一协议的电调落在同一组内否则需要调整 SERVOx_FUNCTION 或更换输出端口。电池监测Battery MonitoringMicoAir405Mini 板载电压传感器ESC 连接器上提供外部电流传感器输入接口。电压传感器最高支持6S LiPo 电池。默认电池参数如下BATT_MONITOR 4Analog Voltage and Current模拟电压电流BATT_VOLT_PIN 10BATT_CURR_PIN 11BATT_VOLT_MULT 21.2BATT_AMP_PERVLT 40.2这些默认值来自 hwdef.dat 中的两处定义模拟引脚PC0 BATT_VOLTAGE_SENS ADC1 SCALE(1)、PC1 BATT_CURRENT_SENS ADC1 SCALE(1)编译期默认标定HAL_BATT_VOLT_PIN 10、HAL_BATT_VOLT_SCALE 21.2、HAL_BATT_CURR_PIN 11、HAL_BATT_CURR_SCALE 40.2同时 defaults.parm 中的BATT_MONITOR 4将默认监测方式设为模拟电压电流。提示若更换电调或电流传感器BATT_VOLT_MULT与BATT_AMP_PERVLT需要依据分压电阻和采样电阻重新标定可通过地面站校准向导完成。若使用 6S 以上电池必须外接降压模块或更换适配的电压采样方案。罗盘CompassMicoAir405Mini没有板载罗盘。需通过 SDA/SCL 连接器外接 I2C 罗盘。从 hwdef.dat 可以看到相关的关键配置# no built-in compass, but probe the i2c bus for all possible # external compass types define AP_COMPASS_PROBING_ENABLED 1 define HAL_I2C_INTERNAL_MASK 0 define HAL_COMPASS_AUTO_ROT_DEFAULT 2AP_COMPASS_PROBING_ENABLED 1I2C 总线上自动探测所有可能的罗盘类型常见如 HMC5883、QMC5883、IST8310 等HAL_I2C_INTERNAL_MASK 0无内部 I2C 设备需要屏蔽HAL_COMPASS_AUTO_ROT_DEFAULT 2外接罗盘的默认自动旋转方向为 2即绕 Z 轴 180°这是 FPV 穿越机常见的前向朝后安装方式。板载 I2C1 总线PB6SCLPB7SDA用于外接罗盘及其他 I2C 外设。若外接罗盘的方向与前向不一致需通过地面站的COMPASS_ORIENT参数修正。固件烧录与更新首次烧录DFU 模式首次加载固件时按住bootloader 按钮插入 USB使板卡进入 DFU 模式然后使用任意 DFU 烧录工具加载with_bl.hex固件该固件包含 bootloader 应用程序。在 ArduPilot 构建体系中各板卡的固件由 waf 构建系统生成例如./waf configure --board MicoAir405Mini ./waf copter生成的*.hex、*.apj、*.bin文件位于build/MicoAir405Mini/bin/目录下。首次烧录使用包含 bootloader 的with_bl.hex此后便可通过地面站更新。后续更新地面站方式一旦 bootloader 就位即可使用任意 ArduPilot 地面站软件如 Mission Planner、QGroundControl、MAVProxy通过*.apj固件文件在线更新无需再按 bootloader 按钮。说明APJ_BOARD_ID AP_HW_MicoAir405Mini板卡 ID 1161参见 Tools/AP_Bootloader/board_types.txt用于地面站校验.apj固件与目标板卡是否匹配请勿混刷其他板卡的固件。固件体积优化与 FPV 专用裁剪MicoAir405Mini 的 STM32F405 拥有1MB FlashFLASH_SIZE_KB 1024其中保留 48KB 给 bootloader。为在 1MB 空间内塞入完整 ArduPilot 功能hwdef.dat 引入了面向 FPV 平台的裁剪配置# reduce flash usage include ../include/minimize_fpv_osd.inc undef AP_OPTICALFLOW_ENABLEDinclude/minimize_fpv_osd.inc 对 FPV/OSD 用途的低 Flash 板卡做了一系列裁剪包括禁用光流OpticalFlow禁用内燃机ICEngine、高级失效保护AdvancedFailsafe、精密降落PrecLand禁用 SMBUS 电池监测后端仅保留常用模拟监测大幅裁剪测距仪驱动仅保留 Benewake TF02/TF03/TFmini 等常用型号默认仅启用 Quad/Hexa/Octa 多旋翼机架类型减少电机框架代码强制保留 Tramp 图传协议与 CRSF 遥测文本支持二者均依赖 OSD 能力。这些裁剪在保证 FPV 主流功能OSD、图传、双向 DShot、ESC 遥测的前提下显著压缩固件体积。如果需要使用被裁剪的功能例如光流传感器则需要重新编译固件并修改 hwdef 配置——这也是基于 hwdef 自定义固件的典型工作流。故障排查与实战要点串口协议与硬件连接不符先核对 defaults.parm 中的 SERIALn_PROTOCOL再确认物理接线。例如 GPS 必须接 UART3SERIAL3且协议为 5否则地面站收不到 GPS 数据。SBUS 反相问题UART6 的 RX 走板载 SBUS 反相器SBUS 协议默认从 SBUS 引脚接入若改用其他协议接收机请接到 UART1/UART4 等普通串口并将该串口协议设为 23同时把 SERIAL6_PROTOCOL 改为其他值。DShot 无法工作确认通道所在分组的协议一致性。第 9 路Group 4TIM12不支持 DShot8 路以内的 DShot 接线需遵守分组规则。外接罗盘不识别检查 I2C 接线SDA/SCL确认罗盘型号在 I2C 探测列表内并通过COMPASS_ORIENT校准安装方向。电压/电流读数异常重新标定BATT_VOLT_MULT与BATT_AMP_PERVLT并确认电调端电流传感器连接正确、未超过 6S 电压上限。参考资源板卡 READMElibraries/AP_HAL_ChibiOS/hwdef/MicoAir405Mini/README.md硬件定义文件hwdef.dat默认参数文件defaults.parmFPV 裁剪配置minimize_fpv_osd.inc串口协议枚举AP_SerialManager.hOSD 类型实现AP_OSD.cpp板卡 ID 定义Tools/AP_Bootloader/board_types.txt【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考