ArduPilot 板卡移植指南:SequreH743 飞控硬件定义与参数配置全解析
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
SequreH743 / SequreH743v2 是由 Sequre 设计生产的高性能飞控板,基于 STM32H743 主控,是 ArduPilot 官方支持的 ChibiOS 板卡之一。本文以 SequreH743 板卡 README 为核心,结合仓库中 hwdef.dat、hwdef-bl.dat 与 defaults.parm 等板级定义文件,系统讲解该板卡的 UART 映射、RC 输入、OSD/VTX、PWM/DShot 输出、电池监控等硬件资源的 ArduPilot 使用方式,以及固件烧录流程,帮助你在 Copter / Plane / Rover / Sub 等固件中正确部署并调优这块板卡。
板卡概览与硬件特性
SequreH743 系列飞控的核心硬件规格如下(V2 版本在传感器上有增强):
| 项目 | 规格 |
|---|---|
| MCU | STM32H743xx 32 位处理器,主频 480 MHz |
| IMU | MPU6000;V2 版本增加 ICM42688 |
| 气压计 | BMP280(rev 2 上为 DPS368 / DPS310) |
| OSD | AT7456E |
| UART | 6 路串口 |
| PWM 输出 | 9 路(8 路电机输出 + 1 路 LED) |
这些特性在板级定义文件 hwdef.dat 中有完整对应:主控声明为MCU STM32H7xx STM32H743xx,时钟配置为 8 MHz 外部晶振(OSCILLATOR_HZ 8000000)并倍频到 480 MHz(MCU_CLOCKRATE_MHZ 480),Flash 容量 2048 KB,其中起始 384 KB 预留给引导加载程序(FLASH_RESERVE_START_KB 384),参数存储区使用 16 KB 的HAL_STORAGE_SIZE。
从源码结构可以推断,这块板卡属于 ArduPilot 的 ChibiOS 硬件抽象层(AP_HAL_ChibiOS)体系,所有外设资源都通过hwdef.dat中的声明式指令描述,再由Tools/ardupilotwaf/chibios.py与libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py在构建时生成对应的头文件与初始化代码。
引脚定义与 UART 映射
板卡正面与背面的完整引脚图如下,UART 引脚在图中以 Rn(接收)和 Tn(发送)标记:
UART 默认映射
板卡 6 路串口的 ArduPilot 默认功能分配如下:
| 串口 | 硬件 | 默认功能 | 备注 |
|---|---|---|---|
| SERIAL0 | USB | MAVLink2 | USB 虚拟串口 |
| SERIAL1 | USART1 | RCIN(遥控接收) | DMA 使能 |
| SERIAL2 | USART2 | SmartAudio(图传音频) | |
| SERIAL4 | UART4 | None(未分配) | |
| SERIAL6 | USART6 | GPS | DMA 使能 |
| SERIAL7 | UART7 | MSP_DisplayPort | DMA 使能 |
| SERIAL8 | UART8 | ESCTelemetry(电调遥测) |
该映射在 hwdef.dat 中通过SERIAL_ORDER OTG1 USART1 USART2 EMPTY UART4 EMPTY USART6 UART7 UART8声明,即串口序号按此顺序分配给各外设(EMPTY 表示占位跳过,对应 SERIAL3 / SERIAL5 未使用)。各串口的默认协议分别由DEFAULT_SERIAL1_PROTOCOL SerialProtocol_RCIN、DEFAULT_SERIAL2_PROTOCOL SerialProtocol_SmartAudio、DEFAULT_SERIAL4_PROTOCOL SerialProtocol_None、DEFAULT_SERIAL6_PROTOCOL SerialProtocol_GPS、DEFAULT_SERIAL7_PROTOCOL SerialProtocol_MSP_DisplayPort与DEFAULT_SERIAL8_PROTOCOL SerialProtocol_ESCTelemetry指定。
串口协议与 DMA 说明
每个串口的实际协议均可通过对应SERIALn_PROTOCOL参数运行时更改。需要说明的是:
- USART1、USART6、UART7 在硬件定义中未标注
NODMA,即默认启用 DMA 收发(README 中标注为 "DMA-enabled");而 USART2、UART4、UART8 显式标注了NODMA,使用中断/轮询方式收发。 - 若需将某个空闲串口改作他用,只需修改对应的
SERIALn_PROTOCOL参数即可,无需重新编译固件。
RC 输入配置
板卡默认将 USART1(SERIAL1)配置为遥控接收输入,硬件层默认协议为SerialProtocol_RCIN(即参数值 23)。如果你希望将接收机改接到其他 UART 端口,需要:
- 在新的端口上设置
SERIALn_PROTOCOL = 23(RCIN); - 将
SERIAL1_PROTOCOL改为其他值(例如 0/None),释放 USART1。
对于单向协议之外的双向协议(需要回传链路),必须使用 USART1 的 TX 引脚。各主流接收协议所需的参数配置如下:
| 协议 | SERIAL1_PROTOCOL | SERIAL1_OPTIONS | 备注 |
|---|---|---|---|
| 通用 RCIN | 23 | — | 单向协议默认配置 |
| FPort | 23 | 15 | 需要半双工与反转处理 |
| CRSF | 23 | 0 | 仅连接 TX 引脚 |
| SRXL2 | 23 | 4 | 仅连接 TX 引脚 |
| PPM | — | — | 不支持 |
注意:该板卡不支持 PPM 输入,接收协议请优先选择 SBUS、FPort、CRSF 或 SRXL2。
SERIALn_OPTIONS参数用于控制串口的底层行为(如半双工、信号反转、拉高/拉低等),上述取值与 ArduPilot 串口选项的位定义一致,具体可参考对应机型的参数文档中SERIAL1_OPTIONS的说明。
OSD 与 VTX 支持
模拟 OSD(AT7456E)
板卡内置 AT7456E 视频叠加芯片,ArduPilot 侧通过OSD_TYPE = 1(MAX7456 驱动)启用。硬件定义中通过以下指令完成初始化:
- SPI 设备声明:
SPIDEV osd SPI1 DEVID1 OSD1_CS MODE0 10*MHZ 10*MHZ(挂载在 SPI1,片选为 PA4); - 驱动使能:
define OSD_ENABLED 1与define HAL_OSD_TYPE_DEFAULT 1; - 字体资源:
ROMFS_WILDCARD libraries/AP_OSD/fonts/font*.bin,将 OSD 字体文件打包进固件文件系统。
数字 VTX / DisplayPort
板卡同时支持在 HD VTX 连接器(UART7)上输出 MSP DisplayPort 协议,用于 DJI 数字图传等设备。默认配置即SERIAL7_PROTOCOL = MSP_DisplayPort,硬件定义中还通过define AP_MSP_VIDEOTX_ENABLED 1开启了 MSP 视频发射机支持,并预留了OSD_TYPE与 DisplayPort 双路输出并存的能力。
VTX 连接器电压警告
SH1.0-6P 连接器支持 DJI Air Unit / HD VTX 连接,协议默认使用 DisplayPort。注意:该连接器的 1 号引脚输出 9V 电压,切勿将其接到无法承受 9V 的外设上,以免损坏设备。
相机控制引脚
GPIO 81(硬件上对应 PB3)设计用于 PWM 相机控制,但 ArduPilot 目前不支持该功能,只能作为通用 GPIO 使用。默认情况下RELAY2被配置来控制此引脚,并在上电时将 GPIO 置高,对应硬件定义为PB3 CAMERA1 OUTPUT GPIO(81) LOW与define RELAY2_PIN_DEFAULT 81。若需要使用继电器/相机开关,可基于 RELAY2 参数(如RELAY2_FUNCTION、RELAY2_PIN)进行配置。
PWM 输出与 DShot
SequreH743 支持最多 9 路 PWM 或 DShot 输出,电机输出 M1–M9 的焊盘同时出现在电机连接器和独立焊盘上,另有独立的 LED 灯带和其他 PWM 输出焊盘。
输出分组与速率规则
9 路 PWM 分为 4 个定时器组:
| 组 | 通道 | 定时器 |
|---|---|---|
| Group 1 | PWM 1–4 | TIM3 |
| Group 2 | PWM 5–6 | TIM4 |
| Group 3 | PWM 7–8 | TIM2 |
| Group 4 | PWM 9 | TIM1 |
使用时有两条硬性规则:
- 同一组内的通道必须使用相同的输出速率(PWM 频率);
- 如果组内任意一个通道使用 DShot,则整组所有通道都必须使用 DShot。
这是因为同一组共享一个定时器,定时器只能以单一配置运行。硬件定义中电机通道依次为TIM3_CH1~CH4(M1–M4)、TIM4_CH1~CH2(M5–M6)、TIM2_CH3~CH4(M7–M8)、TIM1_CH1(M9/LED),其中M1–M8(通道 1–8)支持双向 DShot(BIDIR),对应定义中 M1、M3、M5、M7 显式标注了BIDIR关键字。双向 DShot 可让飞控从电调读取转速反馈,用于旋翼转速估算与共振滤波等功能。
第 9 路输出与 LED
PWM 9(M9)默认用作 LED 灯带输出,仓库中的 defaults.parm 通过SERVO9_FUNCTION 120(LED)预设了这一功能;硬件层同时声明DEFAULT_NTF_LED_TYPES 455,使能了板载 RGB LED 的通知类型支持。若需复用第 9 路做其他用途,修改SERVO9_FUNCTION即可。
DMA 分配
为保证多路高频率 DShot 与 IMU SPI 读取互不冲突,硬件定义通过DMA_NOSHARE TIM3_UP TIM1_UP TIM4_UP SPI2*和DMA_PRIORITY TIM3_UP TIM1_UP TIM4_UP SPI2*对定时器更新事件与 SPI2 的 DMA 通道做了优先级与共享策略的声明。
电池监控
板卡内置分压电压传感器,同时在 ESC 连接器上提供外部电流传感器输入。电压传感器最高支持6S LiPo电池。
ArduPilot 侧默认的电池参数如下:
| 参数 | 默认值 | 说明 |
|---|---|---|
| BATT_MONITOR | 4 | 模拟电压 + 电流监测 |
| BATT_VOLT_PIN | 13 | 电压采样 ADC 引脚(PC3 / ADC1) |
| BATT_CURR_PIN | 12 | 电流采样引脚 CURR(PC2 / ADC1) |
| BATT_VOLT_MULT | 11.0 | 电压分压倍率 |
| BATT_AMP_PERVLT | 17.2 | 电流传感器每伏安数 |
这些默认值直接固化在硬件定义中:define HAL_BATT_MONITOR_DEFAULT 4、define HAL_BATT_VOLT_PIN 13、define HAL_BATT_VOLT_SCALE 11.0、define HAL_BATT_CURR_PIN 12、define HAL_BATT_CURR_SCALE 17.2,并在 ADC 声明处以PC2 BATT_CURRENT_SENS ADC1 SCALE(1)、PC3 BATT_VOLTAGE_SENS ADC1 SCALE(1)建立物理引脚到传感器的绑定。如果使用不同规格的电流计,请按实际硬件重新校准BATT_AMP_PERVLT(推荐通过BATT_AMP_OFFSET配合校准流程完成)。
罗盘(Compass)与 I2C 外设
SequreH743没有板载罗盘,需要外接罗盘并通过板上的 SDA / SCL 焊盘(I2C1:PB9 SDA、PB8 SCL)连接。硬件定义中做了一系列针对性处理:
define AP_COMPASS_PROBING_ENABLED 1:启动时在 I2C 总线上探测所有可能的外部罗盘类型;define HAL_I2C_INTERNAL_MASK 0:无内部 I2C 器件需要屏蔽;define HAL_COMPASS_AUTO_ROT_DEFAULT 2:默认外部罗盘自动方向为 2(对应常规安装方向)。
此外板载传感器全部位于 I2C 与 SPI 总线:IMU 为 SPI 连接的 Invensense MPU6000(ROTATION_YAW_270)与 V2 版的 ICM42688(ROTATION_PITCH_180_YAW_270),气压计为 I2C0 地址 0x76 的 BMP280,并在 rev 2 上支持 DPS368 / DPS310(硬件定义中同时声明BARO DPS310 I2C:0:0x76)。HAL_DEFAULT_INS_FAST_SAMPLE 1则默认开启了 IMU 快速采样。
另外,define HAL_FRAME_TYPE_DEFAULT 12表明该板卡的默认机架类型为 Betaflight/X 电机顺序(适用于标准电调接线),装机时应按 X 型四旋翼的电机方向检查。
固件烧录与升级
获取固件
SequreH743 的官方固件发布在 ArduPilot 固件仓库中,位于以 "SequreH743" 命名的子目录下,按机型(ArduCopter、ArduPlane、ArduRover、ArduSub 等)分别提供。
首次烧录(DFU)
首次刷写固件需要使用 DFU 模式:
- 按住板上的bootloader 按钮的同时插入 USB 连接电脑;
- 使用任意 DFU 烧录工具(如 STM32CubeProgrammer、dfu-util)加载"with_bl.hex"固件文件。
"with_bl" 版本同时包含引导加载程序与应用程序,首次刷写后板卡即具备完整的 ArduPilot 引导加载器。硬件定义 hwdef-bl.dat 显示,引导加载程序从 Flash 偏移 0 开始(FLASH_RESERVE_START_KB 0),将应用程序放置在 384 KB 偏移处(FLASH_BOOTLOADER_LOAD_KB 384),与主固件中FLASH_RESERVE_START_KB 384的预留布局一致;同时 bootloader 版本会默认将所有引脚拉低(DEFAULTGPIO OUTPUT LOW PULLDOWN)以避免上电瞬间的 ESD 风险。
后续升级
首次烧录完成后,即可通过任意 ArduPilot 地面站软件(Mission Planner、QGroundControl 等)进行后续固件升级。升级时应使用*.apj固件文件——这类文件是带板卡校验信息的压缩格式,地面站可据此校验板卡类型与固件完整性。
参数默认值速查
下表汇总了该板卡在仓库中固化的默认配置,供装机时快速核对:
| 配置项 | 来源文件 | 值 / 说明 |
|---|---|---|
| MCU / 主频 | hwdef.dat | STM32H743xx / 480 MHz |
| Flash 布局 | hwdef.dat | 总 2048 KB,应用起始偏移 384 KB |
| SERIAL1 协议 | hwdef.dat | RCIN(23) |
| SERIAL2 协议 | hwdef.dat | SmartAudio |
| SERIAL4 协议 | hwdef.dat | None |
| SERIAL6 协议 | hwdef.dat | GPS |
| SERIAL7 协议 | hwdef.dat | MSP_DisplayPort |
| SERIAL8 协议 | hwdef.dat | ESCTelemetry |
| 电池监控 | hwdef.dat | BATT_MONITOR=4,VOLT_PIN=13,CURR_PIN=12,VOLT_MULT=11.0,AMP_PERVLT=17.2 |
| SERVO9 功能 | defaults.parm | 120(LED) |
| 机架类型 | hwdef.dat | 12(Betaflight/X) |
| 罗盘 | hwdef.dat | 无板载,外部 I2C 探测使能 |
| 输出组 | hwdef.dat | G1: M1–M4,G2: M5–M6,G3: M7–M8,G4: M9 |
如需深入理解板级定义的语法与生成机制,可直接阅读 SequreH743 的 hwdef.dat 全文,并对照其他板卡定义文件了解 ArduPilot ChibiOS 板卡移植的通用模式;若要调整任何默认参数,在固件中对应机型的参数列表(Copter、Plane、Rover、Sub 的 Parameters 定义)中查找同名参数即可。
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考