ArduPilot PixPilot-V3 飞控板硬件指南:引脚定义、PWM 输出与固件构建
2026/9/15 1:12:17 网站建设 项目流程

ArduPilot PixPilot-V3 飞控板硬件指南:引脚定义、PWM 输出与固件构建

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

PixPilot-V3 是由 MakeFlyEasy 出品、基于 STM32F427 主控 + STM32F103 IO 协处理器的双芯片开源飞控板,已作为一等公民接入 ArduPilot 的 ChibiOS HAL 硬件定义体系。本文以仓库内 libraries/AP_HAL_ChibiOS/hwdef/PixPilot-V3/README.md 为核心骨架,结合 hwdef.dat 与 hwdef-bl.dat 源码级展开,带你掌握该板的串口映射、连接器引脚定义、14 路 PWM 分组规则、电池监控参数以及完整的固件构建方法,可直接用于 ArduPlane、ArduCopter、ArduRover 等机型(官方 README 中以copywiki标签标注适用机型为 plane/copter/rover/blimp)。

一、硬件概览与核心特性

PixPilot-V3 采用「主控 + IO 协处理器」的双 MCU 架构,与经典 Pixhawk FMUv3 架构同源,但传感器选型与外围接口做了显著升级:

  • 主控 MCU:STM32F427VIT6(Cortex-M4F,主频最高 180MHz),负责飞行控制运算、传感器采集与通信;
  • IO 协处理器:STM32F103C8T6,独立管理前 8 路主 PWM 输出与安全逻辑,保证高负载下的输出时序稳定性;
  • 三冗余 IMU:两颗 ICM42688-P(SPI 总线)与一颗 ICM40605(SPI 总线);
  • IMU 温度控制:内置加热器(internal heater)配合软橡胶减震柱(Soft Rubber Damping Column),对全部内部 IMU 做温控与隔离,可显著改善温度漂移;
  • 双气压计:两颗 MS5611(SPI 总线);
  • 内置罗盘:IST8310 磁力计(内部 I2C 总线);
  • 数据存储:内置 RAMTRON FRAM(SPI 总线)+ microSD 卡槽;
  • 通信接口:5 路 UART、USB(Type-C)、PPM 与 S.Bus 输入、1 路 S.Bus 输出、两路 I2C 口、两路 FDCAN 口;
  • 输出与电源:14 路 PWM 输出、外置蜂鸣器、内置 RGB LED、双路电压电流监控、独立舵机轨 BEC 供电、外部安全开关。

在 ChibiOS HAL 层面,这些特性并不是"文档承诺",而是由硬件定义文件逐条落实的。hwdef.dat中的MCU STM32F4xx STM32F427xx声明了主控型号,APJ_BOARD_ID AP_HW_PixPilot-V3注册了板卡 ID(对应 Tools/AP_Bootloader/board_types.txt 中的AP_HW_PixPilot-V3 1096),OSCILLATOR_HZ 24000000指定 24MHz 晶振,FLASH_SIZE_KB 2048声明 2MB Flash。

二、硬件定义文件(hwdef.dat)源码解析

ArduPilot 的 ChibiOS 移植采用"硬件定义文件驱动"方式:每个板卡对应hwdef目录下的一组.dat文件,由构建脚本解析生成底层 HAL 配置。PixPilot-V3 的完整定义位于 libraries/AP_HAL_ChibiOS/hwdef/PixPilot-V3/hwdef.dat,主要包括:

2.1 串口与总线拓扑

SERIAL_ORDER OTG1 USART2 USART3 UART4 UART8 UART7 I2C_ORDER I2C3 I2C2 I2C1 IOMCU_UART USART6
  • SERIAL_ORDER决定了hal.serial(n)对象的映射顺序:SERIAL0 为 USB(OTG1),SERIAL1~SERIAL5 依次为 USART2/USART3/UART4/UART8/UART7;
  • I2C_ORDER定义了 I2C 总线的探测顺序(I2C3 优先,对应板载 IST8310 所在总线);
  • IOMCU_UART USART6指定了主控与 STM32F103 IO 协处理器之间的通信串口。

