
ArduPilot 板级支持详解iFlight BLITZ Whoop F7 AIO 硬件定义、引脚映射与烧录配置【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot本篇技术文章围绕 ArduPilot 仓库中libraries/AP_HAL_ChibiOS/hwdef/BlitzF745AIO/目录下的板级文档展开系统讲解 iFlight BLITZ Whoop F7 AIO 飞行控制板在 ArduPilot 中的完整支持情况包括硬件规格、UART/RC/OSD/PWM 引脚分配、电池监控参数、气压计与罗盘配置以及 DFU 首次烧录流程。读完本篇后你可以理解该板卡在 ArduPilot ChibiOS HAL 中的引脚定义来源hwdef.dat、出厂默认参数defaults.parm并能独立完成该板卡的固件烧录与基本调参。一、板卡概述BLITZ Whoop F7 AIO 是 iFlight 推出的 Whoop 级 AIOAll-In-One飞行控制板在 ArduPilot 中作为独立的 ChibiOS 板级目标BOARD 名称即目录名BlitzF745AIO提供支持。其核心硬件规格如下MCUSTM32F745BGA 封装主频 216MHz陀螺仪BMI270 或 ICM42688通过 SPI1 引出由 CS 引脚区分板载 Flash16MBBEC 输出5V 2.5A气压计DPS310部分批次无气压计OSDAT7456E5 路 UARTUART1、UART2、UART3、UART4、UART7外部罗盘 I2C 接口5 路 PWM 输出4 路电机输出内部连接至一体化 4-in-1 ESC1 路连接板载 NeoPixel LED集成 55A 4-in-1 BLHeli_S / BlueJay ESC板级引脚图如下原文档中的 pinout 图在仓库中该板级目录 libraries/AP_HAL_ChibiOS/hwdef/BlitzF745AIO/ 共包含 4 个文件本文档 README.md、引脚图blitz_f7_pinout.jpg、出厂默认参数 defaults.parm以及两个硬件定义文件 hwdef.dat含引导程序版本使用和 hwdef-bl.dat无引导程序版本使用。构建系统Tools/ardupilotwaf/chibios.py中的generate_hwdef_h会按env.BOARD自动定位到该目录并由chibios_hwdef.py将.dat文件编译为硬件头文件——即 README 中描述的每一项硬件能力最终都落实为这两个.dat文件里的引脚与宏定义。二、UART 映射与默认串口协议板卡上的 UART 在丝印上标记为 Rn/TnRn 为 UARTn 的接收脚Tn 为发送脚。README 给出的串口映射表为| 名称 | 引脚 | 功能 | | :- | :- | :- | | SERIAL0 | COMPUTER | USB | | SERIAL1 | RX1/TX1 | UART1DJI 接口支持 DMA | | SERIAL2 | RX2/TX2 | UART2DJI 接口 RX支持 DMATX 位于板卡背面 | | SERIAL3 | RX3/TX3 | UART3备用 RC 接收或 GPS支持 DMA | | SERIAL4 | RX4/TX4 | UART4 | | SERIAL7 | RX7/TX7 | UART7 |从 hwdef.dat 的源码结构看上述表格中的“默认功能”正是由以下定义落实的# order of UARTs (and USB) SERIAL_ORDER OTG1 USART1 USART2 USART3 UART4 EMPTY EMPTY UART7 # USART1 (DJI) define DEFAULT_SERIAL1_PROTOCOL SerialProtocol_DJI_FPV # USART2 (RX) define DEFAULT_SERIAL2_PROTOCOL SerialProtocol_RCIN # USART3 (Alt RX or GPS) define DEFAULT_SERIAL3_PROTOCOL SerialProtocol_GPS # UART4 define DEFAULT_SERIAL4_PROTOCOL SerialProtocol_None # UART7 define DEFAULT_SERIAL7_PROTOCOL SerialProtocol_None几个值得注意的实现细节USB 是 SERIAL0SERIAL_ORDER首项OTG1对应 PA11/PA12OTG_FS_DM/DP即 MAF/MAVLink 的 GCS 串口走 USB。DMA 能力差异USART1/2/3 由硬件复用映射到带 DMA 的 USART 外设而 UART4PA0/PA1与 UART7PE7/PE8在 hwdef 中标注为NODMA这与 README 中仅前三路 UART 标注“DMA-enabled”相吻合。因此若将 UART4/UART7 接 GPS 等高波特率设备需要注意其无 DMA 的限制DEFAULT_SERIAL7_BAUD 38定义表明 UART7 默认波特率为 57600其中 38 为 log2 编码后的波特率参数。空槽位SERIAL_ORDER中两个EMPTY意味着该板没有 SERIAL5/SERIAL6这也是为什么编号从 SERIAL4 直接跳到 SERIAL7。ELRS 友好处理在无引导程序的 hwdef-bl.dat 中所有 UART RX 脚在上电时被强制输出高电平OUTPUT HIGH注释明确写道“Keep UART RX pins high to prevent ELRS going into bootloader mode”——因为 ELRS 接收模块在 RX 脚长期低电平时会自行进入 bootloader这一细节对实际组装排障很关键。三、RC 输入RC 输入配置在 UART2 的 RX/TX 引脚上该引脚对同时是 DJI 接口的组成部分支持所有 RC 协议。这一默认行为在 hwdef 中体现为DEFAULT_SERIAL2_PROTOCOL SerialProtocol_RCIN即出厂固件中 SERIAL2 默认就是 RCIN 角色无需手动改协议即可接入接收机。四、OSD 支持BLITZ Whoop F7 AIO 通过OSD_TYPE 1MAX7456 驱动族驱动板载 AT7456E OSD 芯片AT7456 与 MAX7456 寄存器兼容这是 OSD_TYPE 复用同一驱动的常见做法。在 hwdef.dat 中可以看到 OSD 的完整硬件链路SPIDEV osd SPI4 DEVID1 OSD1_CS MODE0 10*MHZ 10*MHZ define OSD_ENABLED 1 define HAL_OSD_TYPE_DEFAULT 1 ROMFS_WILDCARD libraries/AP_OSD/fonts/font*.binOSD 挂在 SPI4PE2/PE5/PE6片选 PE4MODE0、10MHz 时钟HAL_OSD_TYPE_DEFAULT 1与 README 中“OSD_TYPE 1”的说明一一对应OSD 字体通过 ROMFS 通配符打包libraries/AP_OSD/fonts/font*.bin随固件内置。此外该板还包含include ../include/minimize_fpv_osd.inc用于裁剪 OSD 功能以节省 Flash符合 Whoop 小机型的容量约束。五、PWM 输出、DShot 与 4-in-1 ESC5.1 引脚分组板卡有 5 路 PWM 输出PWM 1–4group1内部连接到一体化 4-in-1 ESC板上的电机焊盘标记为 M1–M4PWM 5group2连接板底 NeoPixel LED见第七节。ArduPilot 要求同一组group内所有通道使用相同的输出速率若组内任一通道使用 DShot则全组都必须使用 DShot。该板的电机引脚在 hwdef 中定义如下PB4 TIM3_CH1 TIM3 PWM(1) GPIO(50) BIDIR # 1 PB0 TIM3_CH3 TIM3 PWM(2) GPIO(51) BIDIR # 2 PB5 TIM3_CH2 TIM3 PWM(3) GPIO(52) # 3 PB1 TIM3_CH4 TIM3 PWM(4) GPIO(53) # 4 PC9 TIM8_CH4 TIM8 PWM(5) GPIO(54)电机 1/2 标有BIDIR双向 DShot 能力4 路电机共用 TIM3 定时器并设置了DMA_PRIORITY USART2* TIM3*的 DMA 优先级保证 DShot 高频率输出与串口传输的实时性。5.2 出厂电机参数defaults.parmdefaults.parm 与该板的 DShot 出厂状态直接对应内容非常精炼# setup for LEDs on chan5 SERVO5_FUNCTION 120 NTF_LED_TYPES 257 # Bluejay installed by default SERVO_BLH_AUTO 1 SERVO_BLH_BDMASK 15 SERVO_DSHOT_ESC 2 MOT_PWM_TYPE 6逐项解释SERVO5_FUNCTION 120第 5 通道NeoPixel 那一路 PWM5设置为 LED 功能120 即 NTF_LED 功能号NTF_LED_TYPES 257使其输出 ArduPilot 内置灯语序列位图开启多组灯效SERVO_BLH_AUTO 1SERVO_BLH_BDMASK 15自动识别 BLHeli/Bluejay 类 ESC并对 4 个电机通道bitmask 15 0b01111生效SERVO_DSHOT_ESC 2MOT_PWM_TYPE 6明确指定 DShot 输出协议与 README 中“默认配置为双向 DShot使用已安装的 BlueJay 固件”一致。由于 ESC 固件出厂即为 BlueJayArduPilot 侧默认参数已把它配成 DShot 模式用户一般无需再动这些参数若将板子改装为普通 PWM 输出或有刷 ESC才需要相应修改MOT_PWM_TYPE。六、电池监控板载电压传感器直接支持最高 6S LiPo电流输入接自 4-in-1 ESC 的电流传感器。README 给出的正确参数为| 参数 | 值 | 含义 | | :- | :- | :- | |BATT_MONITOR| 4 | 启用模拟电压/电流监控 | |BATT_VOLT_PIN| 12 | 电压 ADC 引脚号 | |BATT_VOLT_MULT| 10.9 | 电压分压比例 | |BATT_CURR_PIN| 13 | 电流 ADC 引脚号 | |BATT_CURR_MULT| 50 | 电流计安培/伏比例 |这些参数“在固件中默认设置一般无需调整”。从 hwdef.dat 源码看默认值是通过 HAL 宏直接注入的PC3 BATT_VOLTAGE_SENS ADC1 SCALE(1) PC2 BATT_CURRENT_SENS ADC1 SCALE(1) # define default battery setup define HAL_BATT_VOLT_PIN 13 define HAL_BATT_CURR_PIN 12 define HAL_BATT_VOLT_SCALE 10.9 define HAL_BATT_CURR_SCALE 50 define HAL_BATT_MONITOR_DEFAULT 4注意一个容易混淆的细节README 参数表里BATT_VOLT_PIN 12、BATT_CURR_PIN 13而 hwdef 宏中HAL_BATT_VOLT_PIN 13、HAL_BATT_CURR_PIN 12——这是 ArduPilot 电池引脚号的约定参数值与 ADC 通道编号存在映射关系两者指向的是同一物理引脚对 PC3电压与 PC2电流均位于 ADC1。这说明该板电池监控的“免配置”特性确实由板级默认值保证用户刷机后开箱即用。另外 hwdef 中还定义了PC5 RSSI_ADC ADC1BOARD_RSSI_ANA_PIN 15即板卡预留了模拟 RSSI 检测引脚。七、气压计与罗盘气压计板载 DPS310部分硬件版本可能不带。hwdef.dat 同时探测两种型号BARO DPS310 I2C:1:0x76 BARO SPL06 I2C:1:0x76即 I2C1PB8/PB9上拉上地址 0x76 处自动探测 DPS310 或 SPL06。从仓库 ReleaseNotes如 ArduCopter/ReleaseNotes.txt可以看到SPL06 是后续版本为该板补充的兼容项两者地址相同但寄存器布局不同探测机制保证新旧批次都能被识别。罗盘板卡没有内置罗盘但提供 I2C 引脚可外接罗盘。hwdef 中AP_COMPASS_PROBING_ENABLED 1且HAL_I2C_INTERNAL_MASK 0内部 I2C 不占用罗盘探测总线意味着外接罗盘挂到 I2C 总线后会自动被发现无需额外配置。八、NeoPixel LED板底集成一颗 NeoPixel LED即第 5 路 PWM 输出PC9 TIM8_CH4group2预配置为输出 ArduPilot 标准灯语序列对应defaults.parm中的SERVO5_FUNCTION 120。另有一颗独立蓝色板载 LED 由 PD15 驱动hwdef 中HAL_LED_ON 0定义其亮灭电平。九、固件烧录DFU 首刷与后续升级9.1 首次烧录DFU按 README 的操作步骤按住bootloader 按钮的同时插入 USB使板卡进入 DFU 模式使用任意 DFU 工具加载with_bl.hex固件with bootloader含引导程序版本。这一流程与硬件定义中的 Flash 布局严格对应。hwdef.dat 中FLASH_SIZE_KB 1024 # bootloader takes first sector - and parameters come directly after that FLASH_RESERVE_START_KB 96即固件烧录区从 96KB 开始前 96KB 留给 DFU 引导程序与参数区配合HAL_STORAGE_SIZE 16384的存储页定义。而 hwdef-bl.dat无引导程序版本构建产物为普通.hex则是相反布局# bootloader starts at zero offset FLASH_RESERVE_START_KB 0 # the location where the bootloader will put the firmware FLASH_BOOTLOADER_LOAD_KB 96它假定引导程序已存在于 Flash 起始位置并额外通过 SWD 脚PA13/PA14保留调试接口。构建系统正是通过检测hwdef-bl.dat的存在来区分两种固件命名with_bl与普通因此首刷必须使用with_bl.hex的原因就在于DFU 阶段只能把引导程序写入 Flash 首区后续启动才由引导程序从 96KB 处加载主固件。9.2 后续升级首次烧录完成后即可通过任意 ArduPilot 地面站软件如 Mission Planner 或 QGroundControl 的 MAVLink 升级通道在线更新固件应使用*.apj固件文件板级 ID 为AP_HW_BLITZF7AIO见 hwdef 中APJ_BOARD_ID AP_HW_BLITZF7AIO该 ID 与 Tools/AP_Bootloader/board_types.txt 中的登记一致是 .apj 文件能被 DFU 端识别的依据。十、小结BLITZ Whoop F7 AIO 在 ArduPilot 中的支持特点是“开箱即用的 Whoop 形态”SERIAL2 默认 RCIN、SERIAL1 默认 DJI FPV 协议、SERIAL3 默认 GPS、电机默认 DShot/BlueJay 自动识别、电池参数与 OSD 类型均由板级默认值注入用户只需按引脚表完成外部接线即可。所有硬件行为的“唯一事实来源”是 hwdef.dat 与 defaults.parm当 README 文档与具体引脚行为存在疑问时直接查阅这两个文件即可得到答案。【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考