ArduPilot HEEWING F405 硬件定义详解:UART 映射、DShot 分组、电池监控与 DFU 烧录实战
2026/9/14 8:48:23 网站建设 项目流程

ArduPilot HEEWING F405 硬件定义详解:UART 映射、DShot 分组、电池监控与 DFU 烧录实战

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

本文以 ArduPilot 仓库中 HEEWING-F405 板级硬件定义目录 中的 README 为主体,结合 hwdef.dat 硬件描述文件与 defaults.parm 默认参数,系统讲解 HEEWING F405 飞行控制器的 UART 映射、RC 输入双向切换、DShot PWM 分组规则、电池监控参数与固件烧录流程。读完本文,你可以在 ArduPilot 下正确配置该板的串口、飞控遥控链路、OSD 与电池参数,并顺利完成从 DFU 首次烧录到空中升级的整个流程。

1. 硬件构成与板级基本信息

HEEWING F405 是 HEEWING 生产的一款飞行控制器,随其 Ranger-T1 VTOL RTF 整机出货。其硬件特征在 README 中完整列出:

  • STM32F405 微控制器
  • ICM42688 惯性测量单元(IMU)
  • SLP06 气压计
  • 板载数据记录(dataflash)存储
  • MAX7456 OSD 芯片
  • 4 路 UART
  • 9 路 PWM 输出

hwdef.dat 补充了几个 README 未展开的关键信息,它们决定了编译产物与烧录行为:

  • MCU STM32F4xx STM32F405xx:芯片型号声明;
  • FLASH_SIZE_KB 1024FLASH_RESERVE_START_KB 64:整片 1MB Flash,前 64KB 预留给 bootloader,固件从 64KB 处启动——这正是"必须烧录 with_bl.hex"的原因,见第 8 节;
  • STORAGE_FLASH_PAGE 1/define HAL_STORAGE_SIZE 15360:参数存储位于 Flash 第 1 页,容量 15360 字节;
  • APJ_BOARD_ID AP_HW_HEEWING_F405:APJ 固件包中的板型标识。在 board_types.txt 中,AP_HW_HEEWING_F405对应的数值板型 ID 为 1119;
  • SPIDEV icm42688 SPI1 DEVID1 IMU_CS MODE3 1MHZ 8MHZ:IMU 挂在 SPI1 上,最高 8MHz 时钟,并使用ROTATION_ROLL_180_YAW_90安装旋转;define HAL_DEFAULT_INS_FAST_SAMPLE 1表示默认开启快速 IMU 采样;
  • BARO SPL06 I2C:0:0x77:SLP06 气压计位于 I2C1 总线,地址 0x77;
  • AUTOBUILD_TARGETS Plane:构建系统会自动为这块板子编译 ArduPlane 目标。

值得注意的是,该板通过 minimize_fpv_osd.inc 做了低 Flash 优化:注释说明这是为 1MB Flash 的 FPV/OSD 板裁剪驱动的典型做法——保留 NMEA GPS、四旋翼/六旋翼/八旋翼电机帧、Benewake TF 系列测距驱动与 Tramp 视频链路支持,同时关闭光流、SBUS 输出、风冷发动机、高级失败保护(Advanced Failsafe)、精确降落、SMBUS 电池等较少用驱动以腾出 Flash 空间。

HEEWING-F405v2 变体

仓库中还存在 HEEWING-F405v2 目录,其 hwdef 直接include基础版,仅追加了三行:将 PC14 声明为FLASH_CS、新增一个 32MHz 的 SPI2 数据闪存 SPIDEV,并define HAL_LOGGING_DATAFLASH_ENABLED 1。也就是说v2 版本补上了基础版缺失的板载 dataflash 记录能力,其余硬件定义与基础版完全一致。

2. UART 映射:SERIAL 端口与物理 UART 的对应关系

这是配置该板时最容易出错的部分,因为 ArduPilot 的 SERIALn 逻辑编号与板壳丝印的 UARTn 编号并不相同。README 给出的映射表如下(Rn/Tn 引脚见上方引脚图):

ArduPilot 串口物理 UART板壳丝印DMA典型用途
SERIAL0USB (OTG1)GCS / 调试
SERIAL1UART3UART1支持外设
SERIAL2UART1UART2支持外设 / FrSky 遥测
SERIAL3UART5GPSRX 无 DMAGPS
SERIAL5UART6VTX视频发射机(仅 TX)
SERIAL6UART2RCIN支持RC 输入(默认仅 RX)