2.2 传感器挂载表(SPIDEV / IMU / BARO / COMPASS)

SPIDEV ms5611 SPI1 DEVID3 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 4*MHZ SPIDEV ICM42688_ext SPI4 DEVID5 42688_EXT_CS MODE3 2*MHZ 4*MHZ SPIDEV ICM42688 SPI1 DEVID6 42688_CS MODE3 2*MHZ 4*MHZ SPIDEV ramtron SPI2 DEVID10 FRAM_CS MODE3 8*MHZ 8*MHZ SPIDEV sdcard SPI2 DEVID1 SDCARD_CS MODE0 400*KHZ 25*MHZ
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 COMPASS IST8310 I2C:0:0x0E false ROTATION_ROLL_180_YAW_270

从源码结构看,三颗 IMU 的 SPI 片选信号与从设备地址一一对应(ICM42688 挂在 SPI1,ICM42688_ext 与 ICM40605_ext 挂在 SPI4),双气压计分别挂 SPI1 与 SPI4,RAMTRON 与 microSD 共用 SPI2。define HAL_DEFAULT_INS_FAST_SAMPLE 7表明 IMU 默认启用 7 倍快速采样(即 1kHz 以上原始采样),以充分发挥三冗余 IMU 的性能。

2.3 板级特性开关

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

HAL_HAVE_IMU_HEATER启用了 IMU 加热功能,温度目标默认 45°C,并给出了温控 PID 的默认 P/I 参数与低温裕量,这正是 README 中"内部 IMU 加热器"在固件层的体现。此外还有:

  • HAL_STORAGE_SIZE 16384:参数存储区大小 16KB(配合HAL_WITH_RAMTRON 1使用 FRAM 持久化参数);
  • HAL_OS_FATFS_IO 1:启用 FAT 文件系统(microSD 记录日志需要);
  • HAL_I2C_INTERNAL_MASK 1AP_COMPASS_PROBING_ENABLED 1:内部 I2C 总线掩码与罗盘探测开关;
  • define AP_NOTIFY_GPIO_LED_RGB_*_PIN 11/12/13AP_NOTIFY_GPIO_LED_RGB_ENABLED 1:RGB LED 三色 GPIO 映射;
  • ROMFS io_firmware.bin Tools/IO_Firmware/iofirmware_lowpolh.bin:将 IO 协处理器固件嵌入主固件 ROMFS。

三、串口(UART)映射

PixPilot-V3 共提供 6 个逻辑串口,从 SERIAL0 到 SERIAL5,映射关系如下:

逻辑串口物理外设用途备注
SERIAL0USB(OTG1)console / 主 MavLink通常为 USB
SERIAL1USART2TELEM1DMA 使能
SERIAL2USART3TELEM2DMA 使能
SERIAL3UART4GPS1无 DMA
SERIAL4UART8GPS2DMA 使能
SERIAL5UART7USER(用户自定义)无 DMA

该映射同时对应 README 的 "UART Mapping" 一节与hwdef.dat的引脚声明,例如 GPS1 即PA0 UART4_TX/PA1 UART4_RX(标注NODMA),GPS2 为PE0 UART8_RX/PE1 UART8_TX。需要特别注意PA10 UART8_TXINV OUTPUT HIGH GPIO(78) POL(0)—— 该引脚允许在用户控制下反转 UART8 的发送极性,常用于兼容 FrSky 等遥测协议的电平要求(hwdef.dat注释中即标注 UART8 "FrSky")。每个串口的协议与波特率(如SERIAL1_PROTOCOLSERIAL1_BAUD)均可通过 ArduPilot 参数(如SERIAL1_*)在运行时配置。

四、连接器引脚分配

