ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ArduPilot 移植板卡解析:PixPilot-V6(STM32H743)硬件特性、引脚定义与固件构建指南

ArduPilot 移植板卡解析:PixPilot-V6(STM32H743)硬件特性、引脚定义与固件构建指南 ArduPilot 移植板卡解析PixPilot-V6STM32H743硬件特性、引脚定义与固件构建指南【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot导读本文以 ArduPilot 仓库中的官方板卡文档 libraries/AP_HAL_ChibiOS/hwdef/PixPilot-V6/README.md 为主体结合同目录下的 hwdef.dat 与 hwdef-bl.dat 源码定义完整讲解 PixPilot-V6 飞控的硬件架构、UART 映射、全连接器引脚表、电池监控参数与 DroneCAN 能力。读完本文你将能基于 ArduPilot 正确接线、配置该飞控并自行编译对应固件同时理解 hwdef 文件是如何将 STM32H743 的每一个外设引脚翻译成 ArduPilot 设备的。板卡概览PixPilot-V6 是谁PixPilot-V6 是由 MakeFlyEasy 出品、面向 ArduPilot 生态的 STM32H7 系列飞控。它采用主控 协处理器双 MCU 架构主控为STM32H743VIT6负责飞行控制、传感器采集与任务运算协处理器为STM32F103C8T6IOMCUI/O 控制器负责 PWM 输出与部分 I/O 管理。该板卡在 ArduPilot 的 HAL硬件抽象层中拥有完整移植属于 ArduCopter、ArduPlane、ArduRover、ArduSub 等机型均可使用的通用飞控README 末尾的[copywiki destinationplane,copter,rover,blimp]也印证了这一点。硬件特性Features根据官方 READMEPixPilot-V6 的核心硬件特性如下主控STM32H743VIT6 STM32F103C8T6IOMCU双 MCU 架构三 IMU 冗余两颗 ICM42688-PSPI 一颗 ICM40605SPI均通过 SPI 总线挂载IMU 温控内置加热器用于 IMU 温度控制保证传感器工作温度稳定IMU 减震内部软橡胶减震球对所有内部 IMU 进行隔振双气压计两颗 MS5611SPI内置磁力计IST8310内部 I2C 总线非易失存储内置 RAMTRONSPI数据记录microSD 卡槽支持 FAT 文件系统串口5 路 UARTUSBType-C 接口作为控制台主链路遥控输入PPM 与 S.Bus 输入PWM 输出14 路扩展总线两路 I2C 口与两路 FDCAN 口输出接口一路 S.Bus 输出外设外置蜂鸣器、内置 RGB LED、外部安全开关电源监控双路电压与电流监控舵机供电舵机轨 BEC 独立电源输入。板载布局Pinout官方 README 提供了两张引脚布局图分别从三维视图与分解视图展示了板卡正反面接口分布、传感器 X/Y/Z 轴向标识、电源接口5V1~5V7、AUX1~AUX6辅助输出、CAN1/CAN2、GPS1/GPS2、POWER1/POWER2、TF 卡槽与 USB 接口的位置UART 映射SERIAL0~SERIAL5 的硬件对应关系ArduPilot 中的串口逻辑编号SERIAL0~SERIAL5由 hwdef.dat 中的SERIAL_ORDER决定SERIAL_ORDER OTG1 USART2 USART3 UART4 UART8 UART7 OTG2对照官方 README 的 UART Mapping 表SERIAL 端口硬件外设物理用途SERIAL0OTG1USB控制台Console主 MAVLink 链路通常走 USBSERIAL1USART2TELEM1数传 1SERIAL2USART3TELEM2数传 2SERIAL3UART4GPS1第一路 GPSSERIAL4UART8GPS2第二路 GPSSERIAL5UART7USER用户自由串口注意SERIAL_ORDER末尾的OTG2不占用 SERIAL 编号它服务于其他用途。此外在 hwdef 中还可看到 TELEM1/TELEM2 均带硬件流控引脚CTS/RTS例如PD3 USART2_CTS、PD4 USART2_RTS、PD11 USART3_CTS、PD12 USART3_RTS为高波特率数传与 GPS 数据量需求提供了保障GPS1UART4 的 RXPA1与 GPS2UART8 的 TX/RXPE0/PE1被标记为NODMA意味着这两路串口不使用 DMA 传输。连接器引脚定义Connector pin assignmentsTELEM1、TELEM2 数传口PinSignalVolt1VCC5V2TX (OUT)3.3V3RX (IN)3.3V4GNDGNDI2C1、I2C2 扩展口PinSignalVolt1VCC5V2SCL3.3V3SDA3.3V4GNDGNDCAN1、CAN2 总线口PinSignalVolt1VCC5V2CAN_H12V3CAN_L12V4GNDGND安全开关与蜂鸣器口Safety and buzzer portPinSignalVolt1VCC5V2LED5V3SAFKEY5V4BUZZER5V53V3.3V6GNDGND该端口同时引出安全开关按键信号SAFKEY、状态 LED 与蜂鸣器驱动配合 hwdef 中HAL_HAVE_SAFETY_SWITCH 1与蜂鸣器 PWM 引脚PA15 TIM2_CH1使用。GPS1/I2C1、GPS2/I2C2 复合口PinSignalVolt1VCC5V2TX3.3V3RX3.3V4SCL3.3V5SDA3.3V6GNDGNDGPS 与 I2C 复合在一个接口上使 GPS 模块如带罗盘的一体化 GPS一次接线即可同时获得串口数据与 I2C 罗盘通道。这一点与 hwdef 中内部 I2C 掩码HAL_I2C_INTERNAL_MASK 1的设计思路一致——IST8310 挂在内部 I2C 总线上而外部 I2C1/I2C2 留给用户设备。Serial5 用户串口PinSignalVolt1VCC5V2TX (OUT)3.3V3RX (IN)3.3V4GNDGNDPower1、Power2 电源监控口PinSignalVolt1VCC5V2VCC5V3CURRENT3.3V4VOLTAGE3.3V5GNDGND6GNDGNDRC 输入接线说明PixPilot-V6 的 RC 接收机信号应接入SBUS 输入引脚位于舵机/输出 VCC 输入连接器旁该引脚可解码所有兼容的 RC 协议。但需要注意CRSF、FPort 等包含遥测回传的协议不能使用该引脚必须连接到某一 UART 串口并在 ArduPilot 中进行相应串口协议配置例如设置SERIALx_PROTOCOL为对应协议才能同时实现控制信号与遥测数据的双向传输。电池监控参数配置Battery Monitoring官方文档说明电池监控参数出厂已预设好默认值但若参数丢失或被改动可按以下步骤恢复。第一步启用模拟电压电流式电池监控BATT_MONITOR4设置后重启飞控。第二步依次设置以下参数参数值BATT_VOLT_PIN14BATT_CURR_PIN15BATT_VOLT_MULT18.0BATT_AMP_PERVLT24.0BATT2_VOLT_PIN13BATT2_CURR_PIN4BATT2_VOLT_MULT18.0BATT2_AMP_PERVLT24.0这些参数与 hwdef.dat 中的默认宏定义一一对应define HAL_BATT_VOLT_PIN 14 define HAL_BATT_CURR_PIN 15 define HAL_BATT_VOLT_SCALE 18.0 define HAL_BATT_CURR_SCALE 24.0 define HAL_GPIO_PWM_VOLT_PIN 3其中BATT_VOLT_MULT电压分压倍率与BATT_AMP_PERVLT电流检测每伏对应安培数分别对应 hwdef 中的HAL_BATT_VOLT_SCALE 18.0与HAL_BATT_CURR_SCALE 24.0。模拟引脚编号14、15、13、4 等来自 hwdef 中定义的 ADC 输入通道如PA2 BATT_VOLTAGE_SENS、PA3 BATT_CURRENT_SENS等其编号在 AnalogIn.cpp 中按通道顺序编号。HAL_GPIO_PWM_VOLT_PIN 3则用于 PWM 输出电压检测配合HAL_GPIO_PWM_VOLT_3v3 1将采样基准标定为 3.3V用于估算舵机轨/BEC 供电电压。DroneCAN 能力PixPilot-V6 提供2 个独立 CAN 总线端口CAN1/CAN2每个端口都可以挂载多个 DroneCAN 外设如 CAN 电调、CAN GPS、CAN 电源模块、CAN 舵机等。两个端口对应 hwdef 中的两路 FDCAN 控制器# CAN1 PD0 CAN1_RX CAN1 PD1 CAN1_TX CAN1 # CAN2 PB6 CAN2_TX CAN2 PB12 CAN2_RX CAN2在 ArduPilot 中启用 DroneCAN 时需要将相应 CAN 接口的CAN_P1_DRIVER与CAN_P2_DRIVER参数设置为 1DroneCAN 协议并可通过CAN_D1_UC_NODE等参数配置节点编号。源码级深入hwdef.dat 如何定义这块板卡PixPilot-V6 的完整硬件定义位于 libraries/AP_HAL_ChibiOS/hwdef/PixPilot-V6/hwdef.dat该文件是 ArduPilot ChibiOS HAL 板卡移植的核心。以下逐一解读关键配置。MCU 与时钟MCU STM32H7xx STM32H743xx OSCILLATOR_HZ 24000000板卡基于 STM32H743 系列外部晶振 24 MHz。FLASH_SIZE_KB 2048声明 2 MB 闪存FLASH_RESERVE_START_KB 128为固件保留 128 KB 起始空间前 128 KB 预留给 bootloader 区域。板卡 ID 与 BootloaderAPJ_BOARD_ID AP_HW_PixPilot-V6该 ID 在 Tools/AP_Bootloader/board_types.txt 中注册为1083是 ArduPilot 固件与引导程序校验板卡类型、防止刷错固件的依据。配套的 hwdef-bl.dat 则定义了引导加载程序bootloader自身的配置FLASH_RESERVE_START_KB 0bootloader 从零地址安装、FLASH_BOOTLOADER_LOAD_KB 128H743 扇区为 128 KB固件装载到第 128 KB 处。传感器架构三 IMU 双气压计 RAMTRONSPI 设备表揭示了传感器的总线挂载关系SPIDEV ms5611 SPI1 DEVID5 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 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 SPIDEV sdcard SPI2 DEVID1 SDCARD_CS MODE0 400*KHZ 25*MHZ两颗 ICM42688-P 分别挂在SPI1与SPI4总线ICM40605 挂在 SPI4形成三 IMU 冗余两颗 MS5611 气压计同样分布于 SPI1 与 SPI4RAMTRON 铁电存储FRAM挂在 SPI2用于参数掉电保存microSD 卡也挂在 SPI2工作于 SPI 模式。对应的 IMU/气压计声明如下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关键宏define HAL_DEFAULT_INS_FAST_SAMPLE 7 define HAL_EKF_IMU_MASK_DEFAULT 7HAL_EKF_IMU_MASK_DEFAULT 7二进制 0b111意味着三颗 IMU 全部激活参与 EKF 融合从而启用三个独立的 EKF 通道进行冗余投票。磁力计方面内部 IST8310 通过内部 I2CHAL_I2C_INTERNAL_MASK 1挂载COMPASS IST8310 I2C:0:0x0E false ROTATION_ROLL_180IMU 加热器与磁场补偿hwdef 中有一组与 READMEIMU 温控特性对应的配置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 define AP_IOMCU_FORCE_ENABLE_HEATER 1默认将 IMU 温度控制在45°C通过 IOMCUF103驱动加热器。由于该板没有加热器检测引脚因此通过AP_IOMCU_FORCE_ENABLE_HEATER 1强制在 features 寄存器中声明加热器存在。同时由于加热器工作会产生磁场干扰内部 IST8310hwdef 专门定义了磁场补偿量define HAL_HEATER_MAG_OFFSET {AP_HAL::Device::make_bus_id(AP_HAL::Device::BUS_TYPE_I2C,0,0xe,0xa),Vector3f(0,2,-19)}即对内部 I2C 地址 0x0E 的磁力计施加 (0, 2, -19) 的偏移修正。RAMTRON 参数存储define HAL_WITH_RAMTRON 1 define HAL_STORAGE_SIZE 32768板载 RAMTRON 作为 ArduPilot 的参数存储介质存储区大小为 32 KB可显著提升参数擦写寿命与抗震动可靠性。14 路 PWM 输出与 IOMCUPWM 输出由 IOMCUUSART6 通信IOMCU_UART USART6配合主控定时器共同实现。hwdef 中前 6 路输出示例PE14 TIM1_CH4 TIM1 PWM(1) GPIO(50) PE13 TIM1_CH3 TIM1 PWM(2) GPIO(51) PE11 TIM1_CH2 TIM1 PWM(3) GPIO(52) PE9 TIM1_CH1 TIM1 PWM(4) GPIO(53) PD13 TIM4_CH2 TIM4 PWM(5) GPIO(54) PD14 TIM4_CH3 TIM4 PWM(6) GPIO(55)这些输出被映射为 GPIO(50) 起编号用户可通过SERVOx_FUNCTION -1将任意 PWM 输出当作 GPIO 使用。IOMCU 固件通过ROMFS io_firmware.bin Tools/IO_Firmware/iofirmware_lowpolh.bin打包进固件开机时由主控加载。状态指示与提示音PB4 LED_RED OUTPUT OPENDRAIN GPIO(11) HIGH PB3 LED_GREEN OUTPUT OPENDRAIN GPIO(12) HIGH PB5 LED_BLUE OUTPUT OPENDRAIN GPIO(13) HIGH define AP_NOTIFY_GPIO_LED_RGB_RED_PIN 11 define AP_NOTIFY_GPIO_LED_RGB_GREEN_PIN 13 define AP_NOTIFY_GPIO_LED_RGB_BLUE_PIN 12 define AP_NOTIFY_GPIO_LED_RGB_ENABLED 1RGB LED 与蜂鸣器PA15 TIM2_CH1 TIM2 GPIO(77) ALARM共同构成 ArduPilot 的声光状态提示系统AP_Notify用于显示解锁、报错、GPS 定位等状态。电源监测标志引脚PB2 VDD_BRICK_nVALID INPUT PULLUP PB7 VDD_BRICK2_nVALID INPUT PULLUP PE10 VDD_5V_HIPOWER_nOC INPUT PULLUP PE15 VDD_5V_PERIPH_nOC INPUT PULLUP这些电源标志引脚让 MCU 感知主电源、第二电源以及 5V 高功率/外设电源的无效/过流状态是双路电压电流监控与电源健康判断的底层支撑。固件构建与刷写PixPilot-V6 是 ArduPilot 官方支持的板卡之一固件构建方式与其他板卡一致详见 BUILD.md。以构建 ArduCopter 固件为例./waf configure --board PixPilot-V6 ./waf copter构建产物位于build/PixPilot-V6/bin/可使用 Mission Planner 或 QGroundControl 通过 USBType-C以 DFU 或 bootloader 方式刷写。首次刷写建议先刷入与该板卡配套的 bootloader由 hwdef-bl.dat 构建再通过 USB 上传主固件此后即可通过 USB 或遥测链路完成常规固件升级。刷写与接线前务必核对板卡丝印、本文的引脚表与 PixPilot-V6 README避免电源反接或信号接错。同系列板卡对比与选型参考ArduPilot 仓库中同属 PixPilot 系列的板卡还有PixPilot-V6PRO同为 STM32H743VIT6 IOMCU 架构但 PWM 输出提升至 16 路气压计改用 BMP388SPI内置蜂鸣器支持四路电压电流监控两路模拟 两路 CAN并提供 4 个 CAN 端口含两个带电源的 CAN-POWER 组合口。其电池监控参数在 hwdef.dat 中直接以HAL_BATT_MONITOR_DEFAULT 4、HAL_BATT_VOLT_PIN 14、HAL_BATT2_VOLT_PIN 13等宏预设与 README 的恢复参数一致PixPilot-C3基于 STM32F427VIT6 STM32F103C8T6双 ICM42688-P、BMP388 双气压计14 路 PWM前 8 路由 IOMCU 控制、后 6 路 AUX 支持 DShot并额外提供 DSM 输入口PixPilot-V3上一代 STM32F4 平台板卡。三者共享几乎一致的 UART 映射SERIAL1~SERIAL5 分别对应 TELEM1、TELEM2、GPS1、GPS2、USER与 18.0V/24.0A 的电源监控标定体系迁移飞控时大部分接线习惯与参数可直接沿用。小结PixPilot-V6 是典型的 STM32H743 中高端 ArduPilot 飞控三 IMU 双气压计 内置罗盘构成高冗余传感器组IMU 加热与减震保证传感器输出稳定14 路 PWM、5 串口、2 路 I2C 与 2 路 FDCAN 提供了充裕的外设扩展空间而完整的 hwdef 定义使其在 ArduPilot 生态中即插即用。无论是安装接线、恢复电池监控参数还是自行编译固件本文给出的表格、参数与源码依据hwdef.dat、hwdef-bl.dat都可以作为直接的操作手册与排障参考。【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表