news 2026/9/14 11:44:33

ArduPilot ARK_FPV 飞控硬件详解:H743 硬件定义、引脚映射与固件烧录全流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ArduPilot ARK_FPV 飞控硬件详解:H743 硬件定义、引脚映射与固件烧录全流程

ArduPilot ARK_FPV 飞控硬件详解:H743 硬件定义、引脚映射与固件烧录全流程

【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot

本文基于 ArduPilot 仓库中的libraries/AP_HAL_ChibiOS/hwdef/ARK_FPV/硬件定义目录(README、hwdef.dat、defaults.parm 等文件),完整解析 ARK FPV 飞控(STM32H743,480MHz)的传感器布局、全部接插件引脚表、串口/RC/电池/OSD/DSHOT 等关键外设的固件级实现,以及从 DFU 首刷到源码编译烧录的操作流程。读完后你可以准确理解该板卡每个串口、PWM 定时器、I2C 总线的分配逻辑,并能独立完成自定义固件构建与调试口改造。

一、板卡概览:硬件规格与接口一览

ARK FPV 是 ArduPilot 4.7 系列新增支持的自主飞行控制器(见 ArduCopter/ReleaseNotes.txt 中 "ARK_FPV autopilot support" 条目),其硬件定义位于 libraries/AP_HAL_ChibiOS/hwdef/ARK_FPV/ 目录。核心硬件规格如下:

处理器

  • STM32H743 32 位处理器,主频 480MHz
  • 2MB Flash、1MB RAM

传感器

  • Invensense IIM-42653(硬件 rev 0)或 ST LSM6DSV32X(硬件 rev 1)IMU,带加热电阻
  • Bosch BMP390 气压计
  • ST IIS2MDC 磁力计(板载指南针)

电源

  • 输入范围 5.5V–54V(2S–12S 锂电池)
  • 12V / 2A 输出(POWER AUX 接口,默认开启,可通过 RELAY1 开关控制)
  • 5V / 2A 输出(主系统约 300mA、加热约 200mA)

外部接口

接口信号连接器
Micro SD日志存储板载
USB-CVBUS In、USB板载
PWMVBAT In、模拟电流输入、Telem RX、4 路 PWM(支持双向 DSHOT)JST-GH 8 Pin
PWM AUX5 路 PWM(支持双向 DSHOT)JST-SH 6 Pin
RC Input5V Out、UARTJST-GH 4 Pin
POWER AUX12V Out、VBAT In/OutJST-GH 3 Pin
TELEM5V Out、带流控的 UARTJST-GH 6 Pin
GPS5V Out、UART、I2CJST-GH 6 Pin
CAN5V Out、CANJST-GH 4 Pin
VTX12V Out、UART TX/RX、UART RXJST-GH 6 Pin
SPIOSD 或外部 IMU,5V Out、SPIJST-SH 8 Pin
DEBUG3.3V Out、UART、SWDJST-SH 6 Pin

板卡尺寸为 3.6 × 3.6 × 0.8 cm,带 MicroSD 卡后重量 7.5g。

二、完整引脚定义(Pinout)

以下各表与 README.md 中的引脚文档一一对应。

PWM UART4 — 8 Pin JST-GH

Pin信号名电压
1VBAT IN5.5V-54V
2CURR_IN_EXT3.3V
3UART4_RX_EXT3.3V
4FMU_CH1_EXT3.3V
5FMU_CH2_EXT3.3V
6FMU_CH3_EXT3.3V
7FMU_CH4_EXT3.3V
8GNDGND

RC — 4 Pin JST-GH

Pin信号名电压
15.0V5.0V
2USART6_RX_IN_EXT3.3V
3USART6_TX_OUTPUT_EXT3.3V
4GNDGND

PWM AUX — 6 Pin JST-SH

Pin信号名电压
1FMU_CH5_EXT3.3V
2FMU_CH6_EXT3.3V
3FMU_CH7_EXT3.3V
4FMU_CH8_EXT3.3V
5FMU_CH9_EXT3.3V
6GNDGND

POWER AUX — 3 Pin JST-GH

