news 2026/9/14 9:00:52

ArduPilot 支持 Holybro KakuteF7 飞控完整指南:引脚定义、UART 映射与 hwdef 配置解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ArduPilot 支持 Holybro KakuteF7 飞控完整指南:引脚定义、UART 映射与 hwdef 配置解析

ArduPilot 支持 Holybro KakuteF7 飞控完整指南:引脚定义、UART 映射与 hwdef 配置解析

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

Holybro KakuteF7 是一款搭载 STM32F745 的 FPV 四旋翼飞控,分普通版与 AIO(All-In-One,集成 OSD)两种形态。本文以 ArduPilot 仓库中的板级支持文档 KakuteF7 README 为主线,结合板级硬件定义文件 hwdef.dat 与引导程序定义 hwdef-bl.dat 的源码细节,系统讲解该板的串口映射、RC 输入、FrSky 遥测、OSD、PWM 输出分组、电池监控以及固件加载流程。读完本文,你将能完成 KakuteF7 的 ArduPilot 固件烧录与全部关键参数的配置。

硬件特性概览

根据官方板级文档,KakuteF7 的核心硬件配置如下:

  • MCU:STM32F745 微控制器(基于 ARM Cortex-M7,1MB Flash)
  • IMU:ICM20689(六轴惯性测量单元)
  • 气压计:BMP280
  • 存储:microSD 卡槽(用于黑匣子日志记录)
  • OSD:AT7456E(仅 AIO 版板载)
  • 串口:6 路 UART
  • PWM 输出:6 路

该板由 Holybro 生产,有两种变体:一种是集成 OSD 的 AIO(All-In-One)板,另一种是更小的无 OSD 普通板。两种变体的串口资源(Rn/Tn 标记)完全一致,差异主要体现在板载 OSD 与电机输出的集成度上(AIO 版为 M1–M7 焊盘布局,普通版外接电调)。

在 ArduPilot 源码中,该板的板级 ID 定义于 Tools/AP_Bootloader/board_types.txt:TARGET_HW_KAKUTEF7 123,固件与引导程序均通过此 ID 标识硬件型号。

引脚定义(Pinout)

KakuteF7 普通版引脚图

KakuteF7 AIO 版引脚图

两块板子的引脚图均标注了 UART 收发焊盘(Rn/Tn)、电机输出焊盘(M1–M6)、I2C 引脚(SDA/SCL)、电源(B+、GND、5V、3V3)、BOOT 按键、蜂鸣器(Buz)与 LED 等接口。其中 UART 焊盘按 "Rn"(UARTn 的接收脚)和 "Tn"(UARTn 的发送脚)命名,例如 R1/T1 对应 UART1。

UART 映射

从板级文档可得到 ArduPilot 参数 SERIALn 与物理串口的对应关系:

ArduPilot 参数物理串口用途
SERIAL0USB地面站 USB 连接
SERIAL1UART1Telem1 遥测
SERIAL2UART2Telem2 遥测
SERIAL3UART3GPS
SERIAL4UART4通用
SERIAL5UART7ESC 遥测(AIO 板四角各有 R7 焊盘)
SERIAL6UART6仅发送,FrSky 遥测

其中SERIAL5 端口(UART7)专用于 ESC 遥测,在 KakuteF7 AIO 板的四个角上各有一个 R7 焊盘,方便从任意电调接入遥测信号。

从 hwdef.dat 可以看到串口在固件中的注册顺序,注释特意说明将 USART3 排在第二位以与板面丝印顺序对应:

# order of UARTs (and USB), USART3 should be in second place to map order with the board's silk screen SERIAL_ORDER OTG1 USART1 USART2 USART3 UART4 UART7 USART6

