BrainFPV RADIX 2 HD 飞控板在 ArduPilot 中的配置与固件烧写完全指南
2026/9/14 18:33:49 网站建设 项目流程

BrainFPV RADIX 2 HD 飞控板在 ArduPilot 中的配置与固件烧写完全指南

【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot

导读

本文以 ArduPilot 仓库中 RADIX2HD 板级定义 文档为主线,系统讲解 BrainFPV RADIX 2 HD 高清数字 FPV 飞控板的硬件特性、串口与 PWM 引脚映射、电池监测、RC 输入配置,以及通过 BrainFPV 专有 Bootloader 加载 ArduPilot 固件的三种途径。读完本文,你将掌握如何在 ArduCopter 等机型上正确接线、通过BRD_ALT_CONFIG切换引脚复用,并使用./waf构建工具链配合 BrainFPV Firmware Packer 生成可在 RADIX 2 HD 上运行的固件文件。

一、硬件概览:专为 HD FPV 打造的飞控

RADIX 2 HD 是 BrainFPV 推出的飞控,定位是配合高清(数字)FPV 图传系统的 First Person View(FPV)应用场景。从 hwdef.dat 的板级定义可以确认其核心硬件配置:

部件规格仓库依据
主控 MCUSTM32H750xx(H7 系列,480 MHz 主频)MCU STM32H7xx STM32H750xxMCU_CLOCKRATE_MHZ 480
晶振16 MHz 外部晶振OSCILLATOR_HZ 16000000
IMUBosch Sensortec BMI270(SPI1 接口,ROTATION_ROLL_180)IMU BMI270 SPI:bmi270 ROTATION_ROLL_180
气压计Infineon DPS310(I2C1,地址 0x76)BARO DPS310 I2C:0:0x76
板载 Flash16 MB,QUADSPI 接口,120 MHzEXT_FLASH_SIZE_MB 16QUADSPI1 SPEED_HIGH
存储microSD 卡槽(SDMMC1)SDMMC1_*引脚定义
串口6 路 UART + USB(BRD_ALT_CONFIG=1 时可获得 7 路 UART)SERIAL_ORDER OTG1 USART1 USART2 USART3 UART4 UART5 USART6 UART7
PWM 输出10 路(前 8 路支持 BDSHOT,分布在两个 4-in-1 ESC 接口上)TIM1/TIM2/TIM3/TIM4TIM8输出定义
总线1 路 I2C(I2C1)、1 路 CAN(CAN1,支持 CAN FD 2 Mbit/s)CANFD_SUPPORTED 2
其他板载 RGB LED、外部蜂鸣器、USB Type-CBUZZERLED_RED/GREEN/BLUE引脚定义

供电方面,板载 5 V / 1.5 A 稳压器为飞控和外部设备供电;另有一路 9 V / 2 A 稳压器专供 HD FPV 图传系统,可通过 Relay2 开关控制通断。电池直供范围为 3S–8S(最高 35 V);尺寸为 37 × 37 mm(30.5 mm 孔距),重量仅 7 g,产地为美国且符合 NDAA 合规要求。

从源码结构可以推断,hwdef.dat中声明的FLASH_SIZE_KB 128HAL_FLASH_PROTECTION 1表明内部 Flash 仅供 Bootloader 与保护用途,而固件主体存放在 16 MB 外部 QUADSPI Flash(起始地址 0x90400000,见下文打包脚本),这正是其需要使用专用 Bootloader 与定制固件格式的原因。

二、引脚与串口映射(Pinout & UART Mapping)

官方引脚图存放在板级目录下:

板底图中可见 "PWR:VBAT" 跳线焊盘,用于将电池电压监测与板载供电合二为一(详见第五节电池监测的警告)。

2.1 串口分配

RADIX 2 HD 的串口顺序在 hwdef.dat 中定义为OTG1 USART1 USART2 USART3 UART4 UART5 USART6 UART7,与 ArduPilot 的SERIALn编号一一对应:

