PX4 平台 Holybro Kakute H743-Wing 飞控使用指南:从 Betaflight 引导刷写、固件构建到串口与调试配置
2026/9/24 20:47:12 网站建设 项目流程
  • 嵌入式
  • 物联网
  • 机器人
  • 自动驾驶
  • 智能硬件

【免费下载链接】PX4-Autopilot

PX4 Autopilot Software

项目地址:https://gitcode.com/gh_mirrors/px/PX4-Autopilot
点击查看免费下载

本篇指南以 PX4-Autopilot 官方文档中 kakuteh7-wing.md 为主体,结合仓库内 boards/holybro/kakuteh7-wing 的板级源码(默认构建配置、引脚与定时器定义、传感器初始化脚本、NuttX 内核配置),完整讲解 Holybro Kakute H743-Wing 固定翼/VTOL 飞控在 PX4 平台上的移植接入过程:包括出厂 Betaflight 固件下的 PX4 引导程序刷写、固件编译与安装、串口映射与默认功能,以及系统控制台的启用。读者学完后可以独立完成该飞控的 PX4 固件安装与基础调试。

本文所述内容针对当前仓库(PX4 v1.16 及以上版本)中的板级实现。PX4 项目本身不生产该飞控,硬件支持与合规问题请联系制造商 Holybro。

硬件概览与板级特性

Holybro Kakute H743-Wing 是一款面向固定翼(Fixed-wing)与 VTOL 应用设计的完整功能飞控,核心硬件特性如下:

  • 主控:STM32H743 处理器,运行频率 480 MHz,属于 Cortex-M7 架构(见 default.px4board 中CONFIG_BOARD_ARCHITECTURE="cortex-m7"CONFIG_ARCH_CHIP_STM32H7=y)。
  • 总线与外设:支持 CAN Bus,具备即插即用的 GPS、CAN、I2C 接口。
  • 视频与电源:双摄像头支持与切换(CAM Switch)、ON/OFF 图传电源开关(Pit Switch)、5V、6V/8V、9V/12V BEC 输出。
  • PWM 输出:M1 ~ M14 共 14 路电机/舵机信号输出。
  • 板级标识:firmware.prototype 中定义board_id = 1105,镜像最大尺寸为 1,703,936 字节(约 1.63 MB),描述为 "Firmware for the Holybro KakuteH7-Wing board"。

从板级源码看,该板已被完整纳入 PX4 的构建体系:

  • default.px4board 启用了一系列固定翼/VTOL 相关的模块,例如CONFIG_MODULES_FW_ATT_CONTROLCONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROLCONFIG_MODULES_FW_MODE_MANAGERCONFIG_MODULES_VTOL_ATT_CONTROLCONFIG_MODULES_AIRSPEED_SELECTORCONFIG_DRIVERS_DSHOTCONFIG_DRIVERS_UAVCANCONFIG_DRIVERS_OSD_ATXXXX等,同时保留多旋翼控制模块(CONFIG_MODULES_MC_*),以满足 VTOL 复合模式的姿态控制需求。
  • 传感器驱动方面启用了CONFIG_DRIVERS_IMU_INVENSENSE_ICM42688PCONFIG_DRIVERS_IMU_ST_LSM6DSVCONFIG_DRIVERS_BAROMETER_BMP280CONFIG_DRIVERS_BAROMETER_GOERTEK_SPA06,与 rc.board_sensors 中的探测逻辑一一对应。

该飞控为制造商支持(Manufacturer Supported)的 PX4 兼容板,详见 autopilot_manufacturer_supported.md。

购买渠道

该飞控可从 Holybro 官方商店购买:https://holybro.com/products/kakute-h743-wing(原始文档中给出的示例渠道,此处仅作信息参考)。

连接器与引脚定义

下表汇总了文档给出的板载连接器与 PX4 默认功能映射:

引脚功能PX4 默认
GPS 1USART1 与 I2C1GPS1
R2, T2USART2 RX 与 TXGPS2
R3, T3USART3 RX 与 TXTELEM1
R5, T5USART5 RX 与 TXTELEM2
R6, T6USART6 RX 与 TXRC(PPM、SBUS 等)输入
R7, T7, RTS, CTSUART7 RX/TX(带流控)TELEM3
R8, T8UART8 RX 与 TXConsole(系统控制台)
Buz-, Buz+压电蜂鸣器(Piezo buzzer)
M1 至 M14电机信号输出

对应地,default.px4board 中通过CONFIG_BOARD_SERIAL_*将各串口设备绑定到默认功能:

