基于 ArduPilot 的 Diatone Mamba Basic F405 飞控板配置指南:硬件定义、引脚映射与固件烧录
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
本篇技术指南以 ArduPilot 仓库中 Mamba Basic F405 飞控板的硬件定义文档为核心,系统讲解 Diatone Mamba Basic F405(20x20 与 30x30 两种尺寸)的板载资源、UART 映射、RC 输入、PWM 输出、电池监控参数、外接罗盘以及 DFU 固件加载流程。读完本文,你将能够根据libraries/AP_HAL_ChibiOS/hwdef/MambaF405US-I2C/下的硬件定义文件,正确接线、配置参数并完成首次固件刷写与后续更新。
板卡概述与硬件特性
Mamba Basic F405 系列飞控由 Diatone 生产,ArduPilot 官方为其维护了独立的硬件定义目录 libraries/AP_HAL_ChibiOS/hwdef/MambaF405US-I2C/,涵盖 30x30(Basic F405 MK3 Lite)与 20x20(Basic F405 Mini MK3.5)两种安装孔位规格。
根据 README.md 与 hwdef.dat,该板卡的核心特性如下:
| 特性 | 规格 | | :- | :- | | 主控 MCU | STM32F405RGT6(Cortex-M4F,1MB Flash / 192KB RAM) | | IMU | MPU6000(通过 SPI1 挂载,ROTATION_YAW_90安装朝向) | | OSD | AT7456E(通过 SPI2 挂载,MAX7456 驱动) | | 串口 | 4 个 UART(另含 USB 虚拟串口) | | PWM 输出 | 4 路(ESC1~ESC4),支持 DShot 及全部 PWM 类型 | | 电压/电流传感 | 板载,最高支持 6S LiPo |
从 hwdef.dat 可以看到,板卡标识APJ_BOARD_ID AP_HW_MAMBABASICF4,对应 bootloader 板卡 ID 1038(见 Tools/AP_Bootloader/board_types.txt)。晶体频率为 8MHz,I2C 总线顺序为 I2C1,串口顺序(含 USB)为OTG1 USART1 USART2 USART3 UART4 UART5 USART6,与板上丝印标注顺序一致。
引脚图与引脚布局
Mamba Basic F405 的 20x20 与 30x30 两个版本各有独立的引脚图,原文档分别给出了对应图片,可直接对照实物接线:
引脚图中标有电源(3V3/5V/GND/5V-IN)、UART(TXn/RXn)、PWM/ESC(RC、SERVO、CAM)、USB Type-C(含 BOOT 按键)以及外接 GPS、接收机、图传等外设接口。20x20 版本偏重基础功能(如 MAMBA MSR 接收机、摄像头),30x30 版本额外提供了更丰富的 LED/图传扩展接口,适合挂载更多外设。
UART 映射
Mamba Basic F405 的 UART 以 Rn / Tn 丝印标注,其中 Rn 为 UARTn 的接收引脚(RX),Tn 为发送引脚(TX)。出厂默认的串口功能映射如下:
| 名称 | 引脚 | 功能 | | :- | :- | :- | | SERIAL0 | COMPUTER | USB | | SERIAL1 | PPM/RX1/SBUS/TX1 | UART1(RC 输入) | | SERIAL2 | TX2/RX2 | UART2(空) | | SERIAL3 | TX3/RX3 | UART3(Telem1) | | SERIAL4 | TX4/RX4 | UART4(空) | | SERIAL6 | TX6/RX6 | UART6(GPS) |
在 hwdef.dat 中可以看到各 UART 的实际引脚分配:USART1 接 SBUS/PPM 输入,USART2/3、UART4、UART5、USART6 均被分配,其中 UART4(PA0/PA1)与 UART5(PC12/PD2)标记为NODMA,即在 DMA 资源受限时仍可保证收发可用。USB 使用 PA11/PA12(OTG_FS),VBUS 检测接 PC5。
实际使用中,SERIAL3(USART3)默认作为第一遥测口,SERIAL6(USART6)默认作为 GPS 口,SERIAL2、SERIAL4 可根据需要在地面站中重新指定功能(如数传、OSD、外接传感器等)。
RC 输入
RC 输入配置在 PPM(UART1_RX)引脚上,支持所有 RC 协议(SBUS、IBUS、DSM、CRSF 等)。
从 hwdef.dat 的源码细节可以看到:
- 默认情况下
PB7 TIM4_CH2 TIM4 RCININT PULLDOWN,即 RC 输入走定时器捕获(RCININT),这是"ALT 0"配置; - 同时
PC0 USART1_RXINV OUTPUT HIGH GPIO(78) POL(0)是 SBUS 反相控制脚(低电平有效),用于驱动 SBUS 信号反相; - 若切换到"ALT 1"配置,
PB7则被重新定义为USART1_RX,RC 信号改由 UART 接收。
OSD 支持
Mamba Basic F405 的 OSD 使用 MAX7456 驱动,地面站中设置OSD_TYPE 1即可启用。
硬件层面,AT7456E 通过 SPI2 挂载(SPIDEV osd SPI2 DEVID4 OSD_CS MODE0 10*MHZ 10*MHZ,见 hwdef.dat),且默认define OSD_ENABLED 1、define HAL_OSD_TYPE_DEFAULT 1,固件编译时即默认开启 MAX7456 类型 OSD。OSD 字体通过ROMFS_WILDCARD libraries/AP_OSD/fonts/font*.bin打包进固件。
PWM 输出
Mamba Basic F405 支持最多4 路 PWM 输出,对应引脚图中的 ESC1~ESC4 焊盘,全部支持 DShot 以及所有 PWM 类型(PWM、OneShot 等)。
PWM 通道分配与定时器分组如下(hwdef.dat):
| 输出 | 引脚 | 定时器通道 | GPIO | | :- | :- | :- | :- | | PWM(1) | PA9 | TIM1_CH2 | GPIO(50) | | PWM(2) | PA8 | TIM1_CH1 | GPIO(51) | | PWM(3) | PC9 | TIM3_CH4 | GPIO(52) | | PWM(4) | PC8 | TIM3_CH3 | GPIO(53) |
重要限制:4 路输出同属一个定时器组(TIM1+TIM3 共用同一输出组)。同一组内的通道必须使用相同的输出速率;如果组内任一通道使用 DShot,则整组通道都必须使用 DShot。这一点在布线电机和设置 SERVOx_FUNCTION 时务必注意,避免混用不同协议导致输出异常。
电池监控
Mamba Basic F405 板载电压传感器,最高支持 6S LiPo。推荐的电池参数设置如下:
- BATT_MONITOR= 3(使用板载模拟电压/电流传感)
- BATT_VOLT_PIN= 11(电压采样 ADC 引脚 PC1)
- BATT_VOLT_MULT≈ 11.0(电压分压系数)
- BATT_CURR_PIN= 13(电流采样 ADC 引脚 PC3)
- BATT_CURR_MULT≈ 28(20x20 配 40A 电调,计算值,需实测标定)
这些默认值在 hwdef.dat 中已通过编译期宏给出基准:HAL_BATT_VOLT_PIN 11、HAL_BATT_CURR_PIN 13、HAL_BATT_VOLT_SCALE 11、HAL_BATT_CURR_SCALE 39。需要注意的是,hwdef 中的电流比例默认值(39)与 README 建议的 28 略有差异——README 中 28 是依据 20x20 40A 电调计算得出的待验证值,实际装机后应以万用表/电流计实测校准为准(可通过 BATT_CURR_MULT 微调,使地面站显示的电流与实际一致)。
此外板载还有PC2 RSSI_IN ADC1模拟 RSSI 输入,hwdef 中define BOARD_RSSI_ANA_PIN 12,该引脚也可作为模拟空速计输入复用。
罗盘(Compass)
Mamba Basic F405没有板载罗盘,需要使用外部罗盘,通过板上 SDA / SCL 焊盘(I2C1,PB8/PB9)外接。
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 2即固件在 I2C1 总线上自动探测所有可能的外部罗盘类型,且不屏蔽任何内部设备;HAL_COMPASS_AUTO_ROT_DEFAULT 2表示外部罗盘默认按 ROTATION_YAW_270 方向假设安装(若实测指向不对,可在 COMPASS_ORIENT 中调整)。接线时注意 I2C 引脚在 hwdef 中已声明PULLUP(PB8 I2C1_SCL I2C1 PULLUP、PB9 I2C1_SDA I2C1 PULLUP,见 hwdef.dat)。
作为补充,该板的气压计同样通过 I2C 探测,默认仅启用 BMP280(BARO BMP280 I2C:0:0x76,AP_BARO_BMP280_ENABLED 1),其余气压计后端默认关闭以节省 Flash。
备选配置(BRD_ALT_CONFIG)
通过BRD_ALT_CONFIG参数可以切换 RX1 引脚的备用功能:
| BRD_ALT_CONFIG | RX1 功能 |
|---|---|
| ALT 0(默认) | RCININT(定时器捕获,RC 输入) |
| ALT 1 | RX1/TX1(UART1 串口收发) |
该机制在 hwdef.dat 中通过PB7 USART1_RX USART1 NODMA ALT(1)声明实现:只有 ALT(1) 生效时 PB7 才作为 USART1_RX 使用。选择 ALT 1 后,SERIAL1 变为标准串口,可用于外接串口设备(此时 RC 输入需改用其他方式接入)。
固件加载与升级
首次刷写(DFU)
Mamba Basic F405 的首次固件加载通过 DFU 模式完成:
- 按住板上的BOOT 按键插入 USB;
- 等待系统识别出 DFU 设备;
- 使用任意 DFU 加载工具刷写
*_with_bl.hex固件(该版本包含 bootloader)。
从 hwdef-bl.dat 可以看到 bootloader 的布局约束:bootloader 本体限制在 16KB 以内(FLASH_USE_MAX_KB 16),安装在 Flash 零偏移处,而应用固件从 48KB 处开始加载(FLASH_BOOTLOADER_LOAD_KB 48),与主固件 hwdef 中的FLASH_RESERVE_START_KB 48严格对应——即主固件 Flash 布局预留了前 48KB 给 bootloader 与存储区。
后续升级
首次刷入with_bl.hex后,就可以用任意 ArduPilot 地面站(如 Mission Planner / QGroundControl)进行固件更新,更新时使用*.apj固件文件。
需要注意:该板属于低 Flash 空间板卡,主固件通过 include/minimize_fpv_osd.inc 裁剪了大量不常用的驱动(如光流、大部分测距仪后端、SMBUS 电池计、油机、高级失效保护、PrecLand 等),并通过 include/no_bootloader_DFU.inc 关闭了 ROMFS 中的 bootloader 烧写功能(AP_BOOTLOADER_FLASHING_ENABLED 0),以节省约 11KB Flash。这意味着:
- 日常更新用
.apj即可,无需重新刷 bootloader; - 若确需升级 bootloader,必须重新进入 DFU 模式,用
with_bl.hex镜像刷写。
同系列变体说明
仓库中还维护了与 MambaF405US-I2C 同源的变体配置,便于横向参考:
- libraries/AP_HAL_ChibiOS/hwdef/MambaF405-2022/hwdef.dat:通过
include ../MambaF405US-I2C/hwdef.dat复用本板定义,并在此基础上扩展为 6 路 PWM(PWM5/6 用 PB0/PB1)、LED 灯带输出(PB3 TIM2)、VTX 供电控制(PC5)等,IMU 升级为 icm42688,气压计改用 SPL06; - libraries/AP_HAL_ChibiOS/hwdef/MambaF405v2/:早期 Mamba F405 MK2 版本,板卡 ID 为
AP_HW_MAMBA405,同样基于 F405 + MPU6000 + 7456 OSD 架构。
如果你使用的是这些派生板,请以对应目录的 README 与 hwdef 为准核对引脚与参数差异。
小结
Mamba Basic F405 是典型的 FPV 用途 F405 飞控:4 路同组 PWM、单 IMU、AT7456E OSD、无板载罗盘,Flash 空间有限。在 ArduPilot 中使用时,牢记以下几点即可快速上手:
- 首次刷写用 DFU +
with_bl.hex,日常升级用.apj; - 电池参数以
BATT_MONITOR 3为基础,电压倍率 11.0,电流倍率需实测标定; - 4 路 PWM 同组同速率,混用 DShot 必须整组统一;
- 罗盘走 I2C1 外接,固件会自动探测;
- RC 输入默认在 PPM/RX1,需要串口时可切换
BRD_ALT_CONFIG。
如需查看完整硬件定义,可直接阅读 hwdef.dat 与 hwdef-bl.dat,并结合 README.md 中的两张引脚图进行实际接线。
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考