串口外设默认用途说明
SERIAL0USBUSB 连接OTG1
SERIAL1UART1MSP DisplayPort OSDDMA 使能,接 HD 图传 OSD
SERIAL2UART2GPSDMA 使能
SERIAL3UART3RC 输入DMA 使能
SERIAL4UART4ESC 遥测NODMA
SERIAL5UART5备用NODMA
SERIAL6UART6备用默认作为 PWM 9/10,BRD_ALT_CONFIG=1时切换为 UART
SERIAL7UART7备用RX 位于 HD 连接器上用于 RC 输入,TX 未引出焊盘

2.2 BRD_ALT_CONFIG 引脚复用机制

SERIAL6 的引脚默认是 PWM 9/10 输出(TX6/RX6 焊盘)。在 hwdef.dat 中,USART6 的 RX/TX 都标记了ALT(1)

PC7 USART6_RX USART6 NODMA ALT(1) PC6 USART6_TX USART6 NODMA ALT(1)

而 GPIO.cpp 中实现了setup_alt_config():当BRD_ALT_CONFIG = 1时,会依据 hwdef 中ALT(n)声明的备用配置表重新切换引脚功能。因此:

  • BRD_ALT_CONFIG = 0(默认):PC6/PC7 作为 TIM8 的 PWM 9/10 输出;
  • BRD_ALT_CONFIG = 1:PC6/PC7 切换为 USART6 的 TX/RX,使 SERIAL6 成为可用的第 7 路 UART。

注意,启用 UART6 后 PWM 9/10 将不可用,二者属于互斥关系。

2.3 I2C 与 CAN

  • I2C:仅 I2C1(PB6 SCL / PB7 SDA,均带 PULLUP),板载 DPS310 气压计挂在该总线上(0x76)。HAL_I2C_INTERNAL_MASK 0AP_COMPASS_PROBING_ENABLED 1表明支持在此总线上探测外部罗盘。
  • CAN:单路 CAN1(PD0 RX / PD1 TX),且CANFD_SUPPORTED 2表明该板支持最高 2 Mbit/s 的 CAN FD 速率。

三、PWM 输出与 BDSHOT

RADIX 2 HD 共 10 路 PWM 输出,前 8 路位于两个 4-in-1 ESC 接口上,全部标记为BIDIR(见 hwdef.dat),支持双向 DShot(BDSHOT)遥测。构建脚本 chibios_hwdef.py 会为含BIDIR标记的板型生成HAL_WITH_BIDIR_DSHOT宏,ArduPilot 据此启用 DShot 双向遥测能力(实现位于 RCOutput_bdshot.cpp)。

PWM 通道按每 2 路一组,同一组内的通道必须使用相同的配置与刷新率:

分组通道定时器/通道备注
Group 1PWM 1–2TIM1 CH2/CH34-in-1 接口 A
Group 2PWM 3–4TIM2 CH1/CH34-in-1 接口 A
Group 3PWM 5–6TIM3 CH2/CH34-in-1 接口 B
Group 4PWM 7–8TIM4 CH2/CH34-in-1 接口 B
Group 5PWM 9–10TIM8 CH1/CH2TX6/RX6 焊盘,与 SERIAL6 复用

Group 5 的两路输出位于 TX6/RX6 焊盘上,与 UART6 共用引脚(对应上文 BRD_ALT_CONFIG 的互斥关系),且这两路为NODMA模式。

四、RC 输入

默认情况下,SERIAL3(UART3)用于 RC 输入。与 RC 接收机相连的 5 V 供电焊盘(RX3 旁的 "+")同样由 USB 供电,这意味着在未接主电池的情况下也能安全、方便地进行接收机与飞控的配置调试。

配合 defaults.parm 的出厂默认参数,RADIX 2 HD 开箱即用的串口协议配置为:

# CRSF receiver on UART3 SERIAL3_PROTOCOL 23 RSSI_TYPE 3 # MSP DisplayPort OSD on UART1 OSD_TYPE 5 SERIAL1_PROTOCOL 42 # GPS on UART2 SERIAL2_PROTOCOL 5 # ESC Telemetry on UART4 SERIAL4_PROTOCOL 16 # 9V regulator switch, ON on boot RELAY2_DEFAULT 1

