ARTICLE DETAIL

资讯详情

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

ArduPilot 固件适配指南:Matek H7A3-SLIM 飞控硬件详解与 hwdef 配置剖析

ArduPilot 固件适配指南:Matek H7A3-SLIM 飞控硬件详解与 hwdef 配置剖析 ArduPilot 固件适配指南Matek H7A3-SLIM 飞控硬件详解与 hwdef 配置剖析【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot本文以 ArduPilot 仓库中 MatekH7A3 硬件定义目录 为核心系统梳理 Matek H7A3-SLIM 飞控的硬件资源、UART/RC/OSD/PWM/电源监控等关键配置并结合hwdef.dat、hwdef.inc、defaults.parm等源码级文件解释 ArduPilot 如何通过 ChibiOS hwdef 机制为这块 STM32H7A3 主控的飞控板生成固件。读完本文你将掌握该飞控的端口规划、参数默认值、DShot/OSD/外接罗盘/VTX 供电控制的配置方法并能读懂 ArduPilot 中任何一块飞控板的硬件定义文件。板卡概览一颗 280MHz H7A3 的 slim 全能飞控Matek H7A3-SLIM 是 Matek Systems 推出的一款 36×36mm 标准尺寸飞控30.5mm M3 孔位其核心硬件配置如下类别规格处理器STM32H7A3RIT6 Cortex-M7280 MHz2MB FlashIMUICM-42688p加速度计 陀螺仪SPI 接口气压计SPL06-001OSDAT7456E内置 MAX7456 驱动数据记录W25N01GV dataflash128MB NAND用于日志供电2S–6S Lipo 输入带电压监测9V/2A BEC图传/相机GPIO 控制5V/2A BEC接口11 路 PWM 输出全部支持 DShot、6 路 UART、1 路 CAN、1 路 I2C、4 路 ADC、USB-CLED红色 3.3V 电源指示蓝/绿双色 FC 状态灯Matek H7A3-SLIM 飞控板外观正面丝印标注了电源、SWD、UART、I2C、VBat 等焊盘背面为主控芯片、电源管理与 USB-C 接口。值得说明的是板卡手册中所谓 2MB flash在 ArduPilot 的硬件定义文件中同样被明确为FLASH_SIZE_KB 2048而日志存储则由 W25N01GV128MB NAND承担通过 SPI2 挂载见下文 hwdef 分析。从 Readme 到 hwdefArduPilot 如何描述这块板ArduPilot 的 ChibiOS 移植采用hwdefhardware definition文件描述每块飞控板的全部硬件资源。MatekH7A3目录下共有 6 个文件Readme.md面向用户的板卡使用说明本文主体hwdef.dat板卡级硬件定义入口引用hwdef.inchwdef.inc被hwdef.dat引入的核心引脚/外设定义hwdef-bl.dat/hwdef-bl.incBootloader 专用的硬件定义defaults.parm该板卡的出厂默认参数H7A3-SLIM.jpg板卡实物图。启动引导配置中hwdef-bl.dat设置了板卡 IDAPJ_BOARD_ID AP_HW_MatekH7A3对应 Tools/AP_Bootloader/board_types.txt 中的 ID1149同系列的 MatekH7A3-Wing 为 1228。这意味着固件与 Bootloader 通过统一的板卡 ID 进行识别刷写时必须配套使用。UART 映射6 路串口的默认分工Readme 明确给出了 6 路 UART 与 ArduPilot 串口逻辑编号的对应关系Rx/Tx 以板载丝印为准Rx 为接收、Tx 为发送逻辑串口物理外设默认用途DMASERIAL0USBOTG1USB 连接MAVLink 控制台/刷机–SERIAL1USART1MAVLink2 数传支持SERIAL2USART2串口 RC 输入支持SERIAL3USART3GPS支持SERIAL4UART4用户自定义不支持SERIAL5UART5用户自定义不支持SERIAL6USART6用户自定义不支持从源码看这一映射与 hwdef.inc 中的SERIAL_ORDER OTG1 USART1 USART2 USART3 UART4 UART5 USART6严格一致且 UART4/UART5/USART6 在引脚定义中均标注了NODMA——这与 Readme 中 NO DMA 的说明吻合。defaults.parm给出了对应的默认协议与波特率SERIAL1_PROTOCOL 2 # mavlink2 w/DMA SERIAL2_PROTOCOL 23 # RC INPUT w/DMA SERIAL3_PROTOCOL 5 # GPS w/DMA SERIAL4_PROTOCOL -1 SERIAL5_PROTOCOL -1 SERIAL6_PROTOCOL -1 SERIAL1_BAUD 57 SERIAL2_BAUD 115 SERIAL3_BAUD 57即SERIAL1数传与 SERIAL3GPS默认 57600 波特率SERIAL2RC 输入默认 115200。若需将 SERIAL4/5/6 用作 GPS 或外置数传需手动修改协议与波特率。RC 输入SERIAL2 上的多协议支持与接线要点RC 输入固定配置在 USART2SERIAL2SERIAL2_PROTOCOL23为默认值支持全部串行 RC 协议。Readme 特别给出了各协议的接线与SERIAL2_OPTIONS设置协议接线SERIAL2_OPTIONSCRSFTx2 与 Rx2 均需连接0默认SBUS / DSM / SRXL仅连接 Rx2 引脚SBUS 需设为 3FPort连接 Tx27SRXL2连接 Tx24自动提供遥测注意PPM 在该板上不受支持。SBUS 属于单向接收只需 Rx2而 CRSF/FPort/SRXL2 属于双向协议必须连接对应的 Tx2 引脚才能实现控制与遥测回传。OSD 与显示支持H7A3-SLIM 内置 AT7456E OSD 芯片ArduPilot 侧通过OSD_TYPE 1MAX7456 驱动启用。硬件定义中对应define OSD_ENABLED 1 define HAL_OSD_TYPE_DEFAULT 1 SPIDEV osd SPI1 DEVID4 MAX7456_CS MODE0 10*MHZ 10*MHZ ROMFS_WILDCARD libraries/AP_OSD/fonts/font*.bin即 OSD 芯片挂在 SPI1 总线片选 PB2并且会随固件打包加载 AP_OSD 字体文件。此外也可用任意空闲 UART 连接 DJI 或 DisplayPort 等外置 MSP OSD参见仓库内 AP_MSP 库。PWM 输出11 路全 DShot5 组定时器全部 11 路 PWM 输出均支持 DShot分为 5 组每组由独立的定时器驱动这一点与 hwdef.inc 的引脚定义一一对应通道定时器hwdef 引脚定义节选PWM 1, 2TIM1PA9 TIM1_CH2、PA10 TIM1_CH3BIDIRPWM 3, 4TIM2PA15 TIM2_CH1BIDIR、PB3 TIM2_CH2PWM 5–8TIM3PB0、PB1、PB4、PB5部分 BIDIRPWM 9, 10TIM4PB6 TIM4_CH1、PB7 TIM4_CH2PWM 11TIM16PB8 TIM16_CH1其中标注BIDIR的通道支持BiDirectional DShot双向 DShot可用于遥测电机转速如配合 BLHeli_32 电调。有源蜂鸣器则占用 TIM17PB9GPIO(32) ALARM。电池监控双路电压/电流 ADC 与出厂默认值板载 2 组分压电阻和 2 路电流 ADC支持外接 3.3V 基准的电流传感器。Readme 给出的默认参数如下| 参数 | 值 | 说明 | | ---- | -- | ---- | | BATT_MONITOR | 4 | 使能模拟电压电流监控 | | BATT_VOLT_PIN | 10 | 主电池电压 ADC 引脚 | | BATT_CURR_PIN | 11 | 主电池电流 ADC 引脚 | | BATT_VOLT_MULT | 21.0 | Vbat 焊盘支持 5.5~30V 输入 | | BATT_AMP_PERVLT | X | Curr 焊盘按外接电流传感器规格设置 | | BATT2_VOLT_PIN | 18 | 第二电池电压 ADC 引脚 | | BATT2_CURR_PIN | 8 | 第二电池电流 ADC 引脚 | | BATT2_VOLT_MULT | 21.0 | VB2 焊盘最高支持 69V 电压检测 | | BATT_AMP_PERVLT | X | CU2 焊盘按外接电流传感器规格设置 |这些默认值在 hwdef.inc 中以编译期宏的形式固化PC0 BATT_VOLTAGE_SENS ADC1 SCALE(1) PC1 BATT_CURRENT_SENS ADC1 SCALE(1) PA4 BATT2_VOLTAGE_SENS ADC1 SCALE(1) PC5 BATT2_CURRENT_SENS ADC1 SCALE(1) define HAL_BATT_MONITOR_DEFAULT 4 define HAL_BATT_VOLT_PIN 10 define HAL_BATT_CURR_PIN 11 define HAL_BATT2_VOLT_PIN 18 define HAL_BATT2_CURR_PIN 8 define HAL_BATT_VOLT_SCALE 21.0 define HAL_BATT_CURR_SCALE 40.0 define HAL_BATT2_VOLT_SCALE 21.0可见电压分压比例统一为 21.0与 Readme 的BATT_VOLT_MULT 21.0一致而HAL_BATT_CURR_SCALE 40.0是出厂编译默认的电流比例系数实际使用外接电流传感器时仍需按传感器规格调整BATT_AMP_PERVLT即BATT_CURR_SCALE参数。罗盘与气压计无内置罗盘I2C 总线自动探测该板没有内置罗盘需要外接罗盘接到 I2C 的 SDA/SCL 焊盘。硬件定义中AP_COMPASS_PROBING_ENABLED 1表示 ArduPilot 会主动探测 I2C 总线上所有常见外置罗盘型号HAL_COMPASS_AUTO_ROT_DEFAULT 2则将默认安装方向设置为 ROTATION_YAW_270常见的罗盘安装朝向。HAL_I2C_INTERNAL_MASK 0表明该 I2C 总线完全用于外接设备。板载 SPL06-001 气压计同样挂在 I2C 总线上地址 0x76BARO SPL06 I2C:0:0x76 define AP_BARO_SPL06_ENABLED 1IMU ICM-42688p 则通过 SPI1片选 PC4ROTATION_NONE接入并启用了HAL_DEFAULT_INS_FAST_SAMPLE 1快速采样。VTX 供电控制GPIO 81 与 9V BEC9V BEC 输出至 9V 焊盘由GPIO 81控制默认低电平9V 输出使能。将其置高即可切断该引脚的供电。硬件定义中的对应关系为PC13 PINIO1 OUTPUT GPIO(81) LOW define RELAY1_PIN_DEFAULT 81即 PC13 被定义为 PINIO1GPIO 81同时被设置为默认继电器 1 引脚。实际使用中可通过 Mission Planner 的 Relay 功能或脚本Lua控制该 GPIO实现图传/相机的上电与断电。刷写固件DFU 首刷与 Mission Planner 增量更新该板对应的 ArduPilot 固件存放于 ArduPilot 官方固件服务器的MatekH7A3子目录ArduPlane、ArduCopter、ArduRover、ArduSub 等各有对应版本首次刷写DFU按住板上的Boot 按钮插入 USB 进入 DFU 模式使用 STM32CubeProgrammer 等 DFU 工具加载ardu*_with_bl.hex带 Bootloader 的完整固件镜像。后续更新可直接用 Mission Planner 通过 USB 或数传进行固件升级。如需自行编译可在 ArduPilot 源码根目录使用 waf 构建系统以板卡名MatekH7A3为目标如./waf configure --board MatekH7A3后./waf copter硬件定义即来自本文剖析的 MatekH7A3 目录。总结Matek H7A3-SLIM 是一块资源均衡、面向航拍/穿越机的全能型飞控280MHz H7A3 主控、SPI 高速 IMU、128MB NAND 日志、11 路 DShot PWM、6 路串口、CAN 总线与外置罗盘支持。ArduPilot 通过hwdef.dat/hwdef.inc/defaults.parm三份文件精确刻画了这块板卡的每一个引脚与外设默认行为——理解这套文件结构不仅能完整驾驭 H7A3-SLIM也能举一反三地读懂 ArduPilot 支持的数百种飞控板硬件定义。【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表