ArduPilot 移植板卡解析:PixPilot-V6(STM32H743)硬件特性、引脚定义与固件构建指南
2026/9/15 2:19:47 网站建设 项目流程

ArduPilot 移植板卡解析:PixPilot-V6(STM32H743)硬件特性、引脚定义与固件构建指南

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

导读

本文以 ArduPilot 仓库中的官方板卡文档 libraries/AP_HAL_ChibiOS/hwdef/PixPilot-V6/README.md 为主体,结合同目录下的 hwdef.dat 与 hwdef-bl.dat 源码定义,完整讲解 PixPilot-V6 飞控的硬件架构、UART 映射、全连接器引脚表、电池监控参数与 DroneCAN 能力。读完本文,你将能基于 ArduPilot 正确接线、配置该飞控并自行编译对应固件,同时理解 hwdef 文件是如何将 STM32H743 的每一个外设引脚"翻译"成 ArduPilot 设备的。

板卡概览:PixPilot-V6 是谁

PixPilot-V6 是由 MakeFlyEasy 出品、面向 ArduPilot 生态的 STM32H7 系列飞控。它采用"主控 + 协处理器"双 MCU 架构:主控为STM32H743VIT6,负责飞行控制、传感器采集与任务运算;协处理器为STM32F103C8T6(IOMCU,I/O 控制器),负责 PWM 输出与部分 I/O 管理。该板卡在 ArduPilot 的 HAL(硬件抽象层)中拥有完整移植,属于 ArduCopter、ArduPlane、ArduRover、ArduSub 等机型均可使用的通用飞控(README 末尾的[copywiki destination="plane,copter,rover,blimp"]也印证了这一点)。

硬件特性(Features)

根据官方 README,PixPilot-V6 的核心硬件特性如下:

  • 主控:STM32H743VIT6 + STM32F103C8T6(IOMCU)双 MCU 架构;
  • 三 IMU 冗余:两颗 ICM42688-P(SPI)+ 一颗 ICM40605(SPI),均通过 SPI 总线挂载;
  • IMU 温控:内置加热器用于 IMU 温度控制,保证传感器工作温度稳定;
  • IMU 减震:内部软橡胶减震球对所有内部 IMU 进行隔振;
  • 双气压计:两颗 MS5611(SPI);
  • 内置磁力计:IST8310(内部 I2C 总线);
  • 非易失存储:内置 RAMTRON(SPI);
  • 数据记录:microSD 卡槽(支持 FAT 文件系统);
  • 串口:5 路 UART;
  • USB:Type-C 接口(作为控制台主链路);
  • 遥控输入:PPM 与 S.Bus 输入;
  • PWM 输出:14 路;
  • 扩展总线:两路 I2C 口与两路 FDCAN 口;
  • 输出接口:一路 S.Bus 输出;
  • 外设:外置蜂鸣器、内置 RGB LED、外部安全开关;
  • 电源监控:双路电压与电流监控;
  • 舵机供电:舵机轨 BEC 独立电源输入。

板载布局(Pinout)

官方 README 提供了两张引脚布局图,分别从三维视图与分解视图展示了板卡正反面接口分布、传感器 X/Y/Z 轴向标识、电源接口(+5V1~+5V7)、AUX1~AUX6辅助输出、CAN1/CAN2GPS1/GPS2POWER1/POWER2、TF 卡槽与 USB 接口的位置:

UART 映射:SERIAL0~SERIAL5 的硬件对应关系

ArduPilot 中的串口逻辑编号(SERIAL0~SERIAL5)由 hwdef.dat 中的SERIAL_ORDER决定:

SERIAL_ORDER OTG1 USART2 USART3 UART4 UART8 UART7 OTG2

对照官方 README 的 UART Mapping 表:

SERIAL 端口硬件外设物理用途
SERIAL0OTG1(USB)控制台(Console),主 MAVLink 链路,通常走 USB
SERIAL1USART2TELEM1(数传 1)
SERIAL2USART3TELEM2(数传 2)
SERIAL3UART4GPS1(第一路 GPS)
SERIAL4UART8GPS2(第二路 GPS)
SERIAL5UART7USER(用户自由串口)

