ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

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

2026/9/15 19:34:12 拓冰建站 浏览量
PixSurveyA2-IND 飞控硬件解析:ArduPilot ChibiOS 板级支持、引脚配置与调参指南 PixSurveyA2-IND 飞控硬件解析ArduPilot ChibiOS 板级支持、引脚配置与调参指南【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilotPixSurveyA2-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 转换为目标板配置头文件。官方文档列出的核心特性如下主控 MCUSTM32H743VIT6Cortex-M72MB Flash协处理器STM32F103C8T6 作为 IOMCUI/O 主控三冗余 IMU2 颗 ICM-42652SPI 1 颗 ICM42688-PSPIIMU 内置加热器用于温度控制内部软橡胶阻尼球隔离全部板载 IMU双气压计2 颗 BMP388SPI板载 RAMTRON 非易失存储SPImicroSD 卡槽5 路 UARTUSBType-CPPM 与 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-INDFlash 共 2048KB 并预留起始 128KB 给引导加载程序FLASH_RESERVE_START_KB 128。双处理器架构主 MCU 与 IOMCU该板采用 ArduPilot 经典的双芯片架构主 MCU 运行飞控固件并负责 IMU/气压计等高速 SPI 传感器采样IOMCUSTM32F103C8T6负责 PWM 输出、RC 输入捕获、安全开关与 LED 等实时性要求高的 I/O 任务。hwdef.dat 中通过以下配置绑定两芯片之间的通信通道# UART for IOMCU IOMCU_UART USART6 PC6 USART6_TX USART6 PC7 USART6_RX USART6IOMCU 固件通过 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_180IMU 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 的器件名为 ICM40605ICM-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 颗 BMP388SPI4 承载 2 颗 IMU 1 颗扩展 BMP388SPI2 挂载 RAMTRON FRAM。相应的两路气压计声明为BARO BMP388 SPI:BMP388 BARO BMP388 SPI:BMP388_extIMU 加热器与磁场补偿该板为 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 能力SERIAL0USBOTG1console / 主 MAVLink—SERIAL1USART2Telem1MAVLink2全双工 DMASERIAL2USART3Telem2MAVLink2全双工 DMASERIAL3UART4GPS1TX 支持 DMASERIAL4UART8GPS2RX 支持 DMASERIAL5UART7USER用户扩展—hwdef.dat 中SERIAL_ORDER OTG1 USART2 USART3 UART4 UART8 UART7 OTG2决定了上述编号顺序并给出各串口引脚如PD5 USART2_TX USART2、PD6 USART2_RX USART2。GPS 串口标注NODMAUART4 的 RX、UART8 的 TX 无 DMA。另外 OTG2第二个 USB被配置为HAL_OTG2_PROTOCOL SerialProtocol_SLCAN可作为 SLCAN 端口用于 CAN 调试。连接器引脚定义官方文档给出了各连接器的完整引脚定义接线时务必对照。POWER_CAN1 端口6 针PINSIGNALVOLT1VCC5V2VCC5V3CAN_H12V4CAN_L12V5GNDGND6GNDGNDTELEM1 / TELEM2 端口4 针PinSignalVolt1VCC5V2TX (OUT)3.3V3RX (IN)3.3V4GNDGNDI2C1 / I2C2 端口4 针PINSIGNALVOLT1VCC5V2SCL3.3V3SDA3.3V4GNDGNDCAN1 / CAN2 端口4 针PINSIGNALVOLT1VCC5V2CAN_H12V3CAN_L12V4GNDGNDSafety 与蜂鸣器端口标注 SWITCH3 针PINSIGNALVOLT1VCC5V2LED5V3Safety Switch5VGPS1/I2C1、GPS2/I2C2 端口6 针PINSIGNALVOLT1VCC5V2TX3.3V3RX3.3V4SCL3.3V5SDA3.3V6GNDGNDSerial5 端口4 针PinSignalVolt1VCC5V2TX (OUT)3.3V3RX (IN)3.3V4GNDGNDPower2 ADC 端口6 针PINSIGNALVOLT1VCC5V2VCC5V3CURRENT3.3V4VOLTAGE3.3V5GNDGND6GNDGNDRC 输入配置该板的 SBUS 输入引脚位于伺服输出/输出供电连接器旁可解码所有兼容的单向 RC 协议PPM、SBUS 等。若需使用 CRSF、FPort、SRXL2 等带有遥测回传的协议需要接入支持 DMA 的全双工 UART。README 给出的推荐做法是使用 SERIAL2USART3全双工 DMA参数设置如下CRSF / ELRSSERIAL2_PROTOCOL 23SERIAL2_OPTIONS 0FPortSERIAL2_PROTOCOL 23SERIAL2_OPTIONS 15SRXL2SERIAL2_PROTOCOL 23SERIAL2_OPTIONS 4仅需连接 TX 引脚其中SERIAL2_PROTOCOL23选择 RCIN 串行协议接收模式SERIAL2_OPTIONS按协议要求配置反向/半双工等选项。PWM 输出与输出分组该板最多支持 14 路 PWM 输出全部输出支持常规 PWM 格式且均支持 DShot其中输出 9–14 支持双向 DShotBi-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/TIM4PE14 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 值所属 MCUOut1M1 / AuxOut150FMU主 MCUOut2M2 / AuxOut251FMUOut3M3 / AuxOut352FMUOut4M4 / AuxOut453FMUOut5M5 / AuxOut554FMUOut6M6 / AuxOut655FMUOut7M7101IOIOMCUOut8M8102IOOut9M9103IOOut10M10104IOOut11M11105IOOut12M12106IOOut13M13107IOOut14M14108IO在参数中如RELAY_PIN、CAMERA_TRIGG_PIN等填写上表 GPIO 值即可将对应通道用作数字 I/O。电池监测该板默认已配置好双电池监测参数若参数被改动或丢失按 README 恢复设置主电池监测类型BATT_MONITOR 8模拟电压与电流设置第二路电池监测类型BATT2_MONITOR 4重启飞控后配置第二路模拟采样参数BATT2_VOLT_PIN 13BATT2_CURR_PIN 4BATT2_VOLT_MULT 18.0BATT2_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_SENS、PA3 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第二路 USBOTG2可配置为 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),仅供参考