Pin信号名电压
112.0V12.0V
2GNDGND
3VBAT IN/OUT5.5V-54V

CAN — 4 Pin JST-GH

Pin信号名电压
15.0V5.0V
2CAN1_P5.0V
3CAN1_N5.0V
4GNDGND

GPS — 6 Pin JST-GH

Pin信号名电压
15.0V5.0V
2USART1_TX_GPS1_EXT3.3V
3USART1_RX_GPS1_EXT3.3V
4I2C1_SCL_GPS1_EXT3.3V
5I2C1_SDA_GPS1_EXT3.3V
6GNDGND

TELEM — 6 Pin JST-GH

Pin信号名电压
15.0V5.0V
2UART7_TX_TELEM1_EXT3.3V
3UART7_RX_TELEM1_EXT3.3V
4UART7_CTS_TELEM1_EXT3.3V
5UART7_RTS_TELEM1_EXT3.3V
6GNDGND

VTX — 6 Pin JST-GH

注意:该连接器的引脚顺序与标准 HD VTX 线缆不完全一致。

Pin信号名电压
112.0V12.0V
2GNDGND
3UART5_TX_TELEM2_EXT3.3V
4UART5_RX_TELEM2_EXT3.3V
5USART2_RX_TELEM3_EXT3.3V
6GNDGND

SPI(OSD 或外部 IMU)— 8 Pin JST-SH

Pin信号名电压
15.0V5.0V
2SPI6_SCK_EXT3.3V
3SPI6_MISO_EXT3.3V
4SPI6_MOSI_EXT3.3V
5SPI6_nCS1_EXT3.3V
6SPI6_DRDY1_EXT3.3V
7SPI6_nRESET_EXT3.3V
8GNDGND

飞控 Debug — 6 Pin JST-SH

Pin信号名电压
13V3_FMU3.3V
2USART3_TX_DEBUG3.3V
3USART3_RX_DEBUG3.3V
4FMU_SWDIO3.3V
5FMU_SWCLK3.3V
6GNDGND

三、串口映射与调试口改造

SERIAL 端口分配

名称功能
SERIAL0USB
SERIAL1UART7(Telem)
SERIAL2UART5(DisplayPort HD VTX)
SERIAL3USART1(GPS1)
SERIAL4USART2(用户口,HD VTX 上的 SBUS 引脚,仅 RX)
SERIAL5UART4(ESC Telem,仅 RX)
SERIAL6USART6(RC 输入)
SERIAL7OTG2(SLCAN)

所有 UART 均支持 DMA;任意 UART 都可以通过修改其 protocol 参数重新分配用途。

这一映射在 hwdef.dat 中由SERIAL_ORDER OTG1 UART7 UART5 USART1 USART2 UART4 USART6 OTG2一行定义,顺序与上表一一对应。此外,硬件定义还通过DEFAULT_SERIALx_PROTOCOL宏为部分端口预设了默认协议,例如:

  • DEFAULT_SERIAL2_PROTOCOL SerialProtocol_MSP_DisplayPort:VTX 口默认启用 MSP DisplayPort OSD 输出,同时AP_MSP_VIDEOTX_ENABLED 1打开相关功能;
  • DEFAULT_SERIAL4_PROTOCOL SerialProtocol_None:USART2(HD VTX 上的 SBUS RX)默认为空闲,留给用户自定义;
  • DEFAULT_SERIAL5_PROTOCOL SerialProtocol_ESCTelemetryHAL_WITH_ESC_TELEM 1:UART4 默认作为 ESC 遥测口(115200 波特率),只连 RX;
  • DEFAULT_SERIAL6_PROTOCOL SerialProtocol_RCIN:USART6 默认作为 RC 输入口。

把 Debug 口(USART3)用作普通串口

调试连接器上的 USART3 默认被配置为调试控制台(对应 hwdef.dat 中的STDOUT_SERIAL SD3/STDOUT_BAUDRATE 57600)。如需将其改造成第 8 个用户串口(SERIAL8),需要修改hwdef.dat

  1. SERIAL_ORDER列表末尾追加USART3