对应到源码引脚分配(hwdef.dat):

  • USART1:PA10 接收 / PA9 发送(Telem1)
  • USART2:PD6 接收 / PD5 发送(Telem2)
  • USART3:PB11 接收 / PB10 发送(GPS)
  • UART4:PA1 接收 / PA0 发送(GPS2),标注NODMA
  • UART6:PC7 接收 / PC6 发送(可作 FPort 等协议备用)
  • UART7:PE7 接收 / PE8 发送(ESC 遥测)

RC 输入

RC 输入默认配置在R6(UART6_RX)引脚上,即 hwdef.dat 中的 PC7 引脚。该引脚默认以定时器捕获模式工作,支持所有 RC 协议(SBus、DSM、CRSF 等):

# RC input defaults to timer capture PC7 TIM8_CH2 TIM8 RCININT PULLDOWN

同时源码还预留了备用配置——将 PC7 以复用功能(ALT(1))切换为 USART6 接收,用于需要串口式 RC 协议的场景(如 FPort):

# alternative config using USART for protocols like FPort PC7 USART6_RX USART6 NODMA ALT(1) PC6 USART6_TX USART6 NODMA

两种模式共用同一引脚,通过 ArduPilot 的 RC 协议自动检测机制选择工作方式。

FrSky 遥测

FrSky 遥测使用T6 引脚(UART6 发送)。启用 FrSky S.PORT 需要设置以下参数:

  • SERIAL6_PROTOCOL 10(FrSky D 模式 / S.PORT 遥测协议)
  • SERIAL6_OPTIONS 7(使能该串口的反向输出等选项)

由于 UART6 的发送脚在硬件上支持反相输出(S.PORT 为半双工反相信号),所以无需额外硬件转换即可直连 FrSky 接收机的 S.PORT 脚。

OSD 支持

KakuteF7 AIO 版板载AT7456E OSD 芯片,在 ArduPilot 中只需设置:

  • OSD_TYPE 1(MAX7456 驱动)

从 hwdef.dat 可见 OSD 相关的固件配置:默认启用 MAX7456 驱动、内置 OSD 字体(ROMFS_WILDCARD libraries/AP_OSD/fonts/font*.bin),并保留 MSP DisplayPort(HAL_WITH_MSP_DISPLAYPORT 1)以支持高清图传眼镜(HD Goggle)的 OSD 显示:

# setup for OSD define HAL_OSD_TYPE_DEFAULT 1 ROMFS_WILDCARD libraries/AP_OSD/fonts/font*.bin # make sure MSP HD Goggle support remains define HAL_WITH_MSP_DISPLAYPORT 1 define HAL_MSP_ENABLED 1

PWM 输出与 DShot

KakuteF7 支持最多6 路 PWM 输出(M1–M6),全部支持 DShot 以及所有 PWM 类型(普通 PWM、OneShot、MultiShot 等)。6 路输出分为 3 组:

  • PWM 1、2、3:group1(TIM1)
  • PWM 4、5:group2(TIM3)
  • PWM 6:group3(TIM5)

分组规则:同一组内的通道必须使用相同的输出速率;如果组内任一通道使用 DShot,则整组所有通道都必须使用 DShot。

在 hwdef.dat 中,电机输出引脚分配如下:

PB1 TIM1_CH3N TIM1 PWM(1) GPIO(50) PE9 TIM1_CH1 TIM1 PWM(2) GPIO(51) PE11 TIM1_CH2 TIM1 PWM(3) GPIO(52) PB0 TIM3_CH3 TIM3 PWM(4) GPIO(53) PC9 TIM3_CH4 TIM3 PWM(5) GPIO(54) PA3 TIM5_CH4 TIM5 PWM(6) GPIO(55)

可以看到 M1–M3 共用 TIM1(group1),M4–M5 共用 TIM3(group2),M6 单独使用 TIM5(group3),与文档描述完全一致。源码中还预留了 PWM7/PWM8(PD12 为 LED 引脚、PD15 为蜂鸣器引脚),但需注释掉对应功能后才能启用。

另外,引导程序定义 hwdef-bl.dat 中会将 6 路电机输出初始化为低电平,保证上电时电调不会意外启动。