注意SERIAL_ORDER末尾的OTG2不占用 SERIAL 编号,它服务于其他用途。此外在 hwdef 中还可看到 TELEM1/TELEM2 均带硬件流控引脚(CTS/RTS),例如PD3 USART2_CTSPD4 USART2_RTSPD11 USART3_CTSPD12 USART3_RTS,为高波特率数传与 GPS 数据量需求提供了保障;GPS1(UART4 的 RX,PA1)与 GPS2(UART8 的 TX/RX,PE0/PE1)被标记为NODMA,意味着这两路串口不使用 DMA 传输。

连接器引脚定义(Connector pin assignments)

TELEM1、TELEM2 数传口

PinSignalVolt
1VCC+5V
2TX (OUT)+3.3V
3RX (IN)+3.3V
4GNDGND

I2C1、I2C2 扩展口

PinSignalVolt
1VCC+5V
2SCL+3.3V
3SDA+3.3V
4GNDGND

CAN1、CAN2 总线口

PinSignalVolt
1VCC+5V
2CAN_H+12V
3CAN_L+12V
4GNDGND

安全开关与蜂鸣器口(Safety and buzzer port)

PinSignalVolt
1VCC+5V
2LED+5V
3SAFKEY+5V
4BUZZER+5V
53V++3.3V
6GNDGND

该端口同时引出安全开关按键信号(SAFKEY)、状态 LED 与蜂鸣器驱动,配合 hwdef 中HAL_HAVE_SAFETY_SWITCH 1与蜂鸣器 PWM 引脚PA15 TIM2_CH1使用。

GPS1/I2C1、GPS2/I2C2 复合口

PinSignalVolt
1VCC+5V
2TX+3.3V
3RX+3.3V
4SCL+3.3V
5SDA+3.3V
6GNDGND

GPS 与 I2C 复合在一个接口上,使 GPS 模块(如带罗盘的一体化 GPS)一次接线即可同时获得串口数据与 I2C 罗盘通道。这一点与 hwdef 中内部 I2C 掩码HAL_I2C_INTERNAL_MASK 1的设计思路一致——IST8310 挂在内部 I2C 总线上,而外部 I2C1/I2C2 留给用户设备。

Serial5 用户串口

PinSignalVolt
1VCC+5V
2TX (OUT)+3.3V
3RX (IN)+3.3V
4GNDGND

Power1、Power2 电源监控口

PinSignalVolt
1VCC+5V
2VCC+5V
3CURRENT+3.3V
4VOLTAGE+3.3V
5GNDGND
6GNDGND

RC 输入接线说明

PixPilot-V6 的 RC 接收机信号应接入SBUS 输入引脚(位于舵机/输出 VCC 输入连接器旁),该引脚可解码所有兼容的 RC 协议。但需要注意:CRSF、FPort 等包含遥测回传的协议不能使用该引脚,必须连接到某一 UART 串口并在 ArduPilot 中进行相应串口协议配置(例如设置SERIALx_PROTOCOL为对应协议),才能同时实现控制信号与遥测数据的双向传输。

电池监控参数配置(Battery Monitoring)

官方文档说明电池监控参数出厂已预设好(默认值),但若参数丢失或被改动,可按以下步骤恢复。

第一步:启用模拟电压电流式电池监控:

BATT_MONITOR=4

设置后重启飞控。

第二步:依次设置以下参数:

参数
BATT_VOLT_PIN14
BATT_CURR_PIN15
BATT_VOLT_MULT18.0
BATT_AMP_PERVLT24.0
BATT2_VOLT_PIN13
BATT2_CURR_PIN4
BATT2_VOLT_MULT18.0
BATT2_AMP_PERVLT24.0

这些参数与 hwdef.dat 中的默认宏定义一一对应:

define HAL_BATT_VOLT_PIN 14 define HAL_BATT_CURR_PIN 15 define HAL_BATT_VOLT_SCALE 18.0 define HAL_BATT_CURR_SCALE 24.0 define HAL_GPIO_PWM_VOLT_PIN 3

其中BATT_VOLT_MULT(电压分压倍率)与BATT_AMP_PERVLT(电流检测每伏对应安培数)分别对应 hwdef 中的HAL_BATT_VOLT_SCALE 18.0HAL_BATT_CURR_SCALE 24.0。模拟引脚编号(14、15、13、4 等)来自 hwdef 中定义的 ADC 输入通道(如PA2 BATT_VOLTAGE_SENSPA3 BATT_CURRENT_SENS等),其编号在 AnalogIn.cpp 中按通道顺序编号。HAL_GPIO_PWM_VOLT_PIN 3则用于 PWM 输出电压检测,配合HAL_GPIO_PWM_VOLT_3v3 1将采样基准标定为 3.3V,用于估算舵机轨/BEC 供电电压。

DroneCAN 能力

PixPilot-V6 提供2 个独立 CAN 总线端口(CAN1/CAN2),每个端口都可以挂载多个 DroneCAN 外设(如 CAN 电调、CAN GPS、CAN 电源模块、CAN 舵机等)。两个端口对应 hwdef 中的两路 FDCAN 控制器:

# CAN1 PD0 CAN1_RX CAN1 PD1 CAN1_TX CAN1 # CAN2 PB6 CAN2_TX CAN2 PB12 CAN2_RX CAN2

在 ArduPilot 中启用 DroneCAN 时,需要将相应 CAN 接口的CAN_P1_DRIVERCAN_P2_DRIVER参数设置为 1(DroneCAN 协议),并可通过CAN_D1_UC_NODE等参数配置节点编号。

源码级深入:hwdef.dat 如何定义这块板卡

PixPilot-V6 的完整硬件定义位于 libraries/AP_HAL_ChibiOS/hwdef/PixPilot-V6/hwdef.dat,该文件是 ArduPilot ChibiOS HAL 板卡移植的核心。以下逐一解读关键配置。

MCU 与时钟

MCU STM32H7xx STM32H743xx OSCILLATOR_HZ 24000000

板卡基于 STM32H743 系列,外部晶振 24 MHz。FLASH_SIZE_KB 2048声明 2 MB 闪存,FLASH_RESERVE_START_KB 128为固件保留 128 KB 起始空间(前 128 KB 预留给 bootloader 区域)。

板卡 ID 与 Bootloader

APJ_BOARD_ID AP_HW_PixPilot-V6

该 ID 在 Tools/AP_Bootloader/board_types.txt 中注册为1083,是 ArduPilot 固件与引导程序校验板卡类型、防止刷错固件的依据。配套的 hwdef-bl.dat 则定义了引导加载程序(bootloader)自身的配置:FLASH_RESERVE_START_KB 0(bootloader 从零地址安装)、FLASH_BOOTLOADER_LOAD_KB 128(H743 扇区为 128 KB,固件装载到第 128 KB 处)。

传感器架构:三 IMU + 双气压计 + RAMTRON

SPI 设备表揭示了传感器的总线挂载关系:

SPIDEV ms5611 SPI1 DEVID5 BARO_CS MODE3 20*MHZ 20*MHZ SPIDEV ms5611_ext SPI4 DEVID2 BARO_EXT_CS MODE3 20*MHZ 20*MHZ SPIDEV ICM40605_ext SPI4 DEVID4 40605_EXT_CS MODE3 2*MHZ 8*MHZ SPIDEV ICM42688_ext SPI4 DEVID5 42688_EXT_CS MODE3 2*MHZ 8*MHZ SPIDEV ICM42688 SPI1 DEVID6 42688_CS MODE3 2*MHZ 8*MHZ SPIDEV ramtron SPI2 DEVID10 FRAM_CS MODE3 8*MHZ 8*MHZ SPIDEV sdcard SPI2 DEVID1 SDCARD_CS MODE0 400*KHZ 25*MHZ
  • 两颗 ICM42688-P 分别挂在SPI1SPI4总线,ICM40605 挂在 SPI4,形成三 IMU 冗余;
  • 两颗 MS5611 气压计同样分布于 SPI1 与 SPI4;
  • RAMTRON 铁电存储(FRAM)挂在 SPI2,用于参数掉电保存;
  • microSD 卡也挂在 SPI2(工作于 SPI 模式)。