SERIAL_ORDER OTG1 UART7 UART5 USART1 USART2 UART4 USART6 OTG2 USART3
  1. 删除调试控制台配置行:
STDOUT_SERIAL SD3 STDOUT_BAUDRATE 57600

注意:该改动需要自行编译定制固件(构建方法见第六节"加载固件"),不能仅通过地面站参数完成。

四、RC 输入配置

RC 输入配置在 RX6(USART6_RX)引脚上,支持除 PPM 以外的所有 RC 协议,SERIAL6_PROTOCOL默认为 "23"(RCIN):

  • SBUS / DSM / SRXL:接 RX6 引脚即可;
  • FPort:需额外连接 TX6,并将SERIAL6_OPTIONS设为 "7";
  • CRSF:除 RX6 外还需连接 TX6,可自动提供飞控遥测回传;
  • SRXL2:需连接 TX6,可自动提供遥测,将SERIAL6_OPTIONS设为 "4"。

对应固件实现即 hwdef.dat 中PC6 USART6_TX/PC7 USART6_RX以及DEFAULT_SERIAL6_PROTOCOL SerialProtocol_RCIN三行定义。

五、电池监测

板卡内置电压分压传感器,并在 ESC 连接器(PWM UART4)上引出外部电流传感器模拟输入(PIN 2 CURR_IN_EXT),支持最高 12S 锂电池。默认电池参数:

参数默认值说明
BATT_MONITOR4模拟电压 + 电流传感器
BATT_VOLT_PIN9电压 ADC 引脚
BATT_CURR_PIN12电流 ADC 引脚
BATT_VOLT_SCALE21电压分压比
BATT_AMP_PERVLT120每伏对应安培数

这些默认值在 hwdef.dat 中有直接对应:PB0 BATT_VOLTAGE_SENS ADC1 SCALE(1)PC2 BATT_CURRENT_SENS ADC1 SCALE(1),并通过HAL_BATT_VOLT_PIN 9HAL_BATT_CURR_PIN 12HAL_BATT_VOLT_SCALE 21HAL_BATT_CURR_SCALE 120HAL_BATT_MONITOR_DEFAULT 4五个宏固化进固件。此外 ADC 通道还定义了SCALED1_V3V3(3V3 电源监测)、VDD_5V_SENS(5V 电源监测)与FMU_SERVORAIL_VCC_SENS(12V 轨监测,分压系数 7.66)。

六、指南针、OSD 与 PWM 输出

指南针

板载 IIS2MDC 指南针挂在 I2C4 上。从 hwdef.dat 可见:I2C4_SCL/SCL复用 PF14/PF15,传感器声明为COMPASS IIS2MDC I2C:2:0x1E false ROTATION_NONE(I2C 总线序号 2 即 I2C_ORDER 中的第三路 I2C4),并开启AP_COMPASS_PROBING_ENABLED 1AP_COMPASS_IIS2MDC_ENABLED 1支持运行时探测。全板 I2C 总线顺序为I2C_ORDER I2C1 I2C2 I2C4:I2C1 供 GPS 外接设备使用,I2C2 挂内部 BMP390 气压计(声明为BARO BMP388 I2C:1:0x76,地址 0x76)。

OSD 支持

该飞控在 6 针 DJI 兼容 JST-SH 接头上提供 MSP-DisplayPort 输出,对应DEFAULT_SERIAL2_PROTOCOL SerialProtocol_MSP_DisplayPortOSD_ENABLED 1HAL_OSD_TYPE_DEFAULT 5(MSP Displayport)三项定义。

PWM / DSHOT 输出分组

全部 9 路输出均支持 PWM 与 DShot;其中电机 1-4 支持双向 DSHOT(Bidirectional-DSHOT)。同一电机组内的输出必须统一使用 PWM 或 DShot,分组如下:

  • 电机 1-4:Group1(TIM5 定时器)
  • 电机 5-8:Group2(TIM8 定时器)
  • 电机 9:Group3(TIM4 定时器)