电池监控

该板内置电压与电流传感器:

  • 电流传感器最大量程130 安培
  • 电压传感器支持最高6S LiPo 电池

正确的电池参数设置如下:

参数
BATT_MONITOR4(模拟电压+电流)
BATT_VOLT_PIN13
BATT_CURR_PIN12
BATT_VOLT_MULT10.1
BATT_AMP_PERVLT17.0

这些默认值在 hwdef.dat 中已经以编译期默认参数的形式固化,物理引脚为 PC3(电压采样 ADC1)与 PC2(电流采样 ADC1):

PC3 BATT_VOLTAGE_SENS ADC1 SCALE(1) PC2 BATT_CURRENT_SENS ADC1 SCALE(1) define HAL_BATT_VOLT_PIN 13 define HAL_BATT_CURR_PIN 12 define HAL_BATT_VOLT_SCALE 10.1 define HAL_BATT_CURR_SCALE 17.0

同时板上 PC5 还引出 RSSI 模拟输入(BOARD_RSSI_ANA_PIN 15),可接模拟 RSSI 信号用于图传信号强度监控。

罗盘(Compass)

KakuteF7 AIO没有板载罗盘,但可以通过板上的SDA/SCL 焊盘以 I2C 方式外接罗盘。对应的硬件定义(hwdef.dat)做了两件事:开启 I2C 总线上的外接罗盘探测,并将默认安装方向(AUTO_ROT)设为 2(即朝下安装):

# 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 总线(PB6 SCL / PB7 SDA)同时挂载 BMP280 气压计(地址 0x76),并在固件中允许无气压计初始化(HAL_BARO_ALLOW_INIT_NO_BARO)。

引导程序与固件加载(Loading Firmware)

首次烧录(DFU 模式)

首次加载固件时,按住BOOT 按键的同时插入 USB,进入 DFU(Device Firmware Upgrade)模式。然后使用任意 DFU 烧录工具(如dfu-util、STM32CubeProgrammer 或地面站自带的 DFU 工具)加载with_bl.hex固件——该固件包含引导程序(bootloader)。

后续升级(地面站方式)

引导程序一旦烧录完成,之后就可以使用任意 ArduPilot 地面站软件(Mission Planner / QGroundControl)通过 USB 或遥测链路更新固件,此时应使用*.apj格式的固件文件。

引导程序背后的源码细节