官方 README 给出了各排针连接器的完整引脚定义,这里完整保留并统一电压标注:

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 与蜂鸣器端口

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

GPS1/I2C1、GPS2/I2C2 复合端口

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

GPS 与 I2C 复合在同一端口,GPS 的 TX/RX 走 UART,SCL/SDA 走 I2C 总线,接线时注意信号电平均为 3.3V。

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

对应hwdef.datPA2 BATT_VOLTAGE_SENS ADC1PA3 BATT_CURRENT_SENS ADC1的 ADC 通道,以及PB5 VDD_BRICK_nVALID/PG5 VDD_BRICK2_nVALID两个电源失效检测引脚(用于感知电源是否接入)。

五、RC 输入

所有兼容的 RC 协议均可通过将接收机输出连接到 Servo/Output VCC 输入连接器旁的SBUS 输入引脚进行解码。需要注意:部分协议(如 CRSF、FPort 等带遥测回传的协议)不能走该引脚,而必须连接到某一 UART 并完成对应参数设置(例如SERIALn_PROTOCOL=23对应 RCIN、CRSF 协议需指定专用串口等),以便同时承载遥测上行链路。

六、PWM 输出:分组、速率与协议约束

PixPilot-V3 支持最多14 路 PWM 输出,全部排针均为"顶排 GND、中排 5V、底排信号"的排布。

前 8 路主输出(标号 S1~S8)由独立的 STM32F103 IO 控制器驱动,支持所有 PWM 输出格式,但不支持 DShot。**后 6 路辅助输出(标号 AUX1~AUX6)**直接挂在 STM32F427 上,支持全部 PWM 协议以及DShot

官方 README 明确了分组规则:

  • 8 路主输出分为 3 组:
    • 组 1:PWM 1、2
    • 组 2:PWM 3、4
    • 组 3:PWM 5、6、7、8
  • 6 路辅助输出分为 2 组:
    • 组 1:PWM 1、2、3、4
    • 组 2:PWM 5、6

同一组内的通道必须使用相同的输出速率;如果组内任一通道使用 DShot,则整组通道都必须使用 DShot。从hwdef.dat可以看到,主输出 PWM(5)/PWM(6) 与辅输出 PWM(1)~PWM(4) 分别由 TIM4(PD13 TIM4_CH2PD14 TIM4_CH3)与 TIM1(PE14~PE11的 CH4~CH1)驱动,这正是"同组共享定时器、因此必须同速率"的硬件根源。DShot 支持情况最终由固件启动时根据协议选择决定,若某通道被配置为 DShot 而所在组不支持,将无法正常工作,配置时务必遵循上述分组约束。

七、电池监控(Battery Monitoring)

电池监控参数通常已按默认值预置,但如果参数丢失或被修改,可按以下步骤恢复。

首先启用电池监控器:

BATT_MONITOR=4

设置后需重启飞控,再写入以下参数:

  • BATT_VOLT_PIN = 2
  • BATT_CURR_PIN = 3
  • BATT_VOLT_MULT = 18.0
  • BATT_AMP_PERVLT = 24.0
  • BATT2_VOLT_PIN = 14
  • BATT2_CURR_PIN = 13
  • BATT2_VOLT_MULT = 18.0
  • BATT2_AMP_PERVLT = 24.0

其中第一组(BATT1)对应 Power1 端口、第二组(BATT2)对应 Power2 端口。这些默认值并非随意指定,而是与hwdef.dat中的硬件定义一一对应:

define HAL_BATT_VOLT_PIN 2 define HAL_BATT_CURR_PIN 3 define HAL_BATT_VOLT_SCALE 18 define HAL_BATT_CURR_SCALE 24