hwdef.dat 中的定义印证了该分组:PI0/PH12/PH11/PH10对应 TIM5_CH4~CH1 并带BIDIR标记(电机 1-4),PI5/PI6/PI7/PI2为 TIM8(电机 5-8),PD12为 TIM4_CH1(电机 9)。文件末尾还有一条关键约束DMA_NOSHARE SPI* TIM5* TIM8*——双向 DShot 定时器不能共享 DMA 通道,这是 H7 上保证电调通信与 IMU/SPI 读取不冲突的 DMA 优先级设计(另有DMA_PRIORITY SDMMC* SPI*优先保障 SD 日志与 IMU 数据流)。

七、12V 外设输出(POWER AUX)与板载继电器

POWER AUX 连接器上的 12V 引脚由一个 BEC 使能脚控制,该引脚预映射为 GPIO 81 并配置为 RELAY1,默认通过RELAY1_DEFAULT = 1保持开启:

  • 将默认状态改为关闭:设置RELAY1_DEFAULT= 0;
  • 由遥控器开关控制:设置RELAY1_FUNCTION= 1(Relay),并将RCx_OPTION= 28(Relay1 On/Off)分配到希望用作开关的通道。

同一连接器上的 VBAT 引脚是电池直通,不受固件控制。

固件侧对应 hwdef.dat 中PG4 VDD_12V_PERIPH_EN OUTPUT HIGH GPIO(81)RELAY1_PIN_DEFAULT 81;而RELAY1_DEFAULT 1则写在 defaults.parm 中,该文件还默认启用 CAN(CAN_P1_DRIVER 1),与 hwdef.dat 中PD0/PD1 CAN1_RX/TX的 CAN1 引脚定义配合,构成板载 CAN 总线的完整支持。

八、IMU 与加热控制(源码级细节)

IMU 挂在 SPI1 上,hwdef.dat 同时注册了两颗候选 IMU 以兼容不同硬件版本:

SPIDEV iim42653 SPI1 DEVID1 IMU1_CS MODE3 2*MHZ 16*MHZ SPIDEV lsm6dsv SPI1 DEVID2 IMU1_CS MODE3 2*MHZ 8*MHZ IMU Invensensev3 SPI:iim42653 ROTATION_YAW_270 IMU LSM6DSV SPI:lsm6dsv ROTATION_YAW_270

两颗芯片共用IMU1_CS(PI9)片选与IMU1_DRDY(PF2)数据就绪中断,安装姿态为ROTATION_YAW_270。硬件版本通过 ID 引脚区分:PG0 HW_VER_REV_DRIVE OUTPUT LOW驱动、PH4 HW_REV_SENS ADC3读取。

IMU 加热由PB10 HEATER_EN OUTPUT LOW GPIO(80)实现,相关宏定义了加热控制环路参数:HAL_IMU_TEMP_DEFAULT 45(目标温度 45℃)、HAL_IMUHEAT_P_DEFAULT 50HAL_IMUHEAT_I_DEFAULT 0.07(PID 参数),与 README 中"带加热电阻"的描述一致。

SPI6 则预留给外部设备:EXT1_CS(PI10)与DRDY_ADIS16507(PD11,GPIO 93)已接线,文件中注释掉的adis16507SPIDEV 行表明该总线可按需扩展 ADIS 系列高精度 IMU。

此外,hwdef.dat 还包含几项对可靠性重要的一级设计,值得注意:

  • DEFAULTGPIO OUTPUT LOW PULLDOWN:所有未复用引脚默认低电平,避免 ESD 问题;
  • FLASH_RESERVE_START_KB 128HAL_STORAGE_SIZE 32768/STORAGE_FLASH_PAGE 14:前 128KB 留给 Bootloader,最后两页(32KB)用作参数/日志 Flash 存储;
  • USE_ALT_RAM_MAP 1:为兼容 PX4 Bootloader 使用不同的 RAM 映射;
  • HAL_OS_FATFS_IO 1与 common.inc 中的 SDMMC2 引脚定义:启用 microSD 上的 FAT 文件系统;
  • 三个 RGB 状态灯(GPIO 90/91/92)挂接到 AP_Notify,PE6 nARMED输出用于上锁指示。