这些协议编号与 AP_SerialManager.h 中的枚举一致:5 = GPS16 = ESC Telemetry23 = RCIN42 = MSP DisplayPort。在 AP_SerialManager.cpp 的初始化逻辑中,SerialProtocol_RCIN会将 UART 注册给 RC 协议解析器(AP::RC().add_uart()),而 MSP DisplayPort 协议由 AP_MSP 模块接管 OSD 数据流。因此:

  • SERIAL3(23/RCIN)默认对接 CRSF 协议接收机,RSSI_TYPE 3表示从 CRSF 链路读取 RSSI;
  • SERIAL1(42/MSP DisplayPort)驱动 HD 图传的 OSD 显示,OSD_TYPE 5启用 MSP OSD;
  • SERIAL4(16/ESC Telemetry)读取 4-in-1 ESC 的遥测数据;
  • RELAY2_DEFAULT 1保证上电即开启 9 V 稳压器,为 HD FPV 图传系统供电。

如需使用其他 RC 协议(如 SBUS、ELRS),将对应串口的SERIALn_PROTOCOL设置为 23 即可,ArduPilot 的 RC 协议栈会自动探测所支持的协议。

五、模拟输入与电池监测

RADIX 2 HD 提供 3 路模拟输入(见 hwdef.dat):

ADC 引脚功能参数定义
ADC Pin 10(PC0)电池电压(VBAT)HAL_BATT_VOLT_PIN 10,分压比HAL_BATT_VOLT_SCALE 17.6
ADC Pin 3(PA6)电池电流(CUR)HAL_BATT_CURR_PIN 3,电流标度HAL_BATT_CURR_SCALE 28.5
ADC Pin 11(PC1)RSSI 电压监测BOARD_RSSI_ANA_PIN 11

内置 1:17.6 分压电路使得该板最高可监测 12S 电池电压。而板载供电本身最高支持 8S(35 V),板上 "PWR:VBAT" 跳线可将 VBAT 引脚同时用于电池电压监测与板载供电。

⚠️ 重要警告:如果焊接了 "PWR:VBAT" 跳线并使用超过 8S(35 V)的电池给板子供电,将造成硬件损坏。务必参考 BrainFPV 官方文档确认跳线使用方式。

电池监测的默认后端类型由HAL_BATT_MONITOR_DEFAULT 4定义,配合电流传感输入即可在 Mission Planner 等地面站中直接配置电压/电流标定。

六、固件烧写(Loading Firmware)

RADIX 2 HD 使用 BrainFPV 专有 Bootloader,需要特定格式的固件文件。烧写流程为:

  1. 获取固件文件(见下方三种途径);
  2. 按住 BOOT 按钮并连接 USB,使板子进入 Bootloader 模式,电脑上会弹出一个 U 盘;
  3. 将固件文件复制到该 U 盘;
  4. 安全弹出 U 盘,RADIX 2 HD 将自动重启并运行 ArduPilot 固件。

注意:使用 ArduPilot 固件时,必须插入 microSD 卡,否则固件无法运行(ArduPilot 需要 SD 卡存放参数与日志,对应HAL_OS_FATFS_IO 1HAL_STORAGE_SIZE 16384的配置)。

方式一:从 BrainFPV 官网直接下载固件

这是最简单的途径:直接访问 BrainFPV 官网的固件下载页面,获取已打包好的.bin固件文件,按上述流程复制进 U 盘即可。

方式二:从 ArduPilot 构建服务器下载 ELF 并转换

从 ArduPilot Build Server 下载目标为 "RADIX2HD" 的 ELF 文件(例如 ArduCopter 对应arducopter.elf),再使用 BrainFPV Firmware Packer 工具转换为 RADIX 2 HD 可识别的格式。

安装 Python 3(Linux 用包管理器,Windows 从官网安装并务必勾选 "Add Python to PATH"),然后安装 Firmware Packer:

python3 -m pip install https://github.com/BrainFPV/brainfpv_fw_packer/archive/main.zip

转换 ELF 为.bin