这一映射在 hwdef.dat 中有逐脚对应声明:SERIAL_ORDER OTG1 USART3 USART1 UART5 UART4 USART6 USART2一行定义了 0~6 号逻辑串口的排列顺序。逐条核对:

  • USART3(PC10/PC11,丝印 UART1)→ SERIAL1,支持 DMA;
  • USART1(PA9/PA10,丝印 UART2)→ SERIAL2,支持 DMA;
  • UART5(PC12/PD2,GPS 座)→ SERIAL3。注意 RX 引脚 PD2 被声明为NODMA,TX/RX 均可用于 GPS 数据;
  • UART4(PA0/PA1)→ SERIAL4,声明为NODMA且注释为 NC(未引出),实际不可用;
  • USART6(PC6/PC7)→ SERIAL5,TX/RX 均为NODMA。README 说明其定位为 VTX 口且"TX-only",即典型用法只用作发送;
  • USART2(PA2/PA3)→ SERIAL6,即 RCIN,详见下一节。

3. RC 输入与 BRD_ALT_CONFIG 双向切换

RC 输入配置在 4 针 RCIN 连接器的 UART2_RX 引脚上,支持全部串口 RC 协议(CRSF、ELRS、SBUS 等)。默认配置下它只有接收能力:hwdef 中 PA3 被声明为

PA3 TIM9_CH2 TIM9 RCININT PULLDOWN

即用作 RCIN 中断输入,PA2(USART2_TX)虽然物理存在但默认不参与 RC 通道。若需要双向协议(例如 CRSF 回传遥测到遥控器),设置参数BRD_ALT_CONFIG=1即可。其原理是 hwdef.dat 中为 PA3 提供了替代配置:

# alternative with PA3 as USART2_RX PA3 USART2_RX USART2 ALT(1) define DEFAULT_SERIAL6_PROTOCOL SerialProtocol_RCIN

ALT(1)表示该引脚定义在BRD_ALT_CONFIG=1时生效,此时 PA3 从 RCININT 切换为 USART2_RX,SERIAL6 成为完整的 RX/TX 串口。这个机制由 ChibiOS HAL 通用实现:GPIO.cpp 维护"由 BRD_ALT_CONFIG 选择的替代配置表"并在启动时按当前参数值重新选择引脚功能,UARTDriver.cpp 则允许 RX/TX/RTS/CTS 引脚经 BRD_ALT_CONFIG 重映射。DEFAULT_SERIAL6_PROTOCOL SerialProtocol_RCIN保证 SERIAL6 默认按 RC 输入协议初始化。

FrSky 遥测

README 说明 FrSky 遥测可使用空闲串口 SERIAL1 或 SERIAL2 的发送引脚实现,即把 D 端口设备(如 D16 接收机)接到这两个端口之一,利用其 TX 引脚回传传感器数据。

4. OSD 支持

HEEWING F405 通过 OSD_TYPE 参数取值 1(MAX7456 驱动)启用 OSD,对应 hwdef 中的:

SPIDEV osd SPI2 DEVID2 OSD_CS MODE0 10*MHZ 10*MHZ define OSD_ENABLED 1 define HAL_OSD_TYPE_DEFAULT 1 ROMFS_WILDCARD libraries/AP_OSD/fonts/font0.bin

即 MAX7456 挂在 SPI2 上(片选 PC4),默认 OSD 类型被直接写死为 1,且板级定义强制把 font0 字体打进 ROMFS。结合 minimize_fpv_osd.inc 中"在 1MB Flash 限制下强制启用 Tramp 支持与 CRSF 遥测文本支持"的定义,可以看出这块板子被明确定位为 FPV 用途:OSD、视频链路(Tramp)与双向 RC 遥测都被优先保证。

5. PWM 输出与 DShot 分组规则

该板支持最多 9 路 PWM 输出,输出能力在 hwdef.dat 中逐脚声明:

通道引脚定时器DShot 双向备注
M1PB7TIM4_CH2BIDIR支持 DShot 双向遥测
M2PB6TIM4_CH1README 称支持,dat 中未标 BIDIR
M3PB1TIM3_CH4与 I2C2_RX 共享,不建议用 DShot
M4PB0TIM3_CH3与 I2C2_RX 共享,不建议用 DShot
M5PC9TIM8_CH4BIDIR支持 DShot 双向遥测
M6PC8TIM8_CH3
M7PB15TIM1_CH3N
M8PB14TIM1_CH2N
M9PA8TIM1_CH1BIDIR支持 DShot 双向遥测
M10PA15TIM2_CH1NODMA注释 no output,无实际输出

README 的核心规则有三条,均可与 hwdef 交叉印证:

  1. PWM 分为 4 组:M1/M2 在第 1 组、M3/M4 在第 2 组、M5/M6 在第 3 组、M7-M9 在第 4 组。从定时器声明可以推断出分组的硬件根源:同组通道共用同一个定时器(TIM4、TIM3、TIM8、TIM1 各带一路或两路输出),因此同一组必须共用同一个输出时钟/速率;
  2. 同组速率一致,DShot 会传染整组:如果组内任一通道使用 DShot,则整组都必须使用 DShot——这正是"同组同定时器"这一硬件约束的直接推论;
  3. M3/M4 不推荐 DShot:hwdef 注释明确写出 "shared with I2C2_RX, dshot not advised",因为 PB0/PB1 与 I2C2 总线(连接外部罗盘/传感器的总线)复用引脚,DShot 的高速边沿切换会与 I2C 通信互相干扰。