CONFIG_BOARD_SERIAL_GPS1="/dev/ttyS0" CONFIG_BOARD_SERIAL_GPS2="/dev/ttyS1" CONFIG_BOARD_SERIAL_TEL1="/dev/ttyS2" CONFIG_BOARD_SERIAL_TEL2="/dev/ttyS3" CONFIG_BOARD_SERIAL_TEL3="/dev/ttyS5" CONFIG_BOARD_SERIAL_RC="/dev/ttyS4"

在板级头文件 src/board_config.h 中还可以看到更多硬件细节:

  • RC 输入RC_SERIAL_PORT "/dev/ttyS4"(USART6),支持 PPM(GPIO_PPM_IN,TIM8 CH2 / PC7)与串口遥控信号复用。
  • 摄像头切换GPIO_CAM_SWITCH(PC13),CAM_SWITCH_CAM1输出低电平、CAM_SWITCH_CAM2输出高电平,由固件通过px4_arch_gpiowrite控制,可据此在双摄像头之间切换。
  • 图传供电GPIO_VTX_9V_EN(PE3)用于控制 9V 图传电源的开关,即文档所述 ON/OFF Pit Switch。
  • 蜂鸣器TONE_ALARM_TIMER 17(TIM17)驱动压电蜂鸣器。
  • ADC:支持双电池电压/电流采样(ADC_BATTERY1/2_VOLTAGE_CHANNELADC_BATTERY1/2_CURRENT_CHANNEL)、5V 监控(ADC_SCALED_V5_CHANNEL)以及 RSSI 输入(ADC_RSSI_IN_CHANNEL),对应BOARD_NUMBER_BRICKS 2

PX4 Bootloader 更新(出厂 Betaflight 固件)

背景说明

该飞控出厂预装Betaflight固件。由于 Betaflight 使用自己的引导程序,在安装 PX4 固件之前,必须先刷写 PX4 引导程序(PX4 bootloader)

刷写所需的引导程序二进制文件即 extras/holybro_kakuteh7-wing_bootloader.bin(仓库板级目录中已附带预编译的 .bin;原始文档提供的 .hex 版本亦可在对应资源位置下载)。完整的刷写步骤请参阅 bootloader_update_from_betaflight.md。

三种刷写工具

根据 bootloader_update_from_betaflight.md,可选择以下任一工具:

  1. Betaflight Configurator(图形界面,最简单):连接飞控 → 打开 Configurator → 点击Load Firmware [Local]→ 选择引导程序二进制文件 → 刷写。注意较新版本的 Configurator 可能不再支持非 Betaflight 引导程序更新,失败时可改用其他工具。

  2. dfu-util(命令行):先让飞控进入 DFU 模式(按住 BOOT 按钮的同时插入 USB 线,上电后松开按钮),然后执行:

    dfu-util -a 0 --dfuse-address 0x08000000 -D build/<target>/<target>.bin

    刷写完成后重新上电(不要按住 BOOT 按钮)即可。

  3. dfuse(Windows 图形工具):使用该工具刷写<target>.bin文件。

安全提示与参数擦除

  • 上述 DFU 刷写方式是安全的:STM32 的 DFU 引导程序不会被覆盖,即使刷写失败也能再次进入 DFU 模式重新安装固件。

  • 对于部分 Kakute 系列板(如 Kakute H7 v2、H7、H7 mini),首次刷写时可能需要先执行一次强制擦除命令以修复参数保存问题:

    dfu-util -a 0 --dfuse-address 0x08000000:force:mass-erase:leave -D build/<target>/<target>.bin

    该命令可能报错,可忽略;执行完毕后再次进入 DFU 模式完成常规刷写。Kakute H743-Wing 的引导程序源码头文件 src/hw_config.h 中定义了BOARD_TYPE 1105(与 firmware.prototype 一致)、APP_LOAD_ADDRESS 0x08020000BOARD_FLASH_SECTORS 13BOARD_FLASH_SIZE (16 * 128 * 1024)等引导参数,供引导程序在 DFU 模式下识别目标板与内存布局。

自行编译引导程序

大多数 PX4 板级目标都提供了_bootloader构建目标。可通过make list_config_targets查看全部目标(输出中会包含holybro_kakuteh7_bootloaderholybro_kakuteh7v2_bootloaderholybro_kakuteh7mini_bootloader等同系列条目)。构建命令为:

git clone --recursive https://github.com/PX4/PX4-Autopilot.git cd PX4-Autopilot make <target> # 例如: holybro_kakuteh7mini_bootloader

重新安装 Betaflight

如需从 PX4 切换回 Betaflight:

  1. 先将 PX4 参数备份导出到 SD 卡(参见 parameters_and_configurations.md 中关于导出与加载参数的说明);
  2. 按住bootloader按钮的同时连接 USB 线;
  3. 使用 Betaflight Configurator 按常规方式刷写 Betaflight 固件。

构建 PX4 固件

在已克隆的 PX4-Autopilot 仓库中,为该板构建固件的命令为:

make holybro_kakuteh7-wing_default

该目标对应板级配置 boards/holybro/kakuteh7-wing/default.px4board,工具链为arm-none-eabi,架构为cortex-m7。构建环境的准备可参考 building_px4.md。

构建配置要点

从 default.px4board 中可以归纳出该板固件的关键特性:

  • 外设驱动:板载 ADC、BMP280/SPA06 气压计、SMBUS 电池、CDCACM(USB 虚拟串口)、DShot、GPS、ICM42688P/LSM6DSV IMU、ATXXXX(MAX7456)OSD、PWM 输出、RC 输入、蜂鸣器、UAVCAN 均已启用。
  • 功能模块:EKF2 估计器、控制分配器(Control Allocator)、飞行模式管理、固定翼/多旋翼/VTOL 姿态与速率控制、空速选择、电池状态、MAVLink、导航器、日志记录(Logger)等。
  • 系统命令:包含bl_update(引导程序更新)、dmesghardfault_logmft(内存文件传输)、nshtermparamrebootsd_benchtoptopic_listenerusb_connectedverwork_queue等调试与维护命令。
  • 任务容量:支持 1000 个任务点(CONFIG_NUM_MISSION_ITEMS_SUPPORTED=1000)。

PWM 输出与定时器映射

src/timer_config.cpp 定义了 14 路 PWM 输出的底层定时器通道映射,共使用 6 个 IO 定时器(TIM1、TIM4、TIM5、TIM15、TIM3、TIM2):

  • M1~M4 映射到 TIM1 的 CH1~CH4;
  • M5、M6 映射到 TIM4 的 CH3、CH4(注意注释说明 TIM4 CH4 在 STM32H7 上无 DMAMUX 映射,无法做 BDShot 遥测回读,但 DShot 输出不受影响);
  • M7、M8 映射到 TIM5 的 CH1、CH2;
  • M9、M10 映射到 TIM15 的 CH1、CH2(TIM15 无 TIM_UP DMA,不能用于 DShot);
  • M11、M12、M13 映射到 TIM3 的 CH2、CH3、CH4;
  • M14 映射到 TIM2 的 CH1。

这与 src/board_config.h 中DIRECT_PWM_OUTPUT_CHANNELS 14BOARD_NUM_IO_TIMERS 6的定义相互印证。

安装 PX4 固件

版本要求:Kakute H743-Wing 自PX4 v1.16起获得官方支持;在更早的版本上需要手动构建并安装固件。

固件可通过以下任一常规方式安装:

  1. 源码构建并直接上传

    make holybro_kakuteh7-wing_default upload
  2. 使用 QGroundControl 加载固件:参考 firmware.md,可以选择预编译固件或自己构建的固件。刷写完成后即可进入地面站的传感器校准与机架选择流程。

串口映射

不同串口在 NuttX 下的设备节点、物理端口与默认功能如下:

UART设备端口默认功能
USART1/dev/ttyS0GPS 1GPS1
USART2/dev/ttyS1R2, T2GPS2
USART3/dev/ttyS2R3, T3TELEM1
UART5/dev/ttyS3R5, T5TELEM2
USART6/dev/ttyS4R6, (T6)RC 输入
UART7/dev/ttyS5R7, T7, RTS, CTSTELEM3
UART8/dev/ttyS6R8, T8Console

这些映射与 default.px4board 中的CONFIG_BOARD_SERIAL_*完全一致。从 nuttx-config/nsh/defconfig 可以看到底层串口的 NuttX 配置细节:

  • UART7 启用了硬件流控(CONFIG_UART7_IFLOWCONTROL=yCONFIG_UART7_OFLOWCONTROL=y)以及 RX/TX DMA,默认波特率 57600,与 TELEM3 的流控需求对应;
  • USART3 启用了 RX/TX DMA(TELEM1);
  • 所有串口默认波特率均为 57600。