hwdef-bl.dat 定义了引导程序专用配置,与主固件的关键差异在于:

  • 固件起始偏移:FLASH_BOOTLOADER_LOAD_KB 96——引导程序把主固件放置在 96KB 偏移处(对应主固件定义的FLASH_RESERVE_START_KB 96,即保留前 2 个 Flash 扇区给引导程序),Flash 总容量 1MB(FLASH_SIZE_KB 1024
  • 外部晶振 8MHz(OSCILLATOR_HZ 8000000),并启用 32.768kHz 低速时钟(STM32_LSECLK
  • 引导程序中即初始化 6 路电机输出为低电平,并将 SD 卡、OSD、IMU 的片选(CS)引脚拉高,防止外设在引导阶段被误触发
  • 板载 LED 作为引导程序状态指示(HAL_LED_ON 0,低电平点亮)

主固件 hwdef.dat 还引入了两个精简配置片段以节省 Flash 空间:

include ../include/minimize_fpv_osd.inc include ../include/no_bootloader_DFU.inc

其中 minimize_fpv_osd.inc 是专为 FPV/OSD 用途的低 Flash 板提供的功能裁剪文件:禁用光流(AP_OPTICALFLOW_ENABLED 0)、S.Bus 输出、发动机(ICE)驱动、高级失效保护(AFS)与精准降落(PrecLand),只保留 Quad/Hexa/Octa 机架类型与常用测距仪驱动等,从而在 1MB Flash 内塞入完整 FPV 功能;no_bootloader_DFU.inc则关闭部分冗余的 DFU 支持。同时,固件显式只保留 BMP280 气压计后端(AP_BARO_BMP280_ENABLED 1),并保持外部气压计的 I2C 探测(AP_BARO_PROBE_EXTERNAL_I2C_BUSES 1)以支持后续自定义编译选项。

从源码理解板级资源分配

综合 hwdef.dat 的完整内容,可以将该板的外设资源归纳为下表,便于在排查配置问题时对照:

外设接口引脚 / 地址用途
电机输出TIM1 / TIM3 / TIM5PB1、PE9、PE11、PB0、PC9、PA3M1–M6,支持 DShot
RC 输入TIM8_CH2(默认)/ USART6(备用)PC7全部 RC 协议
FrSky 遥测USART6 TXPC6(T6)S.PORT,需SERIAL6_PROTOCOL 10SERIAL6_OPTIONS 7
GPSUSART3PB10/PB11SERIAL3
ESC 遥测UART7PE8/PE7SERIAL5,AIO 板四角 R7 焊盘
microSDSPI1PA4–PA7日志记录,HAL_OS_FATFS_IO 1
OSDSPI2PB12–PB15AT7456E,OSD_TYPE 1
IMUSPI4PE2、PE4–PE6ICM20689,ROTATION_YAW_180
气压计I2C1PB6/PB7,地址 0x76BMP280
电池电压/电流ADC1PC3 / PC2最高 130A、6S
RSSIADC1PC5模拟 RSSI
I2C 罗盘I2C1SDA/SCL 焊盘外接罗盘

其中 IMU 的安装方向在固件中已按ROTATION_YAW_180预置,即 IMU 芯片相对飞控正面旋转 180° 安装,这是飞控出厂已做好的硬件设计,用户无需在参数中额外调整 IMU 方向。

常见配置检查清单

完成硬件接线后,建议按以下顺序核对配置:

  1. 确认固件正确:刷入 KakuteF7 对应的with_bl.hex(首次)或*.apj(升级),确保地面站识别的板型为 KakuteF7(APJ 板 ID 123)。
  2. 检查传感器:在初始设置向导中确认 IMU(ICM20689)与气压计(BMP280)读数正常;外接罗盘接入后确认罗盘方向(默认 AUTO_ROT=2)。
  3. 核对串口协议:GPS 接 SERIAL3 设为SERIAL3_PROTOCOL 5(GPS);ESC 遥测接 SERIAL5 设为SERIAL5_PROTOCOL 26(ESC_Telem);FrSky 接 SERIAL6 设为 10。
  4. 设置电池参数:如使用默认板载传感器,确认BATT_MONITOR 4,其余分压/分流系数可按实际电调与电池微调。
  5. 电机输出测试:确认电调信号线接到 M1–M6,注意同组(group1/group2/group3)内的输出速率与 DShot 设置必须一致。
  6. OSD 验证:AIO 版设置OSD_TYPE 1后进入 OSD 菜单检查叠加信息与字体是否正常。

按照上述步骤,即可完成 KakuteF7(含 AIO 版)在 ArduPilot 中的完整部署,涵盖固件烧录、串口/遥测/OSD/电调与电池监控的全部配置。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 8:58:57

2026低代码平台选型避坑指南:识别隐性能力边界与错配成本

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/14 8:58:28

DeepEval 怎么评估 MCP 应用的单轮与多轮工具使用场景

DeepEval 怎么评估 MCP 应用的单轮与多轮工具使用场景 【免费下载链接】deepeval The LLM Evaluation Framework 项目地址: https://gitcode.com/GitHub_Trending/de/deepeval 如果你的应用基于 MCP(Model Context Protocol)工作——一个 Host 通…

作者头像 李华
网站建设 2026/9/14 8:57:39

3 步跑通 res-downloader:从刷到视频号到原片存进文件夹

3 步跑通 res-downloader:从刷到视频号到原片存进文件夹 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 下午三点…

作者头像 李华