免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

ArduPilot 中的 MicoAir743 飞控板移植支持:硬件定义、接口映射与固件刷写全解析

ArduPilot 中的 MicoAir743 飞控板移植支持:硬件定义、接口映射与固件刷写全解析 ArduPilot 中的 MicoAir743 飞控板移植支持硬件定义、接口映射与固件刷写全解析【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot本篇技术指南围绕 ArduPilot 官方仓库中 MicoAir743 飞控板的完整移植支持展开系统讲解该板卡在 libraries/AP_HAL_ChibiOS/hwdef/MicoAir743/ 目录下的硬件定义hwdef、串口与 PWM 映射、默认参数、以及 DFU 刷写固件的完整流程。读完本文你将掌握 MicoAir743 在 ArduPilot 生态中的资源分配方式能够在实际装机中正确配置串口、RC 输入、OSD、VTX 与电池监控并理解板级适配在 ChibiOS 移植框架中的落地原理。板卡概览为穿越机与多旋翼设计的 STM32H743 飞控MicoAir743 是由 MicoAir Tech 设计生产的飞行控制器其核心是一颗 STM32H743 微控制器。根据其 README 文档该板卡具备如下核心特性MCUSTM32H743Cortex-M7主频 480MHz 级别双 IMUBMI088 与 BMI270 互为冗余气压计DPS310磁力计板载 IST8310OSDAT7456E 模拟 OSD 芯片电源9V 3A BEC 与 5V 3A BEC存储MicroSD 卡槽接口7 路 UART、10 路 PWM 输出、1 路 CAN、1 路 I2C、1 路 SWD这套资源定位非常明确双 IMU 提供姿态估计冗余AT7456E DisplayPort 双 OSD 方案同时兼容模拟图传与 DJI Air Unit 等 HD VTX7 路 UART 足以支撑 GPS、数传、RC 接收机、ESC 回传等多种外设是一块面向 FPV 穿越机与中小型多旋翼的通用 H7 飞控。从源码结构看板级适配的核心是 hwdef.dat 与 hwdef-bl.dat 两个硬件定义文件它们由chibios_hwdef.py脚本解析并生成 ChibiOS 工程。hwdef.dat定义固件运行所需的全部外设映射而hwdef-bl.dat是精简版的 bootloader 定义——只保留 USB、USART1、SWD、LED 与片选引脚hwdef-bl.dat。值得一提的细节固件版 hwdef.dat 中FLASH_RESERVE_START_KB 128为 bootloader 预留了 128KB 起始空间而 hwdef-bl.dat 中FLASH_RESERVE_START_KB 0、FLASH_BOOTLOADER_LOAD_KB 128则表明 bootloader 从零地址安装、将固件放在 128KB 之后——两文件配合共同决定了存储布局。板卡的 APJ 板卡 ID 为AP_HW_MicoAir743编号 1166在 board_types.txt 中登记。UART 映射7 路串口的功能划分MicoAir743 的串口布局在 README 中有明确说明默认映射如下串口硬件默认用途SERIAL0USBUSB 虚拟串口地面站SERIAL1UART1MAVLink2 数传DMA 使能SERIAL2UART2DisplayPortHD VTX 图传DMA 使能SERIAL3UART3GPSDMA 使能SERIAL4UART4MAVLink2 数传DMA 使能SERIAL5UART6RCINRC 接收机输入DMA 使能SERIAL6UART7仅 RXESC Telemetry 电调回传DMA 使能SERIAL7UART8用户自定义DMA 使能对照 hwdef.dat 中的SERIAL_ORDER OTG1 USART1 USART2 USART3 UART4 USART6 UART7 UART8可以确认串口与硬件 UART 的一一对应关系USART1PA9/PA10→ 数传口 TELEM1USART2PA2/PA3→ DJI 图传接口即 DisplayPortUSART3PD8/PD9→ GPSUART4PA0/PA1→ TELEM2USART6PC6/PC7→ RC 输入UART7PE7仅 RX→ ESC 电调回传UART8PE1/PE0→ TELEM3板卡配套的 defaults.parm 将这些默认协议固化为出厂参数SERIAL2_PROTOCOL 42MSP DisplayPort、SERIAL4_PROTOCOL 2MAVLink2、SERIAL5_PROTOCOL 23RCIN、SERIAL6_PROTOCOL 16ESC Telemetry。这意味着拿到板卡后GPS 接到 SERIAL3、电调回传接到 SERIAL6 即可直接工作无需逐一手工配置协议。RC 输入SBUS 反相引脚与单线串行接收默认 RC 输入配置在 UART6 上。README 特别强调了 SBUS 引脚的处理方式板载 SBUS 引脚是反相的inverted硬件定义中对应PD0 SBUS_INV OUTPUT LOWhwdef.dat用于为 SBUS 接收机提供反相信号非 SBUS 的单线串行协议如 FPort、CRSF 等可以直接接入 RX6但此时必须悬空 SBUS 引脚否则反相引脚会干扰信号。也可以把 RC 输入改到其他串口如 UART1、UART4 或 UART8此时需要将目标串口的协议设为SERIALn_PROTOCOL23RCIN同时把SERIAL5_PROTOCOL从 23 改为其他协议例如 2即 MAVLink2避免两个串口同时争抢 RC 数据。这种协议号 串口重映射的组合是 ArduPilot 系列飞控配置 RC 输入的标准手法。OSD 与 VTX 支持模拟 OSD 与数字 HD 图传并存MicoAir743 提供双 OSD 方案这也是该板的一大卖点板载模拟 OSD使用 AT7456E 芯片对应OSD_TYPE 1MAX7456 驱动。硬件层面由 SPI1 挂载 AT7456E片选PB12 AT7456E_CS见 hwdef.dat固件中通过define OSD_ENABLED 1、define HAL_OSD_TYPE_DEFAULT 1默认启用hwdef.datOSD 字体从libraries/AP_OSD/fonts/font*.bin打包进固件。数字 DisplayPort OSDSH1.0-6P 接口用于连接 DJI Air Unit 等 HD VTX默认协议为 DisplayPort。在 defaults.parm 中通过OSD_TYPE2 5MSP DisplayPort与SERIAL2_PROTOCOL 42同时启用因此模拟图传与数字图传可以并行工作。接线警示SH1.0-6P 连接器的Pin 1 输出 9V切勿将其连接到需要 5V 的外设以免烧毁设备。这源于板载 9V 3A BEC 的供电设计。PWM 输出最多 10 通道与 DShot 支持MicoAir743 支持最多10 路 PWM 输出全部通道支持 DShot 数字协议其中通道 1-8 支持双向 DShotbi-directional DShot可用于 RPM 遥测回传。从 hwdef.dat 可以看出通道的物理分配TIM1CH1-CH4对应 PWM1-4TIM3CH3/CH4对应 PWM5-6TIM4CH1-CH4对应 PWM7-10。基于定时器的分组方式决定了协议限制——同一组内的通道必须使用相同的输出协议Group 1通道 1、2、3、4Group 2通道 5、6Group 3通道 7、8、9、10例如若在通道 1-4 的某一组中混用 PWM 与 DShot 会报错计划混用模拟舵机PWM与数字电调DShot时应将它们规划到不同的分组中。10 路 PWM 双 DShot 通道的配置足以覆盖 4 合 1 电调、独立电调、云台舵机与辅助输出等常见装机需求。电池监控6S 电压检测与外部电流传感器板卡内置电压传感器并在电调接口上预留了外部电流传感器输入电压检测最高支持6S LiPo电池。硬件上电压与电流信号分别接到 ADC1 的 PC0、PC1 引脚hwdef.dat并通过编译期宏定义默认量程HAL_BATT_VOLT_PIN 10、HAL_BATT_CURR_PIN 11、HAL_BATT_VOLT_SCALE 21.12、HAL_BATT_CURR_SCALE 40.2。README 给出的默认电池参数为参数值说明BATT_MONITOR4启用电压 电流监测Analogue 模式BATT_VOLT_PIN10电压采样引脚BATT_CURR_PIN11电流采样引脚BATT_VOLT_MULT21.2电压分压倍率BATT_AMP_PERVLT40.2电流传感器每伏安培数其中BATT_MONITOR 4同样固化在 defaults.parm 中开机即启用监测。需要注意的是hwdef 中的分压系数 21.12 与 README 给出的默认参数 21.2 存在微小差异——前者是编译期宏后者是出厂参数表中的推荐值实际以参数值 21.2 生效若外接不同规格的电流传感器应依据传感器手册重新标定BATT_AMP_PERVLT。罗盘与传感器内置 IST8310 与外部 I2C 扩展MicoAir743 板载IST8310 磁力计同时可通过 SDA/SCL 连接器外接罗盘。在 hwdef.dat 中定义了双 I2C 总线I2C1PB6/PB7外部连接器用于外接罗盘等设备I2C2PB10/PB11板载 BARO 与 MAG 专用DPS310 气压计挂在 I2C2 地址0x76。值得注意的是罗盘的探测配置COMPASS IST8310 I2C:ALL_EXTERNAL:0x0E true ROTATION_NONE COMPASS IST8310 I2C:ALL_INTERNAL:0x0E false ROTATION_YAW_90内部罗盘以ROTATION_YAW_90安装朝向注册外部罗盘则为ROTATION_NONE同时在内部总线上禁用了探测AP_COMPASS_IST8310_INTERNAL_BUS_PROBING_ENABLED 0避免误判。双 IMUBMI088 走 SPI2、BMI270 独立片选与板载气压计、磁力计共同构成了完整的传感器冗余方案。机械规格与接口布局安装孔距30.5 × 30.5 mmΦ4mm标准穿越机孔位外形尺寸36 × 36 × 8 mm重量9g板卡实物接口分布可参考端口连接图详细引脚定义见仓库内的 MicoAir743_Pinout.xlsx固件刷写DFU 首刷与地面站升级MicoAir743 的固件刷写分为两个阶段README 与 bootloader 定义文件共同说明了完整流程首次刷写必须通过 DFU按住 bootloader 按钮插入 USB使芯片进入 DFU 模式随后使用任意 DFU 刷写工具加载with_bl.hex固件。该 hex 文件同时包含 bootloader位于 0-128KB见 hwdef-bl.dat与应用固件一次写入即可让板卡具备完整的引导与运行能力。后续升级地面站直刷一旦完成首次刷写、bootloader 生效之后即可使用任意 ArduPilot 地面站软件如 Mission Planner、QGroundControl在线升级升级文件为*.apj格式。apj 是 ArduPilot 的带元数据固件包bootloader 校验通过后会自动完成烧录与启动。固件构建方面与所有 ArduPilot 板卡一致可通过 waf 工具链针对该板卡编译例如./waf configure --board MicoAir743 ./waf copter。板卡对应用户可进一步参考仓库根目录的 BUILD.md 了解完整的构建环境配置。小结MicoAir743 在 ArduPilot 仓库中的适配是hwdef 驱动板级支持的典型范例一份 hwdef.dat 定义固件外设映射一份 hwdef-bl.dat 定义引导程序一份 defaults.parm 固化出厂参数。装机时只需按 UART 映射接线、按 PWM 分组规划输出协议、按需要配置 RC 串口与 VTX 协议即可充分发挥这块 H7 飞控在双 IMU、双 OSD、DShot 与 6S 电池监控上的全部能力。【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表