资讯动态

ArduPilot 支持 NxtPX4v2 飞控硬件详解:接口映射、参数默认值与固件刷写实战

发布时间:2026/9/14 18:12:02 来源:尧图企业网站定制
ArduPilot 支持 NxtPX4v2 飞控硬件详解接口映射、参数默认值与固件刷写实战【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilotNxtPX4v2 是由 HKUST UAV-Group 设计、MicoAir Tech. 生产的一款开源飞控硬件本篇文章以 ArduPilot 仓库中该板卡的官方硬件定义文档为核心结合 hwdef.dat、hwdef-bl.dat 与 defaults.parm 等底层配置系统讲解其硬件特性、UART 端口映射、RC 输入、VTX 支持、PWM 输出分组、电池监测、GPIO 编号以及从 DFU 到地面站的完整固件刷写流程。读完本文你将能够依据 ArduPilot 源码精确配置 NxtPX4v2 的每一个串口与参数并独立完成该板卡的固件加载与更新。硬件总览与核心特性NxtPX4v2 是一块基于 STM32H743 的紧凑型开源飞控其官方文档定义的核心特性如下特性规格主控 MCUSTM32H743双精度 FPU 的 Cortex-M7主频可达 480MHzIMUBMI088 BMI088 双 IMUDUAL 冗余气压计SPL06供电12V 2.5A BEC5V 2.5A BEC存储SD 卡槽microSD串口7 路 UARTPWM 输出8 路I2C1 路外部扩展另有板上气压计专用 I2C 总线SPI1 路外部扩展调试1 路 SWD从 hwdef.dat 可以看到更底层的硬件定义板卡使用MCU STM32H7xx STM32H743xx外部晶振OSCILLATOR_HZ 1600000016MHz闪存容量FLASH_SIZE_KB 20482MB并在闪存起始处预留FLASH_RESERVE_START_KB 128128KB给引导加载程序。板卡 ID 通过APJ_BOARD_ID AP_HW_NxtPX4v2定义对应 Tools/AP_Bootloader/board_types.txt 中登记的板卡编号1159地面站据此识别固件与板卡匹配关系。值得一提的细节是hwdef.dat中通过DEFAULTGPIO OUTPUT LOW PULLDOWN将默认引脚全部置低并启用下拉以避免上电瞬间的 ESD 问题同时define HAL_STORAGE_SIZE 32768表明参数存储区为 32KB。这些定义均由 chibios_hwdef.py 解析生成 ChibiOS 工程是理解板卡行为的第一手依据。UART 映射与串口协议配置NxtPX4v2 提供 7 路 UART 加一路 USB端口到物理外设的映射关系如下端口物理外设默认用途备注SERIAL0USB控制台/MAVLinkUSB 虚拟串口SERIAL1UART2MAVLink2 遥测DMA 使能SERIAL2UART4MAVLink2 遥测DMA 使能SERIAL3UART1GPSDMA 使能SERIAL4UART3VTX-HDDJI O3/高清图传DMA 使能SERIAL5UART7ESC 遥测DMA 使能SERIAL6UART5RCIN遥控接收DMA 使能SERIAL7UART8通用串口DMA 使能这一顺序与 hwdef.dat 中的SERIAL_ORDER OTG1 USART2 UART4 USART1 USART3 UART7 UART5 UART8严格对应USB 使用PA11/PA12的 OTG1GPS 使用 USART1PA9/PA10TELEM1 使用 USART2PD5/PD6DJI O3 使用 USART3PD8/PD9TELEM2 使用 UART4PB8/PB9RC 输入使用 UART5PB12/PB13ESC 遥测使用 UART7PE7TELEM3 使用 UART8PE0/PE1。串口协议号速查ArduPilot 中串口行为由SERIALn_PROTOCOL参数控制其枚举定义于 AP_SerialManager.h。与本文强相关的协议号包括5GPS、16ESC Telemetry、23RCIN、32MSP、42MSP_DisplayPort、1/2MAVLink/MAVLink2。NxtPX4v2 的 defaults.parm 已经预置了以下默认值#SERIAL PORT DEFAULTS SERIAL4_PROTOCOL 42 ; UART3 → MSP DisplayPort用于 DJI 高清图传 OSD SERIAL5_PROTOCOL 16 ; UART7 → ESC Telemetry读取电调遥测 SERIAL6_PROTOCOL 23 ; UART5 → RCIN遥控接收机输入如果不想使用默认的 UART5 作为 RC 输入官方文档给出了明确的重配置方法将 RC 接收机改接到 UART2、UART4 或 UART8 中的任一端口然后把对应端口协议设为SERIALn_PROTOCOL23同时把原来的SERIAL6_PROTOCOL从23改为其他值如-1禁用或换作遥测用途。RC 输入接线说明NxtPX4v2 默认的 RC 输入配置在 UART5 上。板上 SBUS 引脚经过反相处理并连接到 RX5PB12在 hwdef.dat 中可以看到对应的定义# RC_INPUT PB13 UART5_TX UART5 PB12 UART5_RX UART5 PD14 SBUS_INV OUTPUT LOWPD14被配置为SBUS_INVSBUS 反相输出脚用于驱动外部 SBUS 反相电路。接线时注意SBUS 接收机直接接到带反相的 SBUS 引脚非 SBUS 单线串行接收机如 FPort 等在 SBUS 引脚悬空不接的前提下可将信号直接接到 RX5。VTX 支持DJI Air Unit / 高清图传板上的 SH1.0-6P 连接器用于连接 DJI Air Unit 或 HD VTX 高清图传协议默认采用 DisplayPort。引脚 1 为 12V 供电切勿将需要 5V 的外设接到该引脚以免烧毁设备。在软件层面VTX 通道的默认配置由 defaults.parm 中的OSD_TYPE 5启用 MSP DisplayPort OSD 支持同时SERIAL4_PROTOCOL 42将 UART3VTX-HD 端口指定为 MSP DisplayPort 协议。图传供电、频道与功率设置可通过VTX_*系列参数在 ArduPilot 地面站中完成也可由 DJI 眼镜端控制。PWM 输出8 通道与 DShot 双向支持NxtPX4v2 最多支持 8 路 PWM 输出全部通道均支持双向 DShotBIDIR DShot。PWM 输出按定时器分组同一组内所有通道必须使用相同的输出协议通道 1、2、3、4 → Group 1通道 5、6 → Group 2通道 7、8 → Group 3硬件层面的引脚分配位于 hwdef.dat# PWM output pins PE9 TIM1_CH1 TIM1 PWM(1) GPIO(50) BIDIR PE11 TIM1_CH2 TIM1 PWM(2) GPIO(51) PE13 TIM1_CH3 TIM1 PWM(3) GPIO(52) BIDIR PE14 TIM1_CH4 TIM1 PWM(4) GPIO(53) PB10 TIM2_CH3 TIM2 PWM(5) GPIO(54) BIDIR PB11 TIM2_CH4 TIM2 PWM(6) GPIO(55) PB0 TIM3_CH3 TIM3 PWM(7) GPIO(56) BIDIR PB1 TIM3_CH4 TIM3 PWM(8) GPIO(57)可以看到 Group1 挂在 TIM1 上Group2 挂在 TIM2 上Group3 挂在 TIM3 上分组边界与定时器边界完全一致——这就是“组内必须同协议”的根源。偶数通道2、4、6、8虽然未标注BIDIR但在 DShot 配置下同样支持双向遥测用户可在地面站通过SERVOx_FUNCTION与MOT_PWM_TYPE如设置为DShot150/DShot300/DShot600并开启BIDIR_DSHOT进行配置。电池监测电压与电流传感器板卡内置电压传感器并在 ESC 连接器上提供外接电流传感器输入电压量程最高支持 6S LiPo 电池。ArduPilot 的电源模块默认参数如下参数默认值说明BATT_MONITOR4使用模拟电压与电流传感器Analog Voltage and CurrentBATT_VOLT_PIN4电压采样 ADC 引脚编号BATT_CURR_PIN8电流采样 ADC 引脚编号BATT_VOLT_MULT10.2电压分压倍率BATT_AMP_PERVLT20.4每伏特对应的安培数电流传感器灵敏度以上默认值在 hwdef.dat 中均有对应的硬件定义# ADC for Power PC4 BATT_VOLTAGE_SENS ADC1 SCALE(1) PC5 BATT_CURRENT_SENS ADC2 SCALE(1) define HAL_BATT_VOLT_PIN 4 define HAL_BATT_CURR_PIN 8 define HAL_BATT_VOLT_SCALE 10.2 define HAL_BATT_CURR_SCALE 20.4即电压采样接入 ADC1 的 PC4 通道电流采样接入 ADC2 的 PC5 通道HAL_BATT_VOLT_SCALE 10.2与HAL_BATT_CURR_SCALE 20.4分别对应参数的默认倍率。若更换外接电流计需依据其规格调整BATT_AMP_PERVLT每伏安培数与BATT_VOLT_MULT分压比并在BATT_MONITOR保持为 4 的情况下校准。指南针CompassNxtPX4v2板上没有内置指南针需要外接 I2C 磁罗盘接到 SDA/SCL 连接器上。为方便用户即插即用硬件定义中启用了外部罗盘自动探测# no built-in compass, but probe the i2c bus for all possible # external compass types define AP_COMPASS_PROBING_ENABLED 1AP_COMPASS_PROBING_ENABLED 1表示固件上电后会在 I2C 总线上自动探测各类常见外接罗盘型号并尝试识别。板载两条 I2C 总线I2C1 挂载 SPL06 气压计PB6/PB7I2C4 引出到外部连接器PD12/PD13外接罗盘应接到 I2C4 的 SDA/SCL。连接后建议在地面站执行罗盘校准COMPASS_*参数并核对方向。GPIO 与 AUX 引脚编号除 8 路 PWM 外板上还有 3 个标注为 AUX1~AUX3 的辅助输出它们直接连接到 STM32H743 的 GPIO可用于 LED 控制、继电器等 PIN 变量操作。ArduPilot 的 PIN 变量编号映射为丝印MCU 引脚ArduPilot GPIO 编号AUX1PA481AUX2PC182AUX3PC083对应 hwdef.dat 中的定义# GPIOs PA4 PINIO1 OUTPUT GPIO(81) LOW PC1 PINIO2 OUTPUT GPIO(82) LOW PC0 PINIO3 OUTPUT GPIO(83) LOW这三个引脚在hwdef.dat中默认初始化为LOW输出。在 ArduPilot 中可通过脚本或PINIO系列参数控制这些 GPIO 输出高低电平例如用于控制相机快门、着陆灯或蜂鸣器。另外板载三色 RGB LED红PD15、绿PD11、蓝PB15对应 GPIO 90/91/92由 hwdef.dat 中的AP_NOTIFY_GPIO_LED_RGB_ENABLED 1启用可用作状态指示。物理规格与接口布局安装孔20 x 20mm孔径 Φ3mm外形尺寸27 x 32 x 8 mm重量6.5g板卡的前视图与后视图如下分别展示了 PWM、RC、GPS、TELEM、VTX、SD 卡槽、SWD 调试口与 12V 电源等接口的物理布局更详细的逐引脚定义可参考同目录下的 NxtPX4v2_Pinout.xlsx 引脚表。固件刷写流程NxtPX4v2 的固件加载分为首次烧录与后续更新两个阶段1. 首次加载DFU 模式按住板上的 bootloader 按键插入 USB板卡进入 DFU 模式。此时应使用任意 DFU 刷写工具如 STM32CubeProgrammer、dfu-util加载with_bl.hex格式的固件——该固件包含引导加载程序是首刷必需的。首刷固件从闪存零偏移开始写入这正对应 hwdef-bl.dat 中的引导加载程序配置# bootloader is installed at zero offset FLASH_RESERVE_START_KB 0 # the location where the bootloader will put the firmware FLASH_BOOTLOADER_LOAD_KB 128即引导加载程序本身从 0 地址安装而应用固件从 128KB 偏移处装载与正式固件镜像预留的FLASH_RESERVE_START_KB 128相吻合。2. 后续更新地面站刷写一旦引导加载程序就位即可通过任意 ArduPilot 地面站软件如 Mission Planner / QGroundControl 的 ArduPilot 支持在线更新固件此时应使用*.apj格式的固件文件。刷写前请确认目标固件类型ArduCopter/ArduPlane/ArduRover 等与板卡匹配地面站会依据 Tools/AP_Bootloader/board_types.txt 中登记的板卡 IDAP_HW_NxtPX4v2 1159校验固件合法性。小结NxtPX4v2 作为 ArduPilot 官方维护的 STM32H743 开源飞控硬件具备双 BMI088 IMU 冗余、SPL06 气压计、8 路 BIDIR DShot 输出、7 路 DMA 串口和 6S 电池监测能力。本文从 README.md 出发结合 hwdef.dat、hwdef-bl.dat 与 defaults.parm 等源码级定义完整覆盖了串口映射、RC 输入、VTX、PWM 分组、电池参数、外接罗盘、GPIO 编号与固件刷写流程。需要更深一层理解时可继续阅读 AP_SerialManager.h 中的串口协议枚举以及 Tools/AP_Bootloader/board_types.txt 中的板卡 ID 登记表这两个文件是验证板卡配置与协议号映射最直接的依据。【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价