PixSurveyA2-IND 飞控硬件解析:ArduPilot ChibiOS 板级支持、引脚配置与调参指南
2026/9/15 19:34:01 网站建设 项目流程

PixSurveyA2-IND 飞控硬件解析:ArduPilot ChibiOS 板级支持、引脚配置与调参指南

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

PixSurveyA2-IND 是一款基于 STM32H743 的 ArduPilot 兼容飞控,定位于工业测绘与巡检等对传感器冗余要求较高的固定翼/多旋翼应用。本文以其官方板级文档 libraries/AP_HAL_ChibiOS/hwdef/PixSurveyA2-IND/README.md 为核心骨架,结合 hwdef.dat、hwdef-bl.dat 与 defaults.parm 等仓库源码,系统讲解该板的硬件规格、接口定义、UART 映射、PWM/GPIO 分配、电池监测配置、DroneCAN 能力与固件加载流程,帮助你完成从接线到参数配置的完整落地。

PixSurveyA2-IND 飞控板引脚图

板卡概述与硬件规格

PixSurveyA2-IND 飞控由 MakeFlyEasy 设计,经多家经销商销售。它在 ArduPilot 仓库中拥有完整的板级定义(board definition),位于libraries/AP_HAL_ChibiOS/hwdef/PixSurveyA2-IND/目录,编译固件时由 chibios_hwdef.py 将 hwdef.dat 转换为目标板配置头文件。

官方文档列出的核心特性如下:

  • 主控 MCU:STM32H743VIT6(Cortex-M7,2MB Flash)
  • 协处理器:STM32F103C8T6 作为 IOMCU(I/O 主控)
  • 三冗余 IMU:2 颗 ICM-42652(SPI)+ 1 颗 ICM42688-P(SPI)
    • IMU 内置加热器用于温度控制
    • 内部软橡胶阻尼球隔离全部板载 IMU
  • 双气压计:2 颗 BMP388(SPI)
  • 板载 RAMTRON 非易失存储(SPI)
  • microSD 卡槽
  • 5 路 UART
  • USB(Type-C)
  • PPM 与 S.Bus 输入
  • 14 路 PWM 输出
  • 两路 I2C 端口与两路 FDCAN 端口,含多种连接器形态
  • S.Bus 输出
  • 板载蜂鸣器
  • 双电源模块输入:一路模拟、一路 CAN
  • 伺服供电轨(servo rail)独立 BEC 供电输入
  • 外部安全开关

从 hwdef.dat 可以看到这些特性的板级实现细节:MCU STM32H7xx STM32H743xx声明主控型号,24MHz 晶振(OSCILLATOR_HZ 24000000),固件APJ_BOARD_ID AP_HW_PixSurveyA2-IND,Flash 共 2048KB 并预留起始 128KB 给引导加载程序(FLASH_RESERVE_START_KB 128)。

双处理器架构:主 MCU 与 IOMCU

该板采用 ArduPilot 经典的双芯片架构:主 MCU 运行飞控固件并负责 IMU/气压计等高速 SPI 传感器采样;IOMCU(STM32F103C8T6)负责 PWM 输出、RC 输入捕获、安全开关与 LED 等实时性要求高的 I/O 任务。

hwdef.dat 中通过以下配置绑定两芯片之间的通信通道:

# UART for IOMCU IOMCU_UART USART6 PC6 USART6_TX USART6 PC7 USART6_RX USART6

IOMCU 固件通过 ROMFS 直接嵌入主固件中:

ROMFS io_firmware.bin Tools/IO_Firmware/iofirmware_lowpolh.bin ROMFS io_firmware_dshot.bin Tools/IO_Firmware/iofirmware_dshot_highpolh.bin

其中第二行对应define HAL_WITH_IO_MCU_DSHOT 1,即 IOMCU 侧输出支持 DShot 协议。

传感器子系统:三 IMU + 双气压计 + 加热器

IMU 布局与旋转