另外,README 称 M1-M2、M5-M6、M9 支持双向 DShot(bidirectional DShot,即 DShot 遥测回传);从 hwdef 源码看,BIDIR标记实际出现在 M1、M5、M9 三个引脚上,配置双向遥测时以 dat 文件的BIDIR声明为准。

6. 电池监控

板上内置电压与电流传感器:电流传感器量程最大 130A,电压传感器可支持最高 6S 锂聚合物电池。正确的电池参数组合(README 原文给出)为:

  • BATT_MONITOR 4(ANALOG 类型)
  • BATT_VOLT_PIN 10
  • BATT_CURR_PIN 11
  • BATT_VOLT_MULT 7.71
  • BATT_AMP_PERVLT 26.67

这些值在 hwdef.dat 中都有板级默认值的呼应:

PC0 BATT_VOLTAGE_SENS ADC1 SCALE(1) PC1 BATT_CURRENT_SENS ADC1 SCALE(1) define HAL_BATT_MONITOR_DEFAULT 4 define HAL_BATT_VOLT_PIN 10 define HAL_BATT_VOLT_SCALE 7.71 define HAL_BATT_CURR_PIN 11 define HAL_BATT_CURR_SCALE 26.7

即电压接 ADC1 的 PC0、电流接 ADC1 的 PC1,监控类型、引脚号、电压倍数(7.71,分压比决定)与安培/伏特系数(README 记 26.67,dat 取 26.7)在出厂定义中已预设,升级参数后无需再手动修改。

7. 罗盘、气压计与 GPS 端口

HEEWING F405没有内置罗盘,但可以经 GPS 端口外接罗盘——RTF 套件随附的 GPS 模块已集成罗盘。hwdef 对此做了配套声明:define AP_COMPASS_PROBING_ENABLED 1表示启动时扫描 I2C 总线探测所有支持的外部罗盘型号;HAL_COMPASS_AUTO_ROT_DEFAULT 2给出默认安装旋转。

GPS 端口(SERIAL3 / UART5)使用注意事项:RX 引脚 PD2 被声明为NODMA。配套的 defaults.parm 中有这样一组默认参数:

RTL_ALTITUDE,50.00 ARMING_RUDDER,2 # GPS RX DMA conflicts with CRSF and I2C1 GPS_DRV_OPTIONS,4

其中注释直接说明了原因:GPS RX 若启用 DMA 会与 CRSF 协议和 I2C1 总线产生资源冲突,因此通过GPS_DRV_OPTIONS,4关闭 GPS 端口的 DMA 使用。RTL_ALTITUDE 50ARMING_RUDDER 2则是针对 VTOL 构型预设的返航高度与解锁舵面检查模式。

气压计为板上 SLP06,位于 I2C1 总线地址 0x77,无需额外配置。

8. 固件烧录

README 给出完整的烧录流程,结合 hwdef 可以看得更清楚:

  1. 首次烧录用 DFU:按住 bootloader 按键并插入 USB,使板子进入 DFU 模式,然后用任意 DFU 工具烧录with_bl.hex固件。之所以必须是 with_bl 版本,是因为 hwdef.dat 声明FLASH_RESERVE_START_KB 64——前 64KB 固定预留给 bootloader,普通 hex 不含 bootloader,烧入后无法再走后续升级流程。
  2. 首次烧录前务必断开 GPS:README 特别警告,该硬件在 GPS 连接且上电时无法正常进入 DFU 模式。
  3. 之后通过地面站升级:初始固件就绪后,使用任意支持 ArduPilot 的地面站软件(如 Mission Planner)下载*.apj固件包即可。APJ 文件内部携带板型标识AP_HW_HEEWING_F405(数值 ID 1119,见 board_types.txt),可确保烧录正确的目标文件。

9. 关键文件索引

文件作用
README.md板级使用说明:特征、UART 映射、RC、OSD、PWM、电池、烧录
hwdef.dat硬件定义:引脚、定时器、SPI/I2C/UART、传感器与默认值
defaults.parm出厂默认参数(GPS DMA 冲突规避等)
hwdef-bl.datbootloader 目标使用的简化硬件定义
HEEWING-F405v2/hwdef.datv2 变体:在基础版上启用板载 dataflash
heewingf405.jpg板卡引脚图(Rn/Tn、M1-M9 标识依据)
board_types.txtAPJ 板型 ID 表(AP_HW_HEEWING_F405 = 1119)

掌握以上内容后,你可以依据引脚图核对接线、按第 2 节映射表分配串口、按第 5 节分组规则配置 DShot、按第 6 节参数组配置电池,并沿第 8 节流程完成从 DFU 首烧到空中升级的完整部署。

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

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

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

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

立即咨询