对应的 IMU/气压计声明如下:

IMU Invensensev3 SPI:ICM42688 ROTATION_NONE IMU Invensensev3 SPI:ICM42688_ext ROTATION_NONE IMU Invensensev3 SPI:ICM40605_ext ROTATION_NONE BARO MS5611 SPI:ms5611 BARO MS5611 SPI:ms5611_ext

关键宏:

define HAL_DEFAULT_INS_FAST_SAMPLE 7 define HAL_EKF_IMU_MASK_DEFAULT 7

HAL_EKF_IMU_MASK_DEFAULT 7(二进制 0b111)意味着三颗 IMU 全部激活参与 EKF 融合,从而启用三个独立的 EKF 通道进行冗余投票。磁力计方面,内部 IST8310 通过内部 I2C(HAL_I2C_INTERNAL_MASK 1)挂载:

COMPASS IST8310 I2C:0:0x0E false ROTATION_ROLL_180

IMU 加热器与磁场补偿

hwdef 中有一组与 README"IMU 温控"特性对应的配置:

define HAL_HAVE_IMU_HEATER 1 define HAL_IMU_TEMP_DEFAULT 45 define HAL_IMUHEAT_P_DEFAULT 50 define HAL_IMUHEAT_I_DEFAULT 0.07 define HAL_IMU_TEMP_MARGIN_LOW_DEFAULT 5 define AP_IOMCU_FORCE_ENABLE_HEATER 1

默认将 IMU 温度控制在45°C,通过 IOMCU(F103)驱动加热器。由于该板没有加热器检测引脚,因此通过AP_IOMCU_FORCE_ENABLE_HEATER 1强制在 features 寄存器中声明加热器存在。同时,由于加热器工作会产生磁场干扰内部 IST8310,hwdef 专门定义了磁场补偿量:

define HAL_HEATER_MAG_OFFSET {AP_HAL::Device::make_bus_id(AP_HAL::Device::BUS_TYPE_I2C,0,0xe,0xa),Vector3f(0,2,-19)}

即对内部 I2C 地址 0x0E 的磁力计施加 (0, 2, -19) 的偏移修正。

RAMTRON 参数存储

define HAL_WITH_RAMTRON 1 define HAL_STORAGE_SIZE 32768

板载 RAMTRON 作为 ArduPilot 的参数存储介质,存储区大小为 32 KB,可显著提升参数擦写寿命与抗震动可靠性。

14 路 PWM 输出与 IOMCU

PWM 输出由 IOMCU(USART6 通信,IOMCU_UART USART6)配合主控定时器共同实现。hwdef 中前 6 路输出示例:

PE14 TIM1_CH4 TIM1 PWM(1) GPIO(50) PE13 TIM1_CH3 TIM1 PWM(2) GPIO(51) PE11 TIM1_CH2 TIM1 PWM(3) GPIO(52) PE9 TIM1_CH1 TIM1 PWM(4) GPIO(53) PD13 TIM4_CH2 TIM4 PWM(5) GPIO(54) PD14 TIM4_CH3 TIM4 PWM(6) GPIO(55)

这些输出被映射为 GPIO(50) 起编号,用户可通过SERVOx_FUNCTION = -1将任意 PWM 输出当作 GPIO 使用。IOMCU 固件通过ROMFS io_firmware.bin Tools/IO_Firmware/iofirmware_lowpolh.bin打包进固件,开机时由主控加载。

状态指示与提示音