三颗 IMU 全部通过 SPI 挂接,且在 hwdef.dat 中声明为同一驱动(Invensensev3),旋转统一为ROTATION_PITCH_180

IMU Invensensev3 SPI:ICM42688 ROTATION_PITCH_180 IMU Invensensev3 SPI:ICM42688_ext ROTATION_PITCH_180 IMU Invensensev3 SPI:ICM40605_ext ROTATION_PITCH_180

注意:官方规格书写的是 2× ICM-42652 + 1× ICM42688-P,而 hwdef 中第三颗 IMU 的器件名为 ICM40605(ICM-40605 与 ICM-42652 系列同属 Invensensev3 驱动族)。三颗 IMU 分布在 SPI1 与 SPI4 两条总线上,并配置了快速采样:

define HAL_DEFAULT_INS_FAST_SAMPLE 7

结合define HAL_EKF_IMU_MASK_DEFAULT 7,三颗 IMU 全部参与 EKF 估计,默认启用三条 EKF 航向通道,最大化冗余。

板级 SPI 设备表

hwdef.dat 完整定义了各 SPI 片选与时钟:

SPIDEV BMP388 SPI1 DEVID3 BARO_CS MODE3 20*MHZ 20*MHZ SPIDEV BMP388_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

其中 SPI1 承载 1 颗 IMU + 1 颗 BMP388,SPI4 承载 2 颗 IMU + 1 颗扩展 BMP388,SPI2 挂载 RAMTRON FRAM。相应的两路气压计声明为:

BARO BMP388 SPI:BMP388 BARO BMP388 SPI:BMP388_ext

IMU 加热器与磁场补偿

该板为 IMU 提供内置加热器,通过恒温控制降低温漂。hwdef 中的默认 PID 恒温参数为:

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

即默认将 IMU 温度稳定在 45°C。由于加热器线圈会产生磁场,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)}

此外,该板没有加热器检测引脚,因此通过define AP_IOMCU_FORCE_ENABLE_HEATER 1强制经 IOMCU features 寄存器使能加热。

RAMTRON 参数存储

板载 RAMTRON 用于参数存储,hwdef 启用:

define HAL_WITH_RAMTRON 1 define HAL_STORAGE_SIZE 32768

存储区大小 32KB,配合 FAT 文件系统支持(define HAL_OS_FATFS_IO 1)与AP_BOOTLOADER_FLASH_FROM_SD_ENABLED,允许从 microSD 卡直接刷写固件。

UART 映射与串口规划

PixSurveyA2-IND 提供 5 路 UART,官方 README 的映射如下:

串口外设默认用途DMA 能力
SERIAL0USB(OTG1)console / 主 MAVLink
SERIAL1USART2Telem1(MAVLink2)全双工 DMA
SERIAL2USART3Telem2(MAVLink2)全双工 DMA
SERIAL3UART4GPS1TX 支持 DMA
SERIAL4UART8GPS2RX 支持 DMA
SERIAL5UART7USER(用户扩展)

hwdef.dat 中SERIAL_ORDER OTG1 USART2 USART3 UART4 UART8 UART7 OTG2决定了上述编号顺序,并给出各串口引脚(如PD5 USART2_TX USART2PD6 USART2_RX USART2)。GPS 串口标注NODMA(UART4 的 RX、UART8 的 TX 无 DMA)。另外 OTG2(第二个 USB)被配置为HAL_OTG2_PROTOCOL SerialProtocol_SLCAN,可作为 SLCAN 端口用于 CAN 调试。

连接器引脚定义

官方文档给出了各连接器的完整引脚定义,接线时务必对照。

POWER_CAN1 端口(6 针)

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

TELEM1 / TELEM2 端口(4 针)

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

I2C1 / I2C2 端口(4 针)

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

CAN1 / CAN2 端口(4 针)

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

Safety 与蜂鸣器端口(标注 SWITCH,3 针)