在 AP_BattMonitor_Analog.cpp 中,HAL_BATT_VOLT_PIN/HAL_BATT_CURR_PIN分别作为BATT_VOLT_PINBATT_CURR_PIN参数的编译期默认值(同时会强制校验必须同时定义HAL_BATT_VOLT_SCALE/HAL_BATT_CURR_SCALE),HAL_BATT_VOLT_SCALE 18对应BATT_VOLT_MULT=18.0(18:1 分压比),HAL_BATT_CURR_SCALE 24对应BATT_AMP_PERVLT=24.0(24A/V 电流传感比例)。hwdef.datPA2 BATT_VOLTAGE_SENSPA3 BATT_CURRENT_SENS即两个主 ADC 采样引脚。若这些参数被误改,按上文恢复即可回到出厂默认的测量精度。

八、DroneCAN 能力

PixPilot-V3 提供 2 个 CAN 端口(CAN1/CAN2),可连接两条相互独立的 CAN 总线,每条总线上可挂载多个 CAN 外设(如 DroneCAN ESC、GPS、空速计、光电吊舱等)。两路 FDCAN 在hwdef.dat中的引脚分配为PD0 CAN1_RX/PD1 CAN1_TXPB12 CAN2_RX/PB6 CAN2_TX。通过 DroneCAN 可以显著减少机架布线,例如将 CAN GPS 与 CAN ESC 挂到同一总线而互不干扰。

九、固件构建与烧录

9.1 构建固件

ArduPilot 使用 waf 构建系统(构建命令须在仓库根目录执行,且不要使用 sudo 运行 waf)。以构建 ArduCopter 为例:

./waf configure --board PixPilot-V3 ./waf copter
  • 首次构建必须先执行./waf configure --board PixPilot-V3;切换机型或更换板卡时需要重新 configure;
  • ./waf copter编译生成的arducopter二进制位于build/PixPilot-V3/bin目录(详见 BUILD.md 的 Basic usage 一节);
  • 需要其他机型时,将目标名替换为planeroversubblimp即可,板卡名保持PixPilot-V3不变;
  • 板卡列表可用./waf list_boards查看(该命令会列出 ChibiOS 全部已注册板卡,其中即包含PixPilot-V3)。

构建产物(*.apj/*.bin)即可通过 Mission Planner 或地面站写入飞控。

9.2 引导加载程序(Bootloader)

引导加载程序的硬件定义位于 hwdef-bl.dat,其关键配置包括:

  • APJ_BOARD_ID AP_HW_PixPilot-V3:与主固件一致的板卡 ID,确保引导程序与固件匹配;
  • FLASH_BOOTLOADER_LOAD_KB 16:应用固件从 16KB 偏移处加载(前 16KB 保留给引导程序);
  • SERIAL_ORDER OTG1 USART2 USART3:引导程序运行在 USB、TELEM1、TELEM2 三个通道上,波特率BOOTLOADER_BAUDRATE 115200
  • PE12 LED_BOOTLOADERHAL_LED_ON 1:引导期间点亮 LED 作为状态指示;
  • 同时为所有传感器片选引脚(42688_CSBARO_CSMAG_CSSDCARD_CS等)做了 CS 引脚声明,确保引导期间这些引脚保持高电平、不干扰外设。

十、购买信息

PixPilot-V3 由 MakeFlyEasy 及其授权经销商销售,官方购买页面见 makeflyeasy.com(README 中 "Where to Buy" 一节)。接线、固件烧录与调参完成后,即可在 ArduPlane、ArduCopter、ArduRover、Blimp 等机型上使用本板的全部功能。

小结

PixPilot-V3 以 STM32F427 + STM32F103 双芯片架构提供了三冗余 IMU(含加热与减震)、双气压计、内置罗盘、14 路 PWM(其中 6 路支持 DShot)与双 CAN/双电源监控等完整配置。本文基于官方 README 与 hwdef.dat / hwdef-bl.dat 源码逐项核对了串口映射、连接器引脚、PWM 分组、电池监控默认值与构建方法——当你拿到这块板卡时,可直接对照本文完成接线、恢复默认电池参数并编译刷写固件。

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

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

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

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

立即咨询