PB4 LED_RED OUTPUT OPENDRAIN GPIO(11) HIGH PB3 LED_GREEN OUTPUT OPENDRAIN GPIO(12) HIGH PB5 LED_BLUE OUTPUT OPENDRAIN GPIO(13) HIGH define AP_NOTIFY_GPIO_LED_RGB_RED_PIN 11 define AP_NOTIFY_GPIO_LED_RGB_GREEN_PIN 13 define AP_NOTIFY_GPIO_LED_RGB_BLUE_PIN 12 define AP_NOTIFY_GPIO_LED_RGB_ENABLED 1

RGB LED 与蜂鸣器(PA15 TIM2_CH1 TIM2 GPIO(77) ALARM)共同构成 ArduPilot 的声光状态提示系统(AP_Notify),用于显示解锁、报错、GPS 定位等状态。

电源监测标志引脚

PB2 VDD_BRICK_nVALID INPUT PULLUP PB7 VDD_BRICK2_nVALID INPUT PULLUP PE10 VDD_5V_HIPOWER_nOC INPUT PULLUP PE15 VDD_5V_PERIPH_nOC INPUT PULLUP

这些电源标志引脚让 MCU 感知主电源、第二电源以及 5V 高功率/外设电源的"无效/过流"状态,是双路电压电流监控与电源健康判断的底层支撑。

固件构建与刷写

PixPilot-V6 是 ArduPilot 官方支持的板卡之一,固件构建方式与其他板卡一致(详见 BUILD.md)。以构建 ArduCopter 固件为例:

./waf configure --board PixPilot-V6 ./waf copter

构建产物位于build/PixPilot-V6/bin/,可使用 Mission Planner 或 QGroundControl 通过 USB(Type-C)以 DFU 或 bootloader 方式刷写。首次刷写建议先刷入与该板卡配套的 bootloader(由 hwdef-bl.dat 构建),再通过 USB 上传主固件;此后即可通过 USB 或遥测链路完成常规固件升级。刷写与接线前务必核对板卡丝印、本文的引脚表与 PixPilot-V6 README,避免电源反接或信号接错。

同系列板卡对比与选型参考

ArduPilot 仓库中同属 PixPilot 系列的板卡还有:

  • PixPilot-V6PRO:同为 STM32H743VIT6 + IOMCU 架构,但 PWM 输出提升至 16 路,气压计改用 BMP388(SPI),内置蜂鸣器,支持四路电压电流监控(两路模拟 + 两路 CAN),并提供 4 个 CAN 端口(含两个带电源的 CAN-POWER 组合口)。其电池监控参数在 hwdef.dat 中直接以HAL_BATT_MONITOR_DEFAULT 4HAL_BATT_VOLT_PIN 14HAL_BATT2_VOLT_PIN 13等宏预设,与 README 的恢复参数一致;
  • PixPilot-C3:基于 STM32F427VIT6 + STM32F103C8T6,双 ICM42688-P、BMP388 双气压计,14 路 PWM(前 8 路由 IOMCU 控制、后 6 路 AUX 支持 DShot),并额外提供 DSM 输入口;
  • PixPilot-V3:上一代 STM32F4 平台板卡。

三者共享几乎一致的 UART 映射(SERIAL1~SERIAL5 分别对应 TELEM1、TELEM2、GPS1、GPS2、USER)与 18.0V/24.0A 的电源监控标定体系,迁移飞控时大部分接线习惯与参数可直接沿用。

小结

PixPilot-V6 是典型的 STM32H743 中高端 ArduPilot 飞控:三 IMU + 双气压计 + 内置罗盘构成高冗余传感器组,IMU 加热与减震保证传感器输出稳定,14 路 PWM、5 串口、2 路 I2C 与 2 路 FDCAN 提供了充裕的外设扩展空间,而完整的 hwdef 定义使其在 ArduPilot 生态中即插即用。无论是安装接线、恢复电池监控参数,还是自行编译固件,本文给出的表格、参数与源码依据(hwdef.dat、hwdef-bl.dat)都可以作为直接的操作手册与排障参考。

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

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

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

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

立即咨询