PINSIGNALVOLT
1VCC+5V
2LED+5V
3Safety Switch+5V

GPS1/I2C1、GPS2/I2C2 端口(6 针)

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

Serial5 端口(4 针)

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

Power2 ADC 端口(6 针)

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

RC 输入配置

该板的 SBUS 输入引脚(位于伺服输出/输出供电连接器旁)可解码所有兼容的单向 RC 协议(PPM、SBUS 等)。

若需使用 CRSF、FPort、SRXL2 等带有遥测回传的协议,需要接入支持 DMA 的全双工 UART。README 给出的推荐做法是使用 SERIAL2(USART3,全双工 DMA),参数设置如下:

  • CRSF / ELRSSERIAL2_PROTOCOL = 23SERIAL2_OPTIONS = 0
  • FPortSERIAL2_PROTOCOL = 23SERIAL2_OPTIONS = 15
  • SRXL2SERIAL2_PROTOCOL = 23SERIAL2_OPTIONS = 4,仅需连接 TX 引脚

其中SERIAL2_PROTOCOL=23选择 RCIN 串行协议接收模式,SERIAL2_OPTIONS按协议要求配置反向/半双工等选项。

PWM 输出与输出分组

该板最多支持 14 路 PWM 输出,全部输出支持常规 PWM 格式,且均支持 DShot;其中输出 9–14 支持双向 DShot(Bi-Directional DShot,可用于遥测回读)。同一定时器组内的输出必须使用相同输出速率;若组内任一通道使用 DShot,则该组所有通道都必须使用 DShot。

输出分组如下:

  • 输出 1、2 → 组 1
  • 输出 3、4 → 组 2
  • 输出 5、6、7、8 → 组 3
  • 输出 9–12 → 组 4
  • 输出 13、14 → 组 5

在 hwdef.dat 中,主 MCU 直出的 6 路 PWM 映射到 TIM1/TIM4:

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

其中标注BIDIR的通道即支持双向 DShot。输出 7–14 由 IOMCU 提供,IOMCU 固件(iofirmware_dshot_highpolh.bin)同样支持 DShot。

GPIO 映射

所有 PWM 输出均可复用为 GPIO(用于继电器、相机触发、转速计等)。使用时需将对应输出的SERVOx_FUNCTION设为 -1。GPIO 编号遵循 ArduPilot/HAL_PX4 惯例,主 MCU 直出通道(FMU 侧)编号从 50 起,IOMCU 通道从 101 起,整理如下:

通道(PWM 输出)信号名GPIO 值所属 MCU
Out1M1 / AuxOut150FMU(主 MCU)
Out2M2 / AuxOut251FMU
Out3M3 / AuxOut352FMU
Out4M4 / AuxOut453FMU
Out5M5 / AuxOut554FMU
Out6M6 / AuxOut655FMU
Out7M7101IO(IOMCU)
Out8M8102IO
Out9M9103IO
Out10M10104IO
Out11M11105IO
Out12M12106IO
Out13M13107IO
Out14M14108IO

在参数中(如RELAY_PINCAMERA_TRIGG_PIN等)填写上表 GPIO 值即可将对应通道用作数字 I/O。

电池监测

该板默认已配置好双电池监测参数;若参数被改动或丢失,按 README 恢复:

  1. 设置主电池监测类型:
    • BATT_MONITOR = 8(模拟电压与电流)
  2. 设置第二路电池监测类型:
    • BATT2_MONITOR = 4
  3. 重启飞控后配置第二路模拟采样参数:
    • BATT2_VOLT_PIN = 13
    • BATT2_CURR_PIN = 4
    • BATT2_VOLT_MULT = 18.0
    • BATT2_AMP_PERVLT = 24.0

注意:OSD 默认显示第一路电池;如需在 OSD 显示第二路,需要在 OSD 参数中单独配置第二电池面板。

上述默认值在 hwdef.dat 中已有对应定义,编译时直接成为出厂默认参数:

define HAL_BATT_MONITOR_DEFAULT 8 define HAL_BATT2_MONITOR_DEFAULT 4 define HAL_BATT2_VOLT_PIN 13 define HAL_BATT2_CURR_PIN 4 define HAL_BATT2_VOLT_SCALE 18.0 define HAL_BATT2_CURR_SCALE 24.0

底层实现上,AP_BattMonitor.cpp 在初始化时会通过HAL_BATT_MONITOR_DEFAULT设置默认监测类型,并依据类型选择后端驱动(SMBus、模拟等)。第一路电源对应板上模拟电源接口(PA2 BATT_VOLTAGE_SENSPA3 BATT_CURRENT_SENS),第二路对应 CAN 电源模块(见下节)。

DroneCAN 能力

板卡提供 6 个 CAN 接口形态,构成两条相互独立的 CAN 总线(CAN1、CAN2),每条总线上可挂接多个 CAN 外设;另有 2 个独立的 CAN 电源端口(CAN POWER),方便直接接入 CAN 电源模块(CAN-PMU)。

defaults.parm 默认开启两路 CAN 驱动:

# turn on the CAN power monitoring(default) CAN_P1_DRIVER 1 CAN_P2_DRIVER 1

即出厂默认启用 CAN1/CAN2 两个 DroneCAN 接口。结合 hwdef.dat 中的HAL_OTG2_PROTOCOL SerialProtocol_SLCAN,第二路 USB(OTG2)可配置为 SLCAN 网关,用普通 USB 转串口工具直接调试 CAN 总线设备。CAN 外设(如 DroneCAN ESC、CAN 电源模块、空速计等)通过参数界面中的CAN_P1_DRIVER/CAN_P2_DRIVER及 DroneCAN 参数完成配置。

固件加载与刷写

该板出厂预装 ArduPilot 兼容引导加载程序,因此可直接使用任意 ArduPilot 兼容地面站(如 Mission Planner、QGroundControl 的 ArduPilot 分支)刷写.apj固件文件。

固件按机型在 ArduPilot 官方固件站点的PixSurveyA2-IND子目录下载(Plane / Copter / Rover / Sub 等各自对应子目录)。刷写时,hwdef-bl.dat 定义了引导加载程序的布局:FLASH_BOOTLOADER_LOAD_KB 128表示引导加载程序位于 Flash 起始区,并将应用固件放在 128KB 偏移之后;引导阶段通过PB3 LED_ACTIVITY(红)与PE12 LED_BOOTLOADER(蓝)指示状态。

从 hwdef 到固件:构建链路速览

PixSurveyA2-IND 的固件由 ArduPilot 的 waf 构建系统驱动,核心输入即本目录三个文件:

  • hwdef.dat:应用固件硬件定义(MCU、引脚、外设、参数默认值)
  • hwdef-bl.dat:引导加载程序专用定义(精简串口、LED、空存储)
  • defaults.parm:出厂参数覆盖(此处为 CAN 驱动默认开启)

chibios_hwdef.py 读取这些文件后生成hwdef.h等板级头文件,其中包含APJ_BOARD_ID数值 ID(对应固件加载时的板卡识别)。构建时在仓库根目录执行类似./waf configure --board PixSurveyA2-IND./waf copter即可产出对应机型的.apj固件(具体机型名以构建脚本为准)。

小结

PixSurveyA2-IND 通过 STM32H743 主控 + IOMCU 双芯片架构,提供了三 IMU 冗余(含加热恒温与阻尼隔离)、双 BMP388 气压计、RAMTRON 存储、双 CAN 总线与 14 路 PWM(含双向 DShot)等完整能力。配合仓库中完整的 hwdef 板级定义,你既可以直接刷写官方固件快速使用,也可以深入阅读 hwdef.dat 理解每个引脚、每组外设的真实映射,为后续调试与二次开发打下基础。

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

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

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

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

立即咨询