九、板卡注册与固件加载

板卡标识

板卡在构建系统中通过 common.inc 的APJ_BOARD_ID TARGET_HW_ARK_FPV注册,Flash 大小 2048KB,晶振 16MHz,并启用ENABLE_DFU_BOOT 1以支持 DFU 首刷 Bootloader。该板级 ID 在 Tools/AP_Bootloader/board_types.txt 中登记为数值 59(TARGET_HW_ARK_FPV 59),并在 Tools/autotest/validate_board_list.py 的保留 ID 校验列表中登记(对应 "Reserved ARK [BL] FPV"),保证 .apj 固件与板卡严格绑定、防止刷错。

加载固件

首次烧录(DFU):按住 BOOT 按钮插入 USB 进入 DFU 模式,使用任意 DFU 工具刷入 Bootloader(可从 ArduPilot 官方固件服务器的 Bootloader 目录获取)。

日常升级:首次刷入后,可用任意 ArduPilot 地面站软件升级固件,务必使用*.apj固件文件(APJ 格式携带 board ID,可防刷错)。

从源码构建

./waf configure --board ARK_FPV --bootloader ./waf bootloader

然后使用 ST-Link 将 Bootloader 烧到0x08000000。之后构建并直接经 USB-C 上传飞控固件:

./waf configure --board ARK_FPV ./waf copter --upload

其中--board ARK_FPV指向本文所述的libraries/AP_HAL_ChibiOS/hwdef/ARK_FPV/硬件定义目录;--bootloader构建产物对应目录中 hwdef-bl.dat(Bootloader 专用硬件定义,固件加载偏移 128KB)。

十、小结

ARK_FPV 的硬件定义是 ArduPilot ChibiOS HAL 中一块典型"H7 级 FPV 竞速飞控"的完整范例:

  • 串口侧:8 路 SERIAL 由SERIAL_ORDER统一定义,Telem(流控)、DisplayPort VTX、GPS、RC 输入、ESC 遥测各得其所,任意端口协议可通过参数重分配;
  • 电机侧:TIM5/TIM8/TIM4 三组定时器覆盖 9 路 PWM/DSHOT,前 4 路支持双向 DSHOT,DMA 隔离策略保证 IMU 与 SD 日志实时性;
  • 传感侧:双 IMU 候选(IIM-42653 / LSM6DSV32X)+ 加热控制、BMP390 气压计、IIS2MDC 板载指南针、12S 电池模拟监测;
  • 运维侧:DFU 首刷 + APJ 升级 + 源码./waf构建三条路径,Board ID 59 保证固件与硬件匹配。

以上结论均可在 libraries/AP_HAL_ChibiOS/hwdef/ARK_FPV/ 目录下的 README.md、hwdef.dat、common.inc、defaults.parm 四个文件中逐条对照验证。

【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 11:44:22

Linux文件系统结构全解析:从目录树、挂载到inode底层原理

直接用一个真实场景开头:你折腾 Linux 半年了,ls、cd、cat这些命令早就滚瓜烂熟,但真遇到“U盘插上为什么没有盘符”、“df显示满了可就是找不到大文件”、“删了日志但空间没释放”这类问题时,还是会愣住。这些问题的根源全在一个…

作者头像 李华
网站建设 2026/9/14 11:41:58

c++——模版

目录 引子 模版是什么 模版格式 函数模版 函数模版的隐式实例化 函数模版的显式实例化 原理 一些使用的例子(帮助理解) 模版函数的匹配原则 类模板 简单使用 类模板中的成员函数函数放在类外进行定义 原理 非类型模版参数 typename指定类…

作者头像 李华
网站建设 2026/9/14 11:35:56

遗传算法优化电力系统功率损耗的MATLAB实现

1. 项目背景与核心问题 在电力系统运行中,输电线路的功率损耗是影响电网经济性的关键因素。传统调度方法通常基于固定规则或简单优化算法,难以应对用电需求的动态变化。本项目采用遗传算法(Genetic Algorithm, GA)对发电站的用电需…

作者头像 李华