ArduPilot AeroCogito H7-Digital 飞控硬件定义与实战指南:从引脚映射到烧录排障
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
本篇指南基于 ArduPilot 仓库中 AeroCogito H7-Digital 板级 README 展开,结合同目录下的 hwdef.dat 与 hwdef-bl.dat 硬件定义文件,完整讲解这块面向伴飞计算机(Raspberry Pi / Jetson)设计的 NDAA 合规飞控的串口映射、连接器引脚、关键参数默认值、PWM/DShot 输出分组、电池监测以及固件烧录流程。读完你可以独立完成该板型的接线、参数配置、首次开机校准与常见故障排查。
一、板卡概述:一块为伴飞计算机而生的 H743 飞控
AeroCogito H7-Digital 是一款 NDAA 合规的高性能飞控,核心卖点是从设计之初就围绕"飞控 + 伴飞计算机(Raspberry Pi、Nvidia Jetson)"的组网场景,且仅支持数字高清图传(OpenIPC、DJI、Walksnail、HDZero),板上没有模拟 OSD 芯片。
核心规格如下:
| 项目 | 参数 |
|---|---|
| MCU | STM32H743 @ 480MHz |
| 内存 | 1MB RAM,2MB Flash |
| IMU | ICM-42688-P 6轴(独立供电轨 + 额外滤波) |
| 气压计 | DPS368 |
| 尺寸 | 41mm x 41mm(30.5mm 安装孔距) |
| 输入 | 3S-6S(11.1V - 25.2V) |
| 5V BEC | 峰值 2.5A / 持续 2A |
| 10V BEC | 峰值 2.5A / 持续 2A,软件可控 |
| 模拟输出 | 10 路 PWM(DShot150/300/600、PWM、OneShot) |
从 hwdef.dat 可以确认硬件层面的几处关键设定:
MCU STM32H7xx STM32H743xx OSCILLATOR_HZ 16000000 # 16MHz 外部晶振 FLASH_SIZE_KB 2048 FLASH_RESERVE_START_KB 128 # 前 128KB 保留给 bootloader即主固件从 128KB 偏移处加载,前 128KB 是 DFU bootloader 的领地,这一点直接关系到后文"首次烧录"章节的操作方式。
二、串口映射(SERIAL0 ~ SERIAL6)
板子上 UART 引脚标注为 Rn / Tn:Rn 是 UARTn 的接收脚,Tn 是发送脚。hwdef.dat 第 24 行 的SERIAL_ORDER决定了串口号与外设的对应关系:
SERIAL_ORDER OTG1 UART5 USART2 UART8 UART4 USART3 UART7逐号对应结果:
| Serial# | 物理端口 | 默认协议 | 说明 | GPIO 引脚 |
|---|---|---|---|---|
| SERIAL0 | OTG1 | USB-FS | USB Type-C 接口 | PA11/PA12 (OTG_FS_DM/DP) |
| SERIAL1 | UART5 | MAVLink2 | 伴飞计算机/遥测,DMA | PD1(TX) / PD0(RX) 对应 UART4 见注* |
| SERIAL2 | UART2 | DisplayPort | MSP OSD | PA2(TX) / PA3(RX) |
| SERIAL3 | UART8 | GPS | DMA | PE0(RX) / PE1(TX) |
| SERIAL4 | UART4 | RCIN | SBUS/CRSF/ELRS,DMA | PD1(TX) / PD0(RX) |
| SERIAL5 | UART3 | ESC Telemetry | 仅 RX(ESC 座 T 脚) | PD9(RX, NODMA) |
| SERIAL6 | UART7 | NONE | 仅 RX(R7 脚接 DJI 图传) | PE7(RX) |
注*:原文档 UART 映射表列出的端口与协议默认值,可在 hwdef.dat 的 UART ASSIGNMENTS 段逐条核对,例如:
# UART5: Companion computer (MAVLink) PB12 UART5_RX UART5 PB13 UART5_TX UART5 define DEFAULT_SERIAL1_PROTOCOL SerialProtocol_MAVLink2 define DEFAULT_SERIAL1_BAUD 115需要特别注意原文档中的一条易错点(DJI SBUS 切换):
若要用 SERIAL6 在 HD VTX 连接器上接收 SBUS,则 SERIAL4 不能再用作 RC(即其协议需从 "23" 改掉),并把
SERIAL6_PROTOCOL改为 "23"(RCIN)。
这与 hwdef.dat 中 UART7 只定义了PE7 UART7_RX UART7(纯接收)的硬件事实一致——该口没有 TX,只能做 SBUS/DSM 这类单向接收型 RC 输入,默认未启用协议。
三、连接器引脚详解(BetaFlight JST-SH 标准)
H7-Digital 全部采用 BetaFlight 连接标准的 JST-SH 座子:8 pin(ESC)、6 pin(Motor 5-8 / GPS-Compass / VTX)、4 pin(Servo / RC Input / Companion Computer)。各座子逐脚定义如下,接线时务必按此表核对。
3.1 ESC 座(PWM 输出 1-4)
| Pin | Label | 信号 | 电压 |
|---|---|---|---|
| 1 | BAT | VBAT | 11.1V - 25.2V (3S-6S) |
| 2 | G | GND | GND |
| 3 | C | Current | 3.3V |
| 4 | T | Telemetry | 3.3V |
| 5 | M1 | M1 | 3.3V |
| 6 | M2 | M2 | 3.3V |
| 7 | M3 | M3 | 3.3V |
| 8 | M4 | M4 | 3.3V |
其中 C 脚接电流采样线(对应 ADC1 的 PA1 通道),T 脚接 ESC 遥测数据线(对应 USART3_RX,即 SERIAL5,仅接收)。
3.2 Motor 5-8 座(PWM 输出 5-8)
| Pin | Label | 信号 | 电压 |
|---|---|---|---|
| 1 | NC | 未连接 (NC) | - |
| 2 | G | GND | GND |
| 3 | M5 | M5 | 3.3V |
| 4 | M6 | M6 | 3.3V |
| 5 | M7 | M7 | 3.3V |
| 6 | M8 | M8 | 3.3V |
3.3 Servo 座(PWM 输出 9-10)
| Pin | Label | 信号 | 电压 |
|---|---|---|---|
| 1 | 5V | PWR | 5V |
| 2 | G | GND | GND |
| 3 | S1 | S1 | 3.3V |
| 4 | S2 | S2 | 3.3V |
3.4 GPS/Compass 座(UART8 + I2C4)
| Pin | Label | 信号 | 电压 |
|---|---|---|---|
| 1 | 4V5 | PWR | 4.5V |
| 2 | G | GND | GND |
| 3 | R8 | RX | 3.3V |
| 4 | T8 | TX | 3.3V |
| 5 | SDA | SDA | 3.3V |
| 6 | SCL | SCL | 3.3V |
注意:4.5V 供电脚在 USB 上电或电池上电时都会输出,因此接 GPS/罗盘前要先断开 USB,避免 5V 反灌进计算机接口。
3.5 Companion Computer/Telemetry 座(UART5)
| Pin | Label | 信号 | 电压 |
|---|---|---|---|
| 1 | NC | 未连接 (NC) | - |
| 2 | G | GND | GND |
| 3 | R5 | RX | 3.3V |
| 4 | T5 | TX | 3.3V |
这是 SERIAL1,飞控侧接收脚 R5 接伴飞计算机的 TX,发送脚 T5 接伴飞计算机的 RX。
3.6 RC Input 座(UART4)
| Pin | Label | 信号 | 电压 |
|---|---|---|---|
| 1 | 4V5 | PWR | 4.5V |
| 2 | G | GND | GND |
| 3 | R4 | RX | 3.3V |
| 4 | T4 | TX | 3.3V |
同样注意 4.5V 脚的 USB/电池双路供电问题,与 3.4 节相同。
3.7 VTX/DisplayPort 座(UART2)
| Pin | Label | 信号 | 电压 |
|---|---|---|---|
| 1 | 10V | PWR | 10V |
| 2 | G | GND | GND |
| 3 | T2 | TX | 3.3V |
| 4 | R2 | RX | 3.3V |
| 5 | G | GND | GND |
| 6 | R7 | RX | 3.3V |
10V 脚是"软件可控"的 VTX 供电,由 hwdef.dat 中映射为 RELAY2 的 PE2 使能脚控制:
PE2 BEC_EN OUTPUT HIGH GPIO(80) # 10V BEC 使能(VTX 供电) define RELAY2_PIN_DEFAULT 80 define RELAY2_DEFAULT 1 # Relay2 默认 ON即默认上电即输出 10V;在 ArduPilot 里把 RC 开关或任务指令绑定到RELAY2 ON/OFF功能,即可在飞行中切换 VTX 电源。
四、伴飞计算机(Companion Computer)接线与配置
H7-Digital 通过 UART5(SERIAL1)对接伴飞计算机,是这块板子相对普通 FPV 飞控最大的差异化设计。
4.1 硬件接线
接板上的COMPUTER座(3.5 节引脚表):
- 2 脚 (GND) → 伴飞计算机 GND
- 3 脚 (R5/RX) → 伴飞计算机 TX
- 4 脚 (T5/TX) → 伴飞计算机 RX
不要接 1 脚 NC。
4.2 软件配置
hwdef.dat 已将默认协议与波特率写死为:
define DEFAULT_SERIAL1_PROTOCOL SerialProtocol_MAVLink2 define DEFAULT_SERIAL1_BAUD 115对应参数含义:
SERIAL1_PROTOCOL = 2(MAVLink2,默认)SERIAL1_BAUD = 115(即 115200,默认)- 高带宽应用(如带视觉流/多路传感器融合)可考虑
SERIAL1_BAUD = 921(921600),但更高波特率要求短线缆、屏蔽良好与扎实的电性设计,长距离飞线先保持 115200。
五、RC 输入与 OSD(仅数字 HD VTX)
5.1 RC 输入
默认 RC 输入在 UART4(SERIAL4),hwdef.dat 中定义为:
# UART4: RC receiver input PD1 UART4_TX UART4 PD0 UART4_RX UART4 define DEFAULT_SERIAL4_PROTOCOL SerialProtocol_RCIN支持 SBUS、CRSF/ELRS、DSM、PPM 等标准协议。如前文所述,若要把 DJI 图传口的 SBUS 挪到 SERIAL6(UART7 R7 脚),需把 SERIAL4 协议从 23 改走,并将SERIAL6_PROTOCOL = 23。
5.2 OSD
本板只有数字 HD VTX OSD,没有模拟 OSD 芯片。hwdef.dat 中:
# USART2: Video transmitter (MSP DisplayPort) PA2 USART2_TX USART2 PA3 USART2_RX USART2 define DEFAULT_SERIAL2_PROTOCOL SerialProtocol_MSP_DisplayPort define AP_MSP_VIDEOTX_ENABLED 1配合 第 153-155 行 的OSD_ENABLED 1与HAL_OSD_TYPE_DEFAULT 5(MSP DisplayPort),出厂默认即为:
OSD_TYPE = 5(MSP DisplayPort)SERIAL2_PROTOCOL = 42(DisplayPort)
兼容数字系统:OpenIPC、DJI、Walksnail、HDZero。VTX/DisplayPort 座的 T2/R2 脚接图传的 MSP 口;若接 DJI 类只回传 SBUS 的图传,则其 SBUS 数据走 R7(SERIAL6,UART7 接收)。
六、PWM 输出:三路定时器、三组协议约束
8 路电机 + 2 路舵机全部由三路定时器驱动,hwdef.dat 中的定义:
# Main motor outputs (1-8) PE9 TIM1_CH1 TIM1 PWM(1) GPIO(50) BIDIR # Motor 1 PE11 TIM1_CH2 TIM1 PWM(2) GPIO(51) # Motor 2 PE13 TIM1_CH3 TIM1 PWM(3) GPIO(52) BIDIR # Motor 3 PE14 TIM1_CH4 TIM1 PWM(4) GPIO(53) # Motor 4 PD12 TIM4_CH1 TIM4 PWM(5) GPIO(54) BIDIR # Motor 5 PD13 TIM4_CH2 TIM4 PWM(6) GPIO(55) # Motor 6 PD14 TIM4_CH3 TIM4 PWM(7) GPIO(56) BIDIR # Motor 7 PD15 TIM4_CH4 TIM4 PWM(8) GPIO(57) # Motor 8 # Servo outputs (9-10) PC6 TIM3_CH1 TIM3 PWM(9) GPIO(58) # Servo 1 PC7 TIM3_CH2 TIM3 PWM(10) GPIO(59) # Servo 2| 输出 | 引脚 | 定时器通道 | 分组 |
|---|---|---|---|
| M1 | PE9 | TIM1_CH1 | 1 |
| M2 | PE11 | TIM1_CH2 | 1 |
| M3 | PE13 | TIM1_CH3 | 1 |
| M4 | PE14 | TIM1_CH4 | 1 |
| M5 | PD12 | TIM4_CH1 | 2 |
| M6 | PD13 | TIM4_CH2 | 2 |
| M7 | PD14 | TIM4_CH3 | 2 |
| M8 | PD15 | TIM4_CH4 | 2 |
| S1 | PC6 | TIM3_CH1 | 3 |
| S2 | PC7 | TIM3_CH2 | 3 |
要点:
- 所有电机输出支持 DShot(150/300/600)以及 PWM/OneShot;双向 DShot(BIDIR)仅 M1/M3/M5/M7 四条线具备(TIM1_CH1/3、TIM4_CH1/3 标有
BIDIR),因此 M1-M8 都支持 DShot 遥测回读,但注意只有奇数电机线声明了双向能力。 - 同组协议必须一致:TIM1 同一定时器只能跑一种协议,所以 M1-M4 必须全部同协议(例如都 DShot300);M5-M8(TIM4)同理;S1-S2(TIM3)同理。配置时以组为单位设置
MOT_PWM_TYPE。
七、电池监测:内置压流双采
板载电压/电流监测,hwdef.dat 将两个 ADC 通道定义在 ADC1:
PA0 BATT_VOLTAGE_SENS ADC1 SCALE(1) # 电池电压采样 PA1 BATT_CURRENT_SENS ADC1 SCALE(1) # 电池电流采样出厂默认参数(同文件 第 163-168 行):
BATT_MONITOR = 4(电压 + 电流)BATT_VOLT_PIN = 16(PA0 对应 ADC 通道 16)BATT_CURR_PIN = 17(PA1 对应 ADC 通道 17)- 电压分压比
HAL_BATT_VOLT_SCALE = 11.0 - 电流传感系数
HAL_BATT_CURR_SCALE = 18.0
若更换电池插头线或改装分压电阻,需按硬件重新计算这两个 scale 值,否则电池百分比与低电压保护都会失准。
八、板载传感器:IMU、气压计、罗盘与 SD 卡
8.1 IMU:ICM-42688-P 走 SPI1
hwdef.dat 中:
SPIDEV 42688 SPI1 DEVID1 GYRO_CS MODE3 2*MHZ 16*MHZ IMU Invensensev3 SPI:42688 ROTATION_ROLL_180_YAW_90- 引脚:SPI1 的 SCK/MISO/MOSI = PA5/PA6/PA7,片选
PB0 (GYRO_CS),数据就绪中断PB1 (GYRO_EXTI); - 双速率配置
2*MHZ 16*MHZ:初始化 2MHz,工作 16MHz; - 默认安装旋转
ROTATION_ROLL_180_YAW_90(即AP_MOUNT_ATT的 ROLL_180_YAW_90)——如果你把飞控按非默认姿态安装,记得改AP_MOUNT_ATT。
8.2 气压计:DPS368(驱动注册为 DPS310)
hwdef.dat 第 66 行:
BARO DPS310 I2C:0:0x76 # DPS368 挂在 I2C1,但按 DPS310 驱动注册物理器件是 DPS368,挂在 I2C1(PB6 为 I2C4_SCL?注意:I2C1 = PB8 SCL / PB9 SDA,见下)。原文档写"通过 I2C1(地址 0x76)",而 hwdef 注释说明 DPS368 与 DPS310 寄存器兼容、借用 DPS310 驱动——这是读源码时容易困惑的一处,实际探测地址就是 0x76。I2C 总线布局(第 61-70 行):
- I2C1(内部传感器:气压计):PB8 SCL / PB9 SDA
- I2C4(外部设备:罗盘等):PB6 SCL / PB7 SDA,引出到 GPS/Compass 座的 SCL/SDA 脚
8.3 罗盘
板上没有内置罗盘,但 hwdef.dat 打开了AP_COMPASS_PROBING_ENABLED 1,在 I2C4 上挂任意 ArduPilot 支持的外置罗盘模块即可自动探测。
8.4 SD 卡(SDMMC1)
microSD 卡槽走 SDMMC1(PC12 CK、PD2 CMD、PC8-PC11 D0-D3),用途:Blackbox 日志、参数备份、SD 卡烧录固件。建议 Class 10 或 UHS-1 以上卡。
8.5 状态 LED
| LED | 引脚 | GPIO 号 | 颜色/功能 |
|---|---|---|---|
| LED0 | PD8 | 90 | 蓝色(主状态) |
| LED1 | PB15 | 91 | 绿色(次状态) |
| LED2 | PB14 | 92 | 琥珀色(第三状态/DFU) |
hwdef.dat 中三个 LED 全部映射进 AP_Notify(AP_NOTIFY_GPIO_LED_3_ENABLED 1),因此 ArduPilot 的起停/解锁/故障指示灯语义可以直接驱动这三颗 LED。
九、ESC 遥测(UART3 / SERIAL5)
ESC 遥测走 USART3,仅接收,接 ESC 座的 T 脚:
# USART3: ESC telemetry (receive only) PD9 USART3_RX USART3 NODMA define DEFAULT_SERIAL5_PROTOCOL SerialProtocol_ESCTelemetry define DEFAULT_SERIAL5_BAUD 115- 默认协议:AM32 / BLHeli32 / BLHeli_S 遥测,对应
SERIAL5_PROTOCOL = 16,波特率 115200; - 可读取电机 RPM、电压、电流、温度数据;
- 注意该通道标记
NODMA,且 hwdef.dat 显式开启HAL_WITH_ESC_TELEM 1。
十、固件烧录:Board ID、DFU 模式与 SD 卡更新
10.1 板型标识
在 Tools/AP_Bootloader/board_types.txt 中可查到该板型的注册信息:
# IDs 4300-4309 reserved for AeroCogito AP_HW_AeroCogito-H7Digital 4300即ArduPilot Board ID = 4300,APJ 标识AP_HW_AeroCogito-H7Digital。该板型由 hwdef.dat 第 6 行 的APJ_BOARD_ID AP_HW_AeroCogito-H7Digital与编译系统关联;各机型发布说明(如 ArduCopter/ReleaseNotes.txt)中记录了 "AeroCogito-H7Digital support" 的加入条目。固件可从 ArduPilot 固件服务器按AeroCogito-H7Digital目标下载。
10.2 首次烧录(出厂为 BetaFlight)
出厂预装 BetaFlight。要运行 ArduPilot,需先烧录板型专属的 ArduPilot-bl.hex文件(含 bootloader + 主固件),之后更新即可用:
- 地面站
.apj文件(经 MAVLink); - 或 SD 卡
.abin文件。
烧录工具可用 BetaFlight Configurator、INAV 或 STM32CubeProgrammer。hwdef.dat 末尾明确构建了 SD 卡烧录所需的 ABIN:
# build ABIN for flash-from-bootloader support env BUILD_ABIN True10.3 进入 DFU 模式
- 断电;
- 按住 BOOT 键;
- 插入 USB(Type-C);
- DFU LED(琥珀色)点亮即进入 DFU;
- 用烧录工具写入固件。
hwdef-bl.dat 解释了 bootloader 侧的几个关键行为:
FLASH_RESERVE_START_KB 0 # bootloader 位于 flash 起始 FLASH_BOOTLOADER_LOAD_KB 128 # 主固件从 128KB 偏移加载 PB15 LED_BOOTLOADER OUTPUT HIGH # 绿色 LED 在 bootloader 下点亮 PE2 BEC_EN OUTPUT LOW # 10V BEC(VTX 供电)在 bootloader 模式下关闭 define AP_BOOTLOADER_FLASH_FROM_SD_ENABLED 1 # 支持从 SD 卡刷固件两个实用推论:进入 bootloader 后 10V VTX 供电被强制关闭(排障 VTX 无电时先想到这条);DFU 期间 SD 卡仍可用,因此可以在不接 USB 数据线的情况下用 SD 卡.abin完成刷写。
10.4 首次开机检查清单
- 设置机架类型与电机顺序;
- 执行加速度计/罗盘初始校准;
- 配置 RC 输入与 OSD;
- 将 RC 通道分配到舵机/继电器(如 RELAY2 的 VTX 电源控制)。
十一、故障排查
原文档 Troubleshooting 章节的五类问题,逐条整理如下,并补充了源码依据:
11.1 USB 无法识别板子
- 确认 Type-C 线支持数据传输(非纯充电线);
- Windows 需安装 CH34x/STM32 USB 驱动(ImpulseRC Driver Fixer)。
- 串口侧对应 OTG1(PA11/PA12),bootloader 与主固件共用同一 USB 口。
11.2 OSD 不显示
- 核对
OSD_TYPE = 5(MSP DisplayPort); - 核对
SERIAL2_PROTOCOL = 42; - 确认 VTX 的 TX/RX 交叉接线(板 T2 → VTX RX,板 R2 → VTX TX);
- 确认
RELAY2没有被切到 LOW——否则 10V BEC 关闭、VTX 直接断电(见 3.7 节与 10.3 节); - 记住:本板无模拟 OSD,模拟接收器上不会有任何画面。
11.3 GPS 不工作
- 核对
SERIAL3_PROTOCOL = 5(GPS,UART8); - 确认 GPS 模块收到 4.5V 供电(注意 USB 与电池双路供电问题);
- TX/RX 是否接反:板 R8(PE0)接 GPS 的 TX,板 T8(PE1)接 GPS 的 RX。
11.4 ESC 遥测不工作
- 核对
SERIAL5_PROTOCOL = 16; - 遥测线必须接 ESC 座的T脚(USART3_RX,仅接收);
- 确认 ESC 硬件与固件本身支持遥测输出。
11.5 电机输出不工作
- 核对
MOT_PWM_TYPE与 DShot 设置; - BLHeli 直通场景检查
SERVO_BLH_AUTO = 1; - 电机协议要与 ESC 能力匹配;
- 牢记分组约束:同一组(M1-M4 / M5-M8 / S1-S2)内所有输出必须同协议,否则整组定时器无法工作。
十二、参考资料
- 板级文档主体:libraries/AP_HAL_ChibiOS/hwdef/AeroCogito-H7Digital/README.md
- 主固件硬件定义:libraries/AP_HAL_ChibiOS/hwdef/AeroCogito-H7Digital/hwdef.dat
- Bootloader 硬件定义:libraries/AP_HAL_ChibiOS/hwdef/AeroCogito-H7Digital/hwdef-bl.dat
- 板型 ID 注册表:Tools/AP_Bootloader/board_types.txt
- 引脚图:libraries/AP_HAL_ChibiOS/hwdef/AeroCogito-H7Digital/H7-Digital_pinout.jpg
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考