JHEMCU GF16-BMI(JHEM_JHEF405)四合一电调堆叠飞控 ArduPilot 固件适配与配置指南
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
导读
本文基于 ArduPilot 仓库中 JHEM_JHEF405 板级支持目录 的官方文档,并结合hwdef.dat/hwdef-bl.dat硬件定义源码,系统讲解 JHEMCU GF16-BMI 飞控(F405 + 13A 四合一电调堆叠)的硬件规格、引脚布局、串口与 PWM 资源分配、电池监测参数、OSD 与 LED 支持以及固件烧录流程。读完本文,你将能够独立完成该板卡的 ArduPilot 固件刷写、外设接线与关键参数配置,并理解其底层硬件定义逻辑。
JHEMCU GF16-BMI 堆叠飞控实物图
一、板卡概览与核心规格
JHEMCU GF16-BMI 是由 JHEMCU 生产的「飞控 + 13A 四合一电调」堆叠组合。该板卡在 ArduPilot 仓库中的板级名称为JHEM_JHEF405,其硬件定义位于 libraries/AP_HAL_ChibiOS/hwdef/JHEM_JHEF405/hwdef.dat,板级 ID 为AP_HW_JHEMCUGF16F405(编号 1081,见 Tools/AP_Bootloader/board_types.txt)。
飞控参数(Flight Control):
| 项目 | 规格 | | :- | :- | | 主控 MCU | STM32F405 | | 陀螺仪 / 加速度计 | BMI270(早期版本为 MPU6000,见 hwdef.dat 中的双 IMU 探测) | | OSD | AT7456E | | 气压计 | BMP280 | | 黑匣子(Black box) | 16MB 板载 Flash | | I2C | 支持(1 路 I2C1) | | BEC | 5V / 3A | | UART | UART1(RC)、UART2、UART3、UART4、UART6 | | USB | micro USB | | 尺寸 | 16 × 16mm,M3 安装孔 | | 接收机支持 | ELRS(CRSF)、TBS(CRSF)、SBUS、IBUS、DSM2、DSMX | | 其他 | 支持 WS2812 可编程 LED、蜂鸣器、板载电压/电流传感器 |
四合一电调参数(ESC):
| 项目 | 规格 | | :- | :- | | 输入电压 | 2–4S LiPo / 2–4S HV LiPo | | BEC 输出 | 无 | | 单路持续电流 | 13A × 4 | | 电调尺寸 | 24 × 25mm(含焊盘与凸出点最大尺寸) | | 安装孔 | 16 × 16mm,孔径 3mm | | 电调固件 |BLHELI_S_G_H_30_16_7.HEX| | 控制信号 | DShot600、DShot300、DShot150、Oneshot125、Multishot、PWM |
整个堆叠(飞控 + 电调)重量约 5.8g。
二、板级源码结构:hwdef 如何定义整块板卡
ArduPilot 的 ChibiOS 板卡支持通过hwdef.dat声明式描述硬件资源,构建工具Tools/ardupilotwaf/chibios.py中的chibios_hwdef.py会将其转换为底层 HAL 代码。JHEM_JHEF405 目录下包含三个关键文件:
- hwdef.dat:完整固件(含飞控应用)的硬件定义,引脚注释参考了 Betaflight 的资料(文件头注明 "thanks to betaflight for pin information");
- hwdef-bl.dat:引导加载程序(bootloader)专用的精简硬件定义,仅启用 USB(OTG1)与 USART6;
- readme.md:官方板卡使用文档(本文主体来源)。
从 hwdef.dat 可以确认以下板级关键事实:
- MCU 与时钟:
MCU STM32F4xx STM32F405xx,外部晶振OSCILLATOR_HZ 8000000(8MHz),Flash 容量 1024KB,飞控固件从 48KB 之后开始存放(FLASH_RESERVE_START_KB 48),引导加载程序占用第一个扇区; - 存储:
HAL_STORAGE_SIZE 16384(16KB 参数存储),黑匣子数据 Flash 挂载于 SPI3(SPIDEV dataflash SPI3); - OSD:AT7456E 挂载于 SPI3,
OSD_ENABLED 1且默认 OSD 类型为 MAX7456(HAL_OSD_TYPE_DEFAULT 1),同时通过ROMFS_WILDCARD libraries/AP_OSD/fonts/font*.bin打包 OSD 字体; - 气压计:同时声明了 BMP280 与 DPS310 两款 I2C 气压计(地址
I2C:0:0x76),构建时探测实际焊接的型号; - IMU:优先配置 Invensensev3(ICM42688,SPI1),并为早期版本板卡保留了 MPU6000 定义,两套定义由构建时板卡版本决定;
- 默认机架:
HAL_FRAME_TYPE_DEFAULT 12即MOTOR_FRAME_TYPE_BF_X(Betaflight X 电机顺序,见 AP_Motors_Class.h 中MOTOR_FRAME_TYPE_BF_X = 12),因此标准电调可按 Betaflight/X 习惯接线; - 无板载罗盘:
AP_COMPASS_PROBING_ENABLED 1、HAL_I2C_INTERNAL_MASK 0,固件会在 I2C 总线上自动探测所有可能的外部罗盘类型。
三、引脚布局与 UART 映射
板卡的详细引脚定义请参考下图:
JHEMCU GF16-BMI 引脚定义图
引脚图上以Rn/Tn标记串口引脚:Rn为 UARTn 的接收(RX)引脚,Tn为 UARTn 的发送(TX)引脚。官方文档给出的串口映射如下:
| 名称 | 引脚 | 功能 | | :- | :- | :- | | SERIAL0 | COMPUTER | USB | | SERIAL1 | RX1/TX1 | USART1(DMA)— RC 输入/输出 | | SERIAL2 | TX2/RX2 | USART2(仅 DMA RX)— MAVLink2 | | SERIAL3 | TX3/RX3 | USART3(仅 DMA TX)— GPS1 | | SERIAL4 | TX4/RX4 | UART4(仅 DMA TX)— VTX | | SERIAL6 | TX6/RX6 | USART6 — 用户自定义 |
对照 hwdef.dat 中的SERIAL_ORDER OTG1 USART1 USART2 USART3 UART4 EMPTY USART6可以发现:
SERIAL1(USART1)默认协议在源码中被显式设置为SerialProtocol_RCIN(define DEFAULT_SERIAL1_PROTOCOL SerialProtocol_RCIN),即上电即作为 RC 输入串口;SERIAL4(UART4)默认协议为SerialProtocol_SmartAudio,即默认对接 VTX 的 SmartAudio 音频/图传控制协议;SERIAL6(USART6)在 hwdef.dat 中被标记为NODMA(不使用 DMA),作为用户自由使用的串口;- 串口 5(USART5)在
SERIAL_ORDER中为EMPTY占位,板上没有引出。
四、RC 输入
SBUS 信号必须接入板上的专用 SBUS 引脚(而非任意 RX 引脚);其余协议(CRSF、ELRS、SBUS、IBUS、DSM2、DSMX 等)均可通过 RX1 接入。
需要特别注意的是:CRSF / ELRS / SRXL2 这类双向协议必须同时占用 TX 引脚(用于接收机遥测回传),而不仅是 RX。因此使用 ELRS(CRSF)或 TBS(CRSF)接收机时,请将接收机同时接到 RX1 与 TX1,并保持 SERIAL1 默认的 RCIN 协议配置不变。
五、OSD 支持
该板卡搭载 AT7456E OSD 芯片,ArduPilot 侧使用OSD_TYPE 1(MAX7456 驱动)即可启用。从源码看,hwdef.dat 中HAL_OSD_TYPE_DEFAULT 1与OSD_ENABLED 1已在构建期将 OSD 默认使能;在 AP_OSD.cpp 中,OSD_MAX7456 = 1对应osd_type参数取值为 1,运行期通过AP_OSD_MAX7456::probe对挂载在 SPI 总线上的 MAX7456(即 AT7456E)进行探测初始化。
使用时无需额外接线,直接在地面站中配置 OSD 元素(电压、电流、姿态、GPS 等)即可在模拟图传画面中叠加显示。
六、PWM 输出与 DShot
JHEM_JHEF405 最多支持9 路 PWM 输出,其中PWM9 默认作为串行 LED(WS2812)输出。所有输出通道均支持 DShot。
PWM 通道划分为 5 个组,依据底层定时器(Timer)资源分配:
| 组 | 通道 | 底层定时器 | | :- | :- | :- | | Group1 | PWM 1、2、5 | TIM3 | | Group2 | PWM 3、4 | TIM2 | | Group3 | PWM 6 | TIM4 | | Group4 | PWM 7、8 | TIM8 | | Group5 | PWM 9 | TIM1 |
从 hwdef.dat 的电机定义(PB0 TIM3_CH3 ... M1至PC8 TIM8_CH3 ... M8)可以验证:8 路电机输出分别复用 TIM3(M1/M2/M5)、TIM2(M3/M4)、TIM4(M6)、TIM8(M7/M8),LED 则占用 TIM1_CH2(PWM9)。
使用约束:同一组内的通道必须使用相同的输出速率;如果组内任一通道使用 DShot,则同组所有通道都必须使用 DShot。例如 PWM1、PWM2、PWM5 同属 Group1,若 M1 使用 DShot600,则 M2、M5 也必须配置为 DShot600。电调控制信号支持 DShot600 / DShot300 / DShot150 / Oneshot125 / Multishot / PWM,四合一电调默认固件为BLHELI_S_G_H_30_16_7.HEX。
对于四轴(4 电机)标准配置,电机顺序按 Betaflight/X 排列(HAL_FRAME_TYPE_DEFAULT 12),使用 PWM1–PWM4 即可。
七、电池监测
板载电压与电流传感器,官方文档给出的标准参数如下(这些参数已在固件中设为默认值,通常无需手动调整):
| 参数 | 值 | 说明 | | :- | :- | :- | | BATT_MONITOR | 4 | 使用板载电压 + 电流传感器 | | BATT_VOLT_PIN | 13 | 电压采样 ADC 引脚 | | BATT_VOLT_SCALE | 11.0 | 电压分压比例 | | BATT_CURR_PIN | 12 | 电流采样 ADC 引脚 | | BATT_CURR_SCALE | 58.8 | 电流传感器比例 |
这些默认值在硬件定义中直接固化:hwdef.dat 中定义了HAL_BATT_MONITOR_DEFAULT 4、HAL_BATT_VOLT_PIN 13、HAL_BATT_VOLT_SCALE 11.0、HAL_BATT_CURR_PIN 12、HAL_BATT_CURR_SCALE 58.8,对应 ADC1 的PC2 BATT_CURRENT_SENS与PC3 BATT_VOLTAGE_SENS引脚(引脚 12 / 13 即 STM32 的 ADC 通道编号)。另外PC0 RSSI_ADC提供了 RSSI 模拟输入(BOARD_RSSI_ANA_PIN 10)。
八、罗盘(Compass)
该板卡没有板载罗盘,但可通过 I2C 引脚外接罗盘。I2C 端口为 I2C1(SCL=PB8,SDA=PB9),固件构建时启用了外部罗盘自动探测(AP_COMPASS_PROBING_ENABLED 1),可自动识别常见的外部磁力计型号;同时HAL_COMPASS_AUTO_ROT_DEFAULT 2设定了罗盘默认安装朝向的自动旋转处理。
九、LED 与蜂鸣器
- LED 灯带:板载 WS2812 串行 LED 输出,分配了独立定时器与 DMA(即 PWM9 输出)。用户可在地面站中配置 LED 灯带功能,用于状态指示、颜色告警等。
- 状态 LED:
PC14定义为LED0(GPIO90),可用于飞控状态指示。 - 蜂鸣器:
PC13 BUZZER(GPIO80),板载蜂鸣器接口,可在 hwdef.dat 中看到HAL_BUZZER_PIN 80的定义,用于解锁/锁定、低电量等事件告警。
十、固件烧录与更新
首次烧录(DFU 模式):
- 按住板载bootloader 按钮的同时将 USB 插入电脑,板卡进入 DFU 模式;
- 使用任意 DFU 烧录工具加载
with_bl.hex固件(含引导加载程序的版本); - 烧录完成后板卡即可正常启动。
后续更新:
固件加载后,即可使用任意 ArduPilot 地面站软件(如 Mission Planner、QGroundControl 等)进行更新;后续更新应使用*.apj固件文件。
从 hwdef-bl.dat 可以看到引导加载程序的硬件定义非常精简:仅启用 USB(OTG1)与 USART6(便于在引导阶段通过串口调试/刷写),FLASH_BOOTLOADER_LOAD_KB 48指定了引导加载程序将固件放置在 Flash 48KB 偏移处,与主固件的FLASH_RESERVE_START_KB 48相对应。
十一、8 轴机架扩展
该堆叠除支持标准四轴外,还支持 8 轴机架扩展(M1–M8 全部引出,PWM 输出覆盖 8 路电机),引脚定义参考下图:
JHEMCU GF16-BMI 8 轴机架接线图
使用 8 轴配置时,需注意 PWM 分组约束(见上文「PWM 输出与 DShot」):例如 M7、M8 同属 Group4(TIM8),若 8 路均使用 DShot 则整机所有通道统一为 DShot 协议并保证组内速率一致。
总结
JHEMCU GF16-BMI(JHEM_JHEF405)是一块典型的「小尺寸堆叠式」竞速/穿越机飞控:F405 主控 + BMI270 传感器 + AT7456E OSD + 16MB 黑匣子,配合 13A 四合一电调,整体重量仅约 5.8g。在 ArduPilot 中,它的所有硬件资源均由 hwdef.dat 声明式定义,板级文档 readme.md 提供了串口映射、RC 接入、PWM 分组、电池参数与固件烧录的完整指引。实际使用时,只需按本文的 UART 映射接线、使用默认固件参数(BATT、OSD、RCIN 协议均已预置),再根据自身机架调整电机顺序与 PWM 输出速率,即可快速完成整机配置与首飞。
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考