ArduPilot 硬件定义实战:iFlight BLITZ Wing H743 飞控的 UART、PWM、OSD 与固件烧录详解
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
本文基于 ArduPilot 仓库中 BlitzWingH743 硬件定义目录 下的 README 及配套文件展开,系统讲解这款 STM32H743 飞行控制器的硬件特性、串口与 PWM 映射、OSD 配置、电池监测参数以及固件烧录流程。读完后,你将掌握该机型在 ArduPilot 中的默认配置全貌,并能结合 hwdef.dat、defaults.parm 等仓库文件验证每一项默认行为。
一、板卡概览:功能特性与物理参数
iFlight BLITZ Wing H743 是一款四轴多旋翼飞行控制器,在 ArduPilot 中以AP_HW_BlitzH7Wing作为板级标识(定义于 hwdef.dat 第 3 行的APJ_BOARD_ID)。根据 README 列出的规格:
- MCU:STM32H743 32 位处理器,主频 480 MHz;
- 陀螺仪:ICM42688(注意:当前仓库 hwdef.dat 中继承的 IMU 定义按 SPI1 上的 Invensensev3 传感器注册,不同硬件版本可能存在差异,实际以板卡实物为准);
- 存储:SD 卡用于飞行日志;
- BEC:5V 3A(飞控)、9V 3A(VTX)、5–8.4V 6A(舵机);
- 气压计:DPS310;
- OSD:AT7456E;
- 7 路 UART、13 路 PWM 输出(12 路电机 + 1 路 LED);
- 电池输入电压:2S–8S;
- 2 路 I2C,可外接指南针、空速管等;
- 1 路 CAN。
物理参数:安装孔距 30.5×30.5mm(四孔),尺寸 36.9×52mm,重量 35g。
从源码结构看,该板卡并非独立定义全部引脚:hwdef.dat 第一行直接include了姊妹板卡 BlitzH743Pro 的 hwdef.dat,然后仅做少量“差异覆盖”。这解释了为什么两款板卡引脚大部分相同,但串口编号、RSSI 与默认机架等配置存在区别。
二、引脚图(Pinout)
README 提供了三张官方引脚图,分别标注板卡的顶部、中部与底部接口(图中 UART 的 Rn/Tn 引脚是后文串口映射的依据):
三、UART 映射与默认协议
README 给出的串口映射表如下(Rn 为 UARTn 接收脚,Tn 为发送脚):
| 名称 | 引脚 | 功能 | |:-|:-|:-| | SERIAL0 | COMPUTER | USB | | SERIAL1 | RX1/TX1 | UART1(DJI 接口,DMA 支持) | | SERIAL2 | TX2/RX2 | UART2(遥控接收,DMA 支持) | | SERIAL3 | TX3/RX3 | UART3(DMA 支持) | | SERIAL4 | TX4/RX4 | UART4(GPS,DMA 支持) | | SERIAL6 | TX6/RX6 | UART6 | | SERIAL7 | TX7/RX7 | UART7 | | SERIAL8 | TX8/RX8 | UART8(ESC 遥测) |
仓库源码与这张表一一对应,并揭示了几个 README 未展开的关键细节:
- 串口顺序由
SERIAL_ORDER决定。Wing 版覆盖为OTG1 USART1 USART2 USART3 UART4 EMPTY USART6 UART7 UART8 OTG2(见 hwdef.dat 第 5–6 行)。其中EMPTY表示SERIAL5 在本板上不存在——这正是映射表里跳过 SERIAL5 的原因; - ESC 遥测端口与 Pro 版不同。父级 BlitzH743Pro 定义
DEFAULT_SERIAL5_PROTOCOL SerialProtocol_ESCTelemetry(USART6),而 Wing 版undef掉该默认值,改为define DEFAULT_SERIAL8_PROTOCOL SerialProtocol_ESCTelemetry,即 ESC 遥测落在UART8(PE0/PE1)上; - DMA 能力差异。从 BlitzH743Pro/hwdef.dat 可见 USART6、UART7、UART8 均标注
NODMA,因此 README 表格中只有 UART1/2/3/4 标注 DMA-enabled,这一信息可直接对照源码验证; - 各口默认协议(继承自 Pro 版定义):SERIAL1(USART1)默认
MSP_DisplayPort(VTX),并开启AP_MSP_VIDEOTX_ENABLED;SERIAL2(USART2)默认RCIN;SERIAL4(UART4)默认GPS;SERIAL3 默认None。
四、RC 遥控输入
README 明确:遥控输入配置在UART2_RX/UART2_TX引脚上(属于 DJI 接口的一部分),支持所有串行 RC 协议。这与源码一致——USART2(PD5/PD6)的DEFAULT_SERIAL2_PROTOCOL被定义为SerialProtocol_RCIN(BlitzH743Pro/hwdef.dat 第 61–63 行)。因此无论使用 CRSF、SBUS 等哪种串行接收机,只要接在 DJI 接口的 UART2 上即可被识别。
值得注意的一个差异:Wing 版在 hwdef.dat 中undef了 PC5 引脚与BOARD_RSSI_ANA_PIN,即Wing 板不提供 Pro 版那样的模拟 RSSI 输入(Pro 版 PC5 定义为RSSI_ADC)。
五、OSD 与 DisplayPort 支持
README 说明:BLITZ Wing H743 支持 OSD_TYPE 1(MAX7456 驱动,对应板载 AT7456E 芯片),同时默认启用DisplayPort HD OSD,视频信号输出到 HD VTX 接口。
源码层面的对应关系:
- 板级定义
OSD_ENABLED 1、HAL_OSD_TYPE_DEFAULT 1,OSD 挂在SPI2(PB13/PB14/PB15,片选 PB12OSD1_CS),字体通过ROMFS_WILDCARD libraries/AP_OSD/fonts/font*.bin烧入 ROMFS(见 BlitzH743Pro/hwdef.dat 第 165–170 行); - defaults.parm 中额外固化了
OSD_TYPE2 5,即第二路 OSD 使用 DisplayPort 类型,与 README “HD OSD 默认开启”的说明吻合; - SERIAL1(USART1)的默认协议
MSP_DisplayPort用于向支持 DisplayPort 的 HD VTX 输出 OSD 图层。
六、PWM 输出:13 路输出的分组与 DShot 约束
README 的 PWM 说明是本文核心实操要点之一,必须完整保留:
BLITZ Wing H743 共有 13 路 PWM 输出。前 8 路支持双向 DShot(bi-directional DShot)及所有 PWM 类型;第 9–10 路支持 DShot 及所有 PWM 类型;第 11–12 路仅支持 PWM。
PWM 被划入 5 个组:
- PWM 1–2 在 group1;
- PWM 3–6 在 group2;
- PWM 7–10 在 group3;
- PWM 11–12 在 group4;
- PWM 13 在 group5。
约束:同一组内的通道必须使用相同的输出速率;若组内任一通道使用 DShot,则该组所有通道都必须使用 DShot。这一点源于定时器硬件共享,可直接在源码中验证:M1–M2 使用 TIM3,M3–M6 使用 TIM5,M7–M10 使用 TIM4(其中 M11 标注NODMA之外的 M9/M10 也在 TIM4 上),M11–M12 使用 TIM15 且标注NODMA(不支持 DMA,与“11–12 仅 PWM、不支持 DShot”的描述一致),第 13 路(PA8,TIM1)在板级定义中通过AP_NOTIFY_GPIO_LED_2_ENABLED 1标记为 LED 输出(见 BlitzH743Pro/hwdef.dat 第 140–157 行)。
Wing 版固件还通过 defaults.parm 预设了 LED 行为:
# setup for LEDs on chan9 SERVO13_FUNCTION 120 # 第 9 个通道(即第 13 路 PWM)用作 LED NTF_LED_TYPES 257另外,Pro 版定义HAL_FRAME_TYPE_DEFAULT 12(BetaflightX 电机顺序,方便从 Betaflight 迁移的用户保留 M1–M4 接线),而Wing 版显式undef了HAL_FRAME_TYPE_DEFAULT,意味着 Wing 不继承该 BetaflightX 默认机架类型,新刷机的用户应在地面站确认 FRAME_CLASS/FRAME_TYPE 与实际电机接线的匹配关系。
七、视频电源控制与摄像头开关
README 给出两个“继电器式”GPIO 控制点:
- 9V 视频电源:由 GPIO 81 控制,固件默认将其分配给RELAY2。硬件定义中对应
PD10 VTX_PWR OUTPUT GPIO(81) HIGH与define RELAY2_PIN_DEFAULT 81(见 BlitzH743Pro/hwdef.dat 第 118–119 行); - 摄像头输出开关:由 GPIO 82 控制,默认分配给RELAY3,对应
PD11 CAM_SW OUTPUT GPIO(82) HIGH与RELAY3_PIN_DEFAULT 82。
两者都可以从地面站(GCS)或遥控器辅助通道(auxiliary functions)控制,例如把 RELAY2 分配给某通道以在飞行中切断 VTX 供电、切换摄像头电源。默认电平为 HIGH(初始导通)。
八、电池监测与模拟空速输入
README 指出板载电压/电流传感器可支持最高 8S 电池,并给出正确的电池参数组合:
| 参数 | 值 | 说明 | |:-|:-|:-| | BATT_MONITOR | 4 | 电压+电流传感器监测模式 | | BATT_VOLT_PIN | 10 | 电压 ADC 引脚编号 | | BATT_VOLT_MULT | 11 | 电压换算系数 | | BATT_CURR_PIN | 11 | 电流 ADC 引脚编号 | | BATT_CURR_MULT | 50 | 电流换算系数 |
这些值“在固件中默认设置好,通常无需调整”。源码依据:PC0 BATT_VOLTAGE_SENS(HAL_BATT_VOLT_PIN 10、HAL_BATT_VOLT_SCALE 11.0)与PC1 BATT_CURRENT_SENS(HAL_BATT_CURR_PIN 11、HAL_BATT_CURR_SCALE 50.0),以及HAL_BATT_MONITOR_DEFAULT 4(见 BlitzH743Pro/hwdef.dat 第 126–135 行)。
模拟空速输入:README 明确模拟空速引脚编号为 “4”,对应源码中PC4 PRESSURE_SENS ADC1 SCALE(2)与HAL_DEFAULT_AIRSPEED_PIN 4。使用模拟空速管时,将 AIRSPEED 相关参数指向引脚 4 即可被默认识别。
九、指南针:无内置,靠 I2C 探测
README 说明:BLITZ Wing H743没有内置指南磁,可把外部指南针接到 I2C 引脚上。源码侧有两处配套设置:
AP_COMPASS_PROBING_ENABLED 1:固件会在上电时主动探测 I2C 总线上所有可能的外置磁计型号;HAL_I2C_INTERNAL_MASK 0与HAL_COMPASS_AUTO_ROT_DEFAULT 2:表示无板载磁计需排除,并给出自动安装旋转补偿的默认方向。
I2C 总线为 I2C1(PB6/PB7,SCL/SDA,带 PULLUP)与 I2C2(PB10/PB11),与 README “2x I2C for external compass, airspeed, etc.” 一致。
十、日志存储、气压计与 IMU
- SD 卡日志:SDMMC1 数据线(PC8–PC12)与命令线(PD2)在板级定义中完整映射,
HAL_OS_FATFS_IO 1启用 FATFS 日志文件系统,HAL_LOGGER_MIN_MB_FREE 25要求 SD 卡至少预留 25MB 空闲空间; - 气压计:探测 I2C1 地址 0x76 上的 DPS310 与 SPL06 两种型号(
BARO DPS310 I2C:1:0x76/BARO SPL06 I2C:1:0x76),与 README “Barometer: DPS310” 对应; - IMU:SPI1(PA5/PA6/PD7,片选 PC15
GYRO1_CS)上注册 IMU,配置了ROTATION_ROLL_180板级旋转;同时DMA_NOSHARE/DMA_PRIORITY将 TIM3_UP、TIM5_UP、TIM4_UP、SPI1 设为高优先级独占 DMA,保证电机输出与传感器采样的实时性。
十一、固件烧录:DFU 首刷与 apj 更新
README 的烧录流程可概括为两步:
- 首次刷入:按住 bootloader 按键插入 USB 进入 DFU 模式,刷入with_bl.hex(带启动引导加载器的固件包),可使用任意的 DFU 烧录工具;
- 后续更新:首次刷入完成后,即可通过任意 ArduPilot 地面站软件直接更新,更新时使用*.apj固件文件。
仓库中的配套文件也印证了这一流程:hwdef.dat 与 hwdef-bl.dat 是同一硬件定义的两种构建变体(后者用于带 bootloader 的with_bl固件),两者都基于 BlitzH743Pro 的定义并将APJ_BOARD_ID覆盖为AP_HW_BlitzH7Wing,以保证两种构建都能被正确识别为该板卡。
十二、小结与验证路径
BLITZ Wing H743 在 ArduPilot 中的全部默认行为均可由四个文件交叉验证:README(规格与参数说明)、hwdef.dat(板级引脚与默认覆盖)、hwdef-bl.dat(bootloader 构建变体)以及 defaults.parm(LED 与 OSD 默认参数);引脚细节则继承自 BlitzH743Pro/hwdef.dat。实际使用中的三个高频注意点:ESC 遥测在 UART8 而非 UART5、SERIAL5 不存在、M11/M12 仅支持普通 PWM 且与 M7–M10 共享输出组——配置电机协议与串口时避开这些差异即可顺利完成组网。
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考