brainfpv_fw_packer.py --name arducopter --in arducopter.elf --out arducopter.bin ^ --dev radix2hd -t firmware -b 0x90400000 -z --noheader

其中-b 0x90400000对应外部 QUADSPI Flash 的起始地址(与 hwdef 中 16 MB 外部 Flash 的定义一致),-z --noheader用于生成符合该 Bootloader 预期的固件头格式。

方式三:自行编译固件

如果你已具备可用的 ArduPilot 构建环境,可以直接编译出对应机型的固件,再用 Firmware Packer 打包。以 ArduCopter 为例:

./waf configure --board RADIX2HD ./waf copter

编译完成后,直接调用板级目录中自带的打包脚本:

./libraries/AP_HAL_ChibiOS/hwdef/RADIX2HD/pack_firmware.sh copter

查看 pack_firmware.sh 的实现,该脚本的核心逻辑是:

  1. 读取当前 Git 版本信息(git describe/git rev-parse)作为固件版本号;
  2. arm-none-eabi-objcopyarducopterELF 转换为 HEX;
  3. 调用brainfpv_fw_packer.py,将 HEX 打包为arducopter_{VERSION}_brainfpv.bin,输出到build/RADIX2HD/bin/目录。
arm-none-eabi-objcopy -O ihex ${FW_ELF} ${FW_HEX} brainfpv_fw_packer.py \ --name ardu$1 \ --version ${GIT_VER} \ --sha1 ${GIT_SHA1} \ --in ${FW_HEX} --out ${FW_PACKED} \ --dev radix2hd -t firmware -b 0x90400000 -z --noheader

将生成好的arducopter_{VERSION}_brainfpv.bin复制到 Bootloader 模式下的 U 盘即可完成烧写。

RADIX 2 HD 虽然可以编译其他机型的固件,但主要面向多旋翼(Copter)应用场景。板卡 ID 定义于 board_types.txt(AP_HW_RADIX2HD = 1118);另外,由于该板采用 BrainFPV 专有 Bootloader,hwdef 中AP_BOOTLOADER_FLASHING_ENABLED 0表明无法像普通 ArduPilot 板那样通过地面站在线刷新 Bootloader。

七、参数速查与常见配置

以下为 RADIX 2 HD 开箱即用的关键参数(来自 defaults.parm):

参数默认值含义
SERIAL3_PROTOCOL23(RCIN)UART3 作为 RC 输入,对接 CRSF 等协议接收机
RSSI_TYPE3RSSI 来源为 CRSF 遥控链路
OSD_TYPE5启用 MSP OSD
SERIAL1_PROTOCOL42(DisplayPort)UART1 输出 MSP DisplayPort OSD 到 HD 图传
SERIAL2_PROTOCOL5(GPS)UART2 接 GPS 模块
SERIAL4_PROTOCOL16(ESC Telemetry)UART4 读取 ESC 遥测
RELAY2_DEFAULT1上电默认开启 9 V 稳压器(HD FPV 图传供电)
BRD_ALT_CONFIG0置 1 时将 PWM 9/10 引脚切换为 SERIAL6 UART

从 AP_SerialManager.cpp 的参数文档可以看出,SERIALn_PROTOCOL支持 -1(禁用)到 50(IOMCU)的完整协议集,用户可根据实际外设自由调整各串口的用途,例如把 SERIAL5 改为 5(GPS)或 23(RCIN)。

八、小结

BrainFPV RADIX 2 HD 在 ArduPilot 中的支持由 hwdef/RADIX2HD 目录完整承载:STM32H750 + BMI270 + DPS310 的高性能核心、支持 BDSHOT 的 10 路 PWM、丰富的 7 路 UART 与 CAN/I2C 扩展,以及专为 HD FPV 设计的 9 V 图传供电开关,使其成为高端 FPV 多旋翼的理想选择。烧写固件时只需记住三条路径:官网直接下载、构建服务器 ELF 转换、本地./waf编译打包,配合板级目录自带的pack_firmware.sh脚本,即可快速完成从源码到可飞固件的全流程。

【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询