此外,NuttX 配置中启用了CONFIG_STM32H7_SDMMC2=y(SD 卡)、CONFIG_STM32H7_I2C1/I2C2/I2C4(GPS 罗盘等 I2C 外设)、CONFIG_STM32H7_SPI1/SPI2/SPI3以及 USB CDC ACM(CONFIG_CDCACM_PRODUCTSTR="PX4 KakuteH7-Wing"CONFIG_CDCACM_VENDORSTR="Holybro",Vendor ID 0x3162),方便 PC 端识别设备。

传感器与板载外设的初始化

init/rc.board_sensors 展示了该板传感器初始化的“备选降级”策略,与 src/spi.cpp 中的 SPI 总线定义一一对应:

board_adc start # 板载 SPI IMU(同一 CS 片选,SPI3):优先 ICM42688P,失败则回退 LSM6DSV if ! icm42688p -R 2 -s -q start then lsm6dsv -R 2 -s start fi # 板载气压计:优先 BMP280,失败则回退 SPA06 if ! bmp280 -I -b 4 -q start then spa06 -I -b 4 start fi # MAX7456 OSD:若 OSD_ATXXXX_CFG 参数非 0 则启动 if ! param compare OSD_ATXXXX_CFG 0 then atxxxx start -s fi

src/spi.cpp 定义了三条 SPI 总线:

  • SPI1:预留 BMI088 加速度计/陀螺仪片选(该板实际未焊接,片选引脚已在设备表中声明);
  • SPI2:ATXXXX(MAX7456)OSD 芯片,片选为 PB12;
  • SPI3:板载 IMU,ICM42688P 与 LSM6DSV 共用片选 PE12,LSM6DSV 额外使用 PE15 作为数据就绪(DRDY)引脚。

板级默认参数在 init/rc.board_defaults 中设置:

param set-default BAT1_V_DIV 18.1 param set-default BAT2_V_DIV 18.1 param set-default BAT1_A_PER_V 36.367515152 param set-default BAT2_A_PER_V 36.367515152 param set-default OSD_ATXXXX_CFG 1

即双电池电压分压比(BATx_V_DIV)默认为 18.1、电流每伏安培数(BATx_A_PER_V)默认 36.367515152,OSD 默认启用(OSD_ATXXXX_CFG 1)。若实际使用的电流计/分压电阻不同,可在 QGroundControl 中按硬件手册重新校准这些参数。

调试端口:系统控制台

Kakute H743-Wing 将UART8的 RX/TX 配置为系统控制台(System Console)使用,设备节点为/dev/ttyS6(物理引脚 R8、T8)。

从 nuttx-config/nsh/defconfig 可以看出控制台的底层配置:

CONFIG_UART8_SERIAL_CONSOLE=y CONFIG_UART8_BAUD=57600 CONFIG_SYSTEM_NSH=y

即 UART8 被指定为 NuttX 串行控制台(默认波特率 57600),PX4 的 NSH shell 可通过该串口访问,用于固件调试、参数查看与底层系统维护。此外CONFIG_STM32H7_SAVE_CRASHDUMP=yCONFIG_SYSTEMCMDS_HARDFAULT_LOG=y表明发生硬错误(hardfault)时会保存崩溃转储,便于通过控制台或日志排查问题。

关于如何使用控制台(连接方式、常用命令、波特率等),请参考 system_console.md 的详细说明。

小结

Holybro Kakute H743-Wing 在 PX4 中属于制造商支持的完整移植板:官方文档给出了从 Betaflight 引导程序刷写、固件构建安装到串口映射与控制台调试的完整操作路径,而仓库内的板级源码则从构建配置(default.px4board)、引脚/定时器定义(src/board_config.h、src/timer_config.cpp)、SPI 传感器拓扑(src/spi.cpp)与 NuttX 内核配置(nuttx-config/nsh/defconfig)等多个层面印证并深化了这些操作。对于固定翼/VTOL 开发者,这提供了从拿到一块全新 Kakute H743-Wing 到跑起 PX4 的完整参考路径。

  • 嵌入式
  • 物联网
  • 机器人
  • 自动驾驶
  • 智能硬件

【免费下载链接】PX4-Autopilot

PX4 Autopilot Software

项目地址:https://gitcode.com/gh_mirrors/px/PX4-Autopilot
点击查看免费下载

相关推荐

上一篇:USBIP-Win完全攻略:实现跨网络USB设备无缝共享
下一篇:解密Spike RISC-V模拟器:从指令集探索到系统级仿真实战

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

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

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

立即咨询