- 嵌入式
- 物联网
- 机器人
- 自动驾驶
- 智能硬件
【免费下载链接】PX4-Autopilot
PX4 Autopilot Software
本篇指南以 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_CONTROL、CONFIG_MODULES_FW_LATERAL_LONGITUDINAL_CONTROL、CONFIG_MODULES_FW_MODE_MANAGER、CONFIG_MODULES_VTOL_ATT_CONTROL、CONFIG_MODULES_AIRSPEED_SELECTOR、CONFIG_DRIVERS_DSHOT、CONFIG_DRIVERS_UAVCAN、CONFIG_DRIVERS_OSD_ATXXXX等,同时保留多旋翼控制模块(CONFIG_MODULES_MC_*),以满足 VTOL 复合模式的姿态控制需求。 - 传感器驱动方面启用了
CONFIG_DRIVERS_IMU_INVENSENSE_ICM42688P、CONFIG_DRIVERS_IMU_ST_LSM6DSV、CONFIG_DRIVERS_BAROMETER_BMP280、CONFIG_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 1 | USART1 与 I2C1 | GPS1 |
| R2, T2 | USART2 RX 与 TX | GPS2 |
| R3, T3 | USART3 RX 与 TX | TELEM1 |
| R5, T5 | USART5 RX 与 TX | TELEM2 |
| R6, T6 | USART6 RX 与 TX | RC(PPM、SBUS 等)输入 |
| R7, T7, RTS, CTS | UART7 RX/TX(带流控) | TELEM3 |
| R8, T8 | UART8 RX 与 TX | Console(系统控制台) |
| 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_CHANNEL、ADC_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,可选择以下任一工具:
Betaflight Configurator(图形界面,最简单):连接飞控 → 打开 Configurator → 点击Load Firmware [Local]→ 选择引导程序二进制文件 → 刷写。注意较新版本的 Configurator 可能不再支持非 Betaflight 引导程序更新,失败时可改用其他工具。
dfu-util(命令行):先让飞控进入 DFU 模式(按住 BOOT 按钮的同时插入 USB 线,上电后松开按钮),然后执行:
dfu-util -a 0 --dfuse-address 0x08000000 -D build/<target>/<target>.bin刷写完成后重新上电(不要按住 BOOT 按钮)即可。
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 0x08020000、BOARD_FLASH_SECTORS 13、BOARD_FLASH_SIZE (16 * 128 * 1024)等引导参数,供引导程序在 DFU 模式下识别目标板与内存布局。
自行编译引导程序
大多数 PX4 板级目标都提供了_bootloader构建目标。可通过make list_config_targets查看全部目标(输出中会包含holybro_kakuteh7_bootloader、holybro_kakuteh7v2_bootloader、holybro_kakuteh7mini_bootloader等同系列条目)。构建命令为:
git clone --recursive https://github.com/PX4/PX4-Autopilot.git cd PX4-Autopilot make <target> # 例如: holybro_kakuteh7mini_bootloader重新安装 Betaflight
如需从 PX4 切换回 Betaflight:
- 先将 PX4 参数备份导出到 SD 卡(参见 parameters_and_configurations.md 中关于导出与加载参数的说明);
- 按住bootloader按钮的同时连接 USB 线;
- 使用 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(引导程序更新)、dmesg、hardfault_log、mft(内存文件传输)、nshterm、param、reboot、sd_bench、top、topic_listener、usb_connected、ver、work_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 14、BOARD_NUM_IO_TIMERS 6的定义相互印证。
安装 PX4 固件
版本要求:Kakute H743-Wing 自PX4 v1.16起获得官方支持;在更早的版本上需要手动构建并安装固件。
固件可通过以下任一常规方式安装:
源码构建并直接上传:
make holybro_kakuteh7-wing_default upload使用 QGroundControl 加载固件:参考 firmware.md,可以选择预编译固件或自己构建的固件。刷写完成后即可进入地面站的传感器校准与机架选择流程。
串口映射
不同串口在 NuttX 下的设备节点、物理端口与默认功能如下:
| UART | 设备 | 端口 | 默认功能 |
|---|---|---|---|
| USART1 | /dev/ttyS0 | GPS 1 | GPS1 |
| USART2 | /dev/ttyS1 | R2, T2 | GPS2 |
| USART3 | /dev/ttyS2 | R3, T3 | TELEM1 |
| UART5 | /dev/ttyS3 | R5, T5 | TELEM2 |
| USART6 | /dev/ttyS4 | R6, (T6) | RC 输入 |
| UART7 | /dev/ttyS5 | R7, T7, RTS, CTS | TELEM3 |
| UART8 | /dev/ttyS6 | R8, T8 | Console |
这些映射与 default.px4board 中的CONFIG_BOARD_SERIAL_*完全一致。从 nuttx-config/nsh/defconfig 可以看到底层串口的 NuttX 配置细节:
- UART7 启用了硬件流控(
CONFIG_UART7_IFLOWCONTROL=y、CONFIG_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 fisrc/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=y与CONFIG_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
相关推荐
Holybro Kakute H7 V2 飞控在 PX4 中的刷写、构建与配置完整指南
Holybro Kakute H7 V2 飞控在 PX4 中的刷写、构建与配置完整指南 本文以 PX4 官方板级支持文档为主体,围绕 Holybro Kakut
嵌入式物联网机器人自动驾驶智能硬件PX4 上的 Holybro Kakute H7 飞控:硬件特性、固件烧录与串口配置完整指南
PX4 上的 Holybro Kakute H7 飞控:硬件特性、固件烧录与串口配置完整指南 本文以 PX4 Autopilot 官方文档为基础,结合仓库中 b
嵌入式物联网机器人自动驾驶智能硬件Holybro Kakute H7 mini 刷机与 PX4 适配完全指南:Bootloader 更新、固件编译与串口配置
Holybro Kakute H7 mini 刷机与 PX4 适配完全指南:Bootloader 更新、固件编译与串口配置 本文以 PX4 Autopilot
嵌入式物联网机器人自动驾驶智能硬件
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考