ARTICLE DETAIL

建站实战干货

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

ArduPilot 硬件移植实战:PixPilot-C3 飞控板完整配置指南(STM32F427 双 IMU 架构)

2026/9/15 1:58:53 拓冰建站 浏览量
ArduPilot 硬件移植实战:PixPilot-C3 飞控板完整配置指南(STM32F427 双 IMU 架构) ArduPilot 硬件移植实战PixPilot-C3 飞控板完整配置指南STM32F427 双 IMU 架构【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot导读本文围绕 ArduPilot 官方仓库中 PixPilot-C3 板级支持文档 展开系统梳理该飞控板在 ArduPilot ChibiOS 固件中的硬件架构、UART 映射、接口引脚定义、PWM 输出分组、电池监控参数与 DroneCAN 能力并结合 hwdef.dat 与 hwdef-bl.dat 给出源码级验证。读完本文你将掌握 PixPilot-C3 的完整接线方式、固件配置与烧录流程并理解 ArduPilot 如何通过 hwdef 体系描述一块飞控硬件。PixPilot-C3 飞控板外观与接口布局PixPilot-C3 引脚定义图1. PixPilot-C3 硬件概览PixPilot-C3 是一款由 MakeFlyEasy 设计、多家经销商销售的飞控板其板级支持文件位于仓库 libraries/AP_HAL_ChibiOS/hwdef/PixPilot-C3/可运行 ArduPlane、ArduCopter、ArduRover、ArduSub 等全部 ArduPilot 固件。1.1 核心硬件特性根据 README 与 hwdef.dat 交叉验证PixPilot-C3 的硬件资源如下类别配置主控 MCUSTM32F427VIT6应用处理器协处理器STM32F103C8T6IO 控制器驱动前 8 路 PWMIMU双 IMU2 × ICM42688-PSPI气压计双气压计2 × BMP388SPI存储板载 RAMTRONSPI microSD 卡槽串口5 路 UARTUSBUSB Type-CRC 输入PPM、S.Bus、DSMPWM 输出14 路扩展接口2 路 I2C、2 路 FDCAN其他S.Bus 输出、板载蜂鸣器、板载 LED、双路电压/电流监测、舵机轨独立 BEC 供电、外部安全开关1.2 源码级印证hwdef.dat 关键声明hwdef.dat 是 ArduPilot ChibiOS 构建体系定义这块板卡的源代码其中MCU STM32F4xx STM32F427xx声明主控为 STM32F427OSCILLATOR_HZ 24000000指定 24 MHz 晶振FLASH_SIZE_KB 2048声明 2 MB FlashAPJ_BOARD_ID AP_HW_PixPilot-C3指定板卡 ID对应 Tools/AP_Bootloader/board_types.txt 中的1140该文件还定义了同系列 PixPilot-V31096、PixPilot-V61083、PixPilot-V6PRO1160板卡 ID 是 Bootloader 与固件匹配的关键标识IOMCU_UART USART6声明 USART6 专用于连接 STM32F103 IO 协处理器双 IMU 通过IMU Invensensev3 SPI:ICM42688与IMU Invensensev3 SPI:ICM42688_ext两条指令注册双气压计同理注册为BARO BMP388 SPI:BMP388与BARO BMP388 SPI:BMP388_ext。2. UART 映射与串口规划PixPilot-C3 的 5 路 UART 在 ArduPilot 中的 SERIALn 映射如下对应 README 的 UART Mapping 章节并可由 hwdef.dat 的SERIAL_ORDER OTG1 USART2 USART3 UART4 UART8 UART7一行验证SERIAL外设用途DMASERIAL0OTG1USBconsole主 MavLink 通道—SERIAL1USART2数传 1Telem1DMA 使能SERIAL2USART3数传 2Telem2DMA 使能SERIAL3UART4GPS1无 DMANODMASERIAL4UART8GPS2DMA 使能SERIAL5UART7用户自由串口USER无 DMANODMA源码证据hwdef.datPA0 UART4_TX UART4 NODMA/PA1 UART4_RX UART4 NODMAGPS1 使用 UART4显式标注 NODMAPE0 UART8_RX UART8/PE1 UART8_TX UART8GPS2 使用 UART8DMA 使能PE7 UART7_RX UART7 NODMA/PE8 UART7_TX UART7 NODMAUSER 串口UART7也标注 NODMAPA10 UART8_TXINV OUTPUT HIGH GPIO(78) POL(0)UART8 的 TX 支持极性反转配合 FrSky 等需要反向信号的设备极性可通过 GPIO(78) 由用户控制切换。需要说明的是hwdef.dat 注释中把 USART2 描述为 telem1、USART3 描述为 telem2README 中的 SERIAL 编号以最终SERIAL_ORDER排列为准SERIAL1→USART2、SERIAL2→USART3实际接线时以 SERIALn 逻辑编号配置参数即可。3. 接口与引脚定义详解3.1 TELEM1 / TELEM2 数传口PinSignalVolt1VCC5V2TX (OUT)3.3V3RX (IN)3.3V4GNDGND3.2 I2C1 / I2C2 端口PINSIGNALVOLT1VCC5V2SCL3.3V3SDA3.3V4GNDGNDhwdef.dat 中对应PB8/PB9 → I2C1、PB10/PB11 → I2C2且I2C_ORDER I2C1 I2C2定义了总线枚举顺序。3.3 CAN1 / CAN2 端口PINSIGNALVOLT1VCC5V2CAN_H12V3CAN_L12V4GNDGND3.4 Safety 安全开关端口PINSIGNALVOLT1VCC5V2LED5V3SAFKEY5V3.5 GPS1/I2C1 与 GPS2/I2C2 复合端口PINSIGNALVOLT1VCC5V2TX3.3V3RX3.3V4SCL3.3V5SDA3.3V6GNDGND3.6 Serial5USER端口PinSignalVolt1VCC5V2TX (OUT)3.3V3RX (IN)3.3V4GNDGND3.7 Power1 / Power2 电源监测端口PINSIGNALVOLT1VCC5V2VCC5V3CURRENT3.3V4VOLTAGE3.3V5GNDGND6GNDGND3.8 DSM 端口PinSignalVolt1VCC3.3V2RX3.3V3GNDGND4. RC 输入PixPilot-C3 支持将接收机输出接入 SBUS IN 引脚位于舵机/输出 VCC 输入连接器旁来解码所有兼容的 RC 协议。需要注意像 CRSF、FPort 这类包含遥测回传的协议不能走该引脚而必须连接到某一个 UART 并完成对应串口协议配置例如通过SERIALn_PROTOCOL参数设置为 CRSF 等协议。5. PWM 输出架构与分组PixPilot-C3 共提供 14 路 PWM 输出由两套 MCU 分工驱动这一架构在 README 与 hwdef.dat 中均可印证前 8 路S1~S8主输出由专用 STM32F103 IO 控制器驱动。IOMCU_UART USART6表明主控通过 USART6 与 IO 协处理器通信固件内嵌的协处理器程序由ROMFS io_firmware.bin Tools/IO_Firmware/iofirmware_lowpolh.bin提供。这 8 路支持所有 PWM 输出格式但不支持 DShot。后 6 路AUX1~AUX6辅助输出直接挂在 STM32F427 上支持全部 PWM 协议以及DShot。hwdef.dat 中可见这 6 路分别由 TIM1PE9/PE11/PE13/PE14对应 PWM(1)~PWM(4)与 TIM4PD13/PD14对应 PWM(5)~PWM(6)驱动。全部 14 路排针遵循顶排 GND、中排 5V、底排信号的排列方式。5.1 输出分组与频率约束8 路主输出分为 3 组组 1PWM 1、2组 2PWM 3、4组 3PWM 5、6、7、86 路辅助输出分为 2 组组 1PWM 1、2、3、4组 2PWM 5、6使用约束同一组内的通道必须使用相同的输出频率若组内任一通道启用 DShot则整组都必须使用 DShot。这对应 ArduPilot 中由定时器TIM决定的输出分组逻辑——同一定时器下的通道共享频率与时序资源。6. 电池监测参数配置板载双路电压/电流监测默认已配置好。若参数丢失或被改动需恢复以下设置将BATT_MONITOR设为4启用板载模拟电压/电流监测器然后重启飞控依次设置以下参数参数值含义BATT_VOLT_PIN2电池 1 电压采样 ADC 引脚BATT_CURR_PIN3电池 1 电流采样 ADC 引脚BATT_VOLT_MULT18.0电池 1 电压分压倍率BATT_AMP_PERVLT24.0电池 1 电流每伏安培数BATT2_VOLT_PIN14电池 2 电压采样 ADC 引脚BATT2_CURR_PIN13电池 2 电流采样 ADC 引脚BATT2_VOLT_MULT18.0电池 2 电压分压倍率BATT2_AMP_PERVLT24.0电池 2 电流每伏安培数源码级印证hwdef.dat采样引脚PA2 BATT_VOLTAGE_SENS ADC1电压、PA3 BATT_CURRENT_SENS ADC1电流默认比例常量HAL_BATT_VOLT_SCALE 18、HAL_BATT_CURR_SCALE 24第二路为HAL_BATT2_VOLT_SCALE 18.0、HAL_BATT2_CURR_SCALE 24.0——与 README 中的BATT_VOLT_MULT18.0、BATT_AMP_PERVLT24.0完全一致电源状态检测引脚PB5 VDD_BRICK_nVALID INPUT PULLUP、PG5 VDD_BRICK2_nVALID INPUT PULLUP用于向主控报告两路电源的有效状态。7. DroneCAN 能力板载 2 路 FDCAN 端口CAN1、CAN2允许连接两条相互独立的 CAN 总线每条总线上可挂接多个 CAN 外设如 DroneCAN 电调、GPS、空速计等。hwdef.dat 中对应PD0 CAN1_RX CAN1/PD1 CAN1_TX CAN1PB12 CAN2_RX CAN2/PB6 CAN2_TX CAN28. 传感器与存储子系统细节从 hwdef.dat 可进一步了解传感器总线的组织方式SPI1主传感器总线挂载 ICM4268842688_CSPC2、BMP388BARO_CSPD7与磁力计 CSMAG_CSPC1SPI4扩展传感器总线挂载第二颗 ICM4268842688_EXT_CSPE4与第二颗 BMP388BARO_EXT_CSPC14SPI2板载 RAMTRON FRAM用于参数存储HAL_STORAGE_SIZE 16384定义存储区为 16 KBHAL_WITH_RAMTRON 1使能 FRAM 支持SDIOmicroSD 卡PC8~PC12、PD2HAL_OS_FATFS_IO 1启用 FAT 文件系统用于日志记录IMU 快速采样HAL_DEFAULT_INS_FAST_SAMPLE 3开启 ICM42688 的高速采样模式为 EKF 提供更低的 IMU 数据延迟。9. Bootloader 与固件构建9.1 板卡 Bootloader 配置hwdef-bl.dat 定义了该板的引导加载器Bootloader 使用BOOTLOADER_BAUDRATE 115200在 UART/USB 上通信应用固件从 Flash 偏移 16 KB 处加载FLASH_BOOTLOADER_LOAD_KB 16引导阶段启用OTG1 USART2 USART3 UART7四路通道用于刷写协议APJ_BOARD_ID AP_HW_PixPilot-C3与Tools/AP_Bootloader/board_types.txt中的 ID1140对应确保 Bootloader 与固件匹配引导阶段同样声明了全部 CS 引脚为高电平避免外设干扰刷写过程。9.2 使用 waf 构建固件PixPilot-C3 的板卡名称即PixPilot-C3构建方式与仓库 BUILD.md 中其他 ChibiOS 板卡一致构建脚本位于仓库根目录 waf# 配置在仓库根目录执行 ./waf configure --board PixPilot-C3 # 编译全部固件 ./waf copter # 或只编译特定目标 ./waf --targets bin/arducopter # 通过 USB 上传 ./waf --targets bin/arducopter --upload构建产物位于build/PixPilot-C3/bin/目录。修改 hwdef.dat 后需要重新编译 Bootloader 与固件并分别刷写Bootloader 由 hwdef-bl.dat 生成。10. 常见问题与使用提示S.Bus 输出板载一路 S.Bus 输出可配合需要 S.Bus 信号的从设备使用双 IMU 与双气压计的容错PixPilot-C3 在 SPI1 与 SPI4 两条总线上各布置一套 IMU气压计形成物理冗余EKF 会自动仲裁与隔离异常传感器蜂鸣器与 LED 指示蜂鸣器由PA15 TIM2_CH1驱动GPIO(77)RGB LED 由 PA8/PB1/PC15 三路 GPIO 控制对应AP_NOTIFY_GPIO_LED_RGB_*_PIN宏用于飞控状态提示舵机电源独立供电舵机轨servo railBEC 独立供电主电源与舵机电源分离避免大功率舵机拉低主控供电UART8 的极性反转若使用 FrSky 等反相信号设备可利用PA10 UART8_TXINVGPIO(78)在用户控制下切换 TX 极性。参考资料PixPilot-C3 板级支持文档PixPilot-C3 硬件定义文件PixPilot-C3 Bootloader 定义文件ArduPilot 构建指南板卡 ID 定义表【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考