ECF.EVERYTHING CAN FLY返回项目首页
ECF / DOCUMENTATION

软硬件使用指南

ECF 把飞行控制所需的主控、传感器、日志存储和基础电源集成在一块核心板上,让使用者用简单接线和底板构建自己的飞行控制器。可以先用 2.54mm 排针与面包板完成开发调试,再按机架和外设需求设计底板,并选择 Betaflight、INAV、ArduCopter 或 PX4。 本指南按接线、固件安装、接口切换和标定步骤说明具体接入方法。

设计用途与安全

ECF 面向科研、教学实验及小型娱乐项目设计,尚未完成整机实飞验证,不适用于大型货运、载人飞行或其他安全关键用途。

01 / 核心硬件

把主控、传感器和基础电源集中在核心板上,可以减少从零设计飞控电路的工作。使用者可把精力放在外围接线、机型配置和自己的控制应用上。

ECF 核心板集成处理器、传感器、日志存储与基础电源,尺寸约 51 × 21mm。全部元件在顶面,板边提供两条长边各 20 个、一个短边 5 个接口位置,另一短边放置 USB-C。长边接口采用 2.54mm 间距排针,可直插面包板并通过普通跳线进行基础验证;邮票孔用于连接自定义底板。接口按 ECF 定义,与 Pico 引脚不具备电气兼容性。

部分器件与连接作用
主控STM32H743VIH6 · TFBGA100运算、外设与控制输出
IMUICM-45686 · SPI1三轴加速度与角速度
气压计BMP581 · I²C2 · 0x46气压测量
磁力计MMC5983MA · I²C2 · 0x30三轴磁场测量
存储MKDV4GCL-ABF · SDMMC2 四位板载 SD NAND 日志
状态灯WS2812B-2020-V6 · PB7固件身份与运行状态
主时钟8MHz HSE处理器参考时钟

板边 45 个位置包括电源、地与调试信号,不等于 45 个自由 GPIO。另有两个内部 USB 数据接点,制造尺寸、网络与开窗以正式硬件设计文件为准。

主控与传感器性能

以下为器件规格与板级连接。实际主频、量程、采样率和滤波设置由所用固件决定。

主控 STM32H743VIH6:Arm Cortex-M7,最高 480MHz,2MB Flash、约 1MB RAM,支持双精度 FPU 与 DSP 指令;TFBGA100 封装。

六轴 IMU ICM-45686:三轴陀螺仪与三轴加速度计,最大量程分别为 ±4000°/s、±32g;原厂典型噪声密度分别为 3.8mdps/√Hz、70µg/√Hz。板上通过 SPI1 接入,用于角速度与加速度采集。

气压计 BMP581:压力测量范围 300~1250hPa;典型相对精度 ±6Pa(700~1100hPa、15~55°C、10kPa 步进),典型绝对精度 ±30Pa(300~1100hPa、−5~65°C);最低带宽、最高分辨率设置下压力噪声为 0.08Pa。板上通过 I²C2 接入,用于气压与相对高度估计。

磁力计 MMC5983MA:三轴磁场量程 ±8G(±0.8mT),支持 18-bit 输出,18-bit 模式分辨率为 0.0625mG/LSB;典型总 RMS 噪声 0.4mG(BW=00、25°C、VDD=3.0V)。内置 SET/RESET,板上通过 I²C2 接入,用于磁场与航向估计。

日志存储与状态指示:MKDV4GCL-ABF SD NAND 通过 SDMMC2 四位总线连接,用于日志与运行数据;WS2812B-2020-V6 RGB 灯显示启动及运行状态。

主电源 TPS62903:同步降压芯片,器件输出电流能力为 3A;板上配置为 3.3V、2.5MHz、强制 PWM,供处理器、存储与数字接口使用。

传感器电源 TPS7A2030:300mA 低噪声 LDO,由系统 3.3V 产生传感器 VDD 3.0V;传感器 VDDIO、I²C 上拉仍使用系统 3.3V。

精度、噪声和分辨率为原厂规定条件下的器件参数;整板测量表现受滤波、安装、振动、温度和磁环境影响。3.3V 对外可用电流需扣除板内负载,并按输入能力及散热条件核定。

参数资料:STM32H743VIH6、ICM-45686、BMP581、MMC5983MA、TPS62903、TPS7A2030。

供电结构

外部稳压 5V VIN 与 USB 5V VUSB 进入 TPS2117,优先选择 VIN。切换后的系统 5V 经 TPS62903 产生 VSYS 3.3V;TPS7A2030 再产生 VSEN 3.0V,为三颗传感器 VDD 供电。传感器 VDDIO、I²C 上拉及模式选择脚使用 VSYS 3.3V,各电源共地。

VIN 仅接稳压 5V,不直接接动力电池。外部信号使用 3.3V 逻辑,ADC 输入须保持在 0~3.3V。VUSB 是原始 USB 电源,不能当作切换后的系统 5V 输出。

打开硬件框图 打开完整引脚图

02 / 简易底板接入示例

简易底板用 GH1.25 连接器、排针与 PCB 走线把核心板接口引出,便于直接接入常用线束,也便于按机架调整安装孔和连接器位置。底板不进行电池降压。核心 VIN 所需稳压 5V 可由示例电源监测模块经底板送入,也可使用匹配的外部稳压电源。

简易底板正面渲染及接口布局

模块分工

  • 核心板:运算、感知、日志、基础稳压和逻辑接口。
  • 简易底板:把核心板接口引到接收机、GPS、控制输出及电源连接器。
  • 示例电源监测模块:提供 5V 输出,并把电池电压、电流转换为 ADC 可读取的模拟信号。
  • 平台外围:核心 VIN 所需 5V 可来自示例电源监测模块或匹配的 BEC;电调、电机与舵机电源按平台设计。

使用 CAN 需另加收发器,并按总线位置配置终端。核心板 CAN TX / RX 为逻辑接口,不能直接连接 CANH / CANL。此示例底板不含 CAN 收发器或 BEC。

03 / 模拟电源监测示例

供电和电池采样可以从同一个参考模块开始搭建。两路模拟信号接入核心板已有 ADC 电池监测功能,便于使用四款固件相同的接线与标定方式。

此参考模块以普通 6S LiPo、持续 60A 为设计目标,提供模拟电压、电流采样与供电。电流前端采用 0.2mΩ 四端分流器和 INA241A4,电压经 100kΩ / 10kΩ 分压,TLV9062 双跟随器调理采样信号;LMR51635YFDDCR 降压提供 5V 输出,TPS7A2033 提供模块局部 3.3V。参考电压倍率为 11,电流灵敏度为 20mV/A,参考零偏为 0。

模拟电压电流计结构渲染图

5V 输出经参考底板连接核心板 4 / VIN,电压与电流信号分别连接 15 / AI1 与 16 / AI2,并连接公共地。参考模块输出连接器 U6 的 1 / 2 为 5V,3 为 I_OUT,4 为 V_OUT,5 / 6 为 GND。接线以实际连接器定义为准,确认输出范围后再连接 ADC。INA241 REF 接地,近零电流区域需考虑输出摆幅引起的非线性,并通过实测标定。电流统计范围还需核对分流器和 5V 支路的取电位置。

6S / 60A 为模块设计目标,持续电流额定与温升、连接器和功率路径能力须按实物验证。测量换算量程不等于可持续通过的额定电流。

可选 INA238 数字监测的参考配置为:0x45、0.5mΩ、120A 换算量程。该方案与本节的 0.2mΩ 模拟模块参数不同,须分别配置。

04 / 四款固件与适配范围

同一块 ECF 核心板可选择 Betaflight、INAV、ArduCopter 或 PX4,便于使用熟悉的配置工具、比较不同固件,或在源码上继续开发。各工程包含完整源码、所需依赖、编译脚本和测试说明;刷写包提供固件与安装步骤。发布源码已经重新编译检查。

固件ECF 版本构建环境 / 入口
Betaflight2026.6.2 / r4Windows · PowerShell 7 · ARM GCC 13.3.1
GNU Make、Git Bash、Python / build.ps1
INAV9.1.0 / r5Windows · PowerShell 7 · ARM GCC 13.3.1
CMake 3.31.10、Ruby 3.3.7、Ninja、Python / build.ps1
ArduCopter4.7.2 / r4Linux / WSL x86_64 · ARM GCC 10.2.1
Python 3.12.3、GNU Make、宿主 GCC / build.sh
PX4v1.17.0 / r3Ubuntu 24.04 / WSL · ARM GCC 13.2.1
Python 3.12、CMake 3.28.3、Ninja 1.11.1 / build.sh

三颗板载传感器、SDMMC2 存储、USB、八路 PWM / 普通 DShot 与板载 RGB 灯已进行板级适配。Betaflight / INAV 补充 MMC5983MA 驱动适配,INAV 补充 BMP581 驱动;ArduPilot / PX4 使用已有驱动接入当前传感器。

适配限制

  • ArduPilot 当前提供的是 ArduCopter 构建,其他载具固件未提供。
  • INAV 当前没有双向 DShot 接收,也不解析 NMEA GPS;GPS 默认使用 UBX。
  • PX4 双向 DShot 仅支持 CH1~CH4;八路输出均支持普通 DShot。
  • Betaflight / INAV 不提供原生 INA238 / INA226 电池监测后端;PX4 当前镜像包含 INA238、不含 INA226。
  • 外设协议须按实际设备验证互通。

Betaflight、INAV、ArduPilot 保留 GPLv3,PX4 保留 BSD 3-Clause;第三方代码遵循随附许可。编译步骤、依赖版本和下载文件的完整性检查方法见对应源码包说明。

05 / 安装与首次使用

  1. 确认硬件和接线。核对处理器、传感器与引脚定义,确认 VIN 为稳压 5V。调试阶段卸除螺旋桨,避免执行器意外动作。
  2. 备份现有设备。保存参数、日志和存储文件;更换固件前确认参数兼容性,跨文件系统切换按对应固件说明操作,不直接格式化。
  3. 选择对应的 ECF 刷写包。核对版本、适用硬件和下载文件是否完整,按包内说明使用 STM32CubeProgrammer、ST-Link 或 ROM USB DFU 烧录。
  4. 核对出厂接口。确认 ADC+UART3 组合,读回电源比例和串口用途。配置器与地面站端口按系统当前枚举结果选择。
  5. 完成装机校准。确认整板朝向,完成加速度计、罗盘等原生校准;标定电压、电流,检查接收机、GPS 和输出顺序。
  6. 按目标机型配置控制。出厂为 Quad X、CH1~CH4 DShot300。INAV 需在 Outputs 页面启用输出;其他机型按对应固件重新配置混控、失控保护及控制参数。

不同固件的刷写规则

固件首次安装 / 恢复参数注意事项
Betaflight / INAV出厂 HEX,自带 0x08000000 起始地址
无独立引导程序
出厂镜像清除 Flash 参数区
SD 日志不在 Flash 擦除范围
ArduCopter出厂 HEX 含匹配引导程序
引导 0x08000000 / 应用 0x08020000
完整出厂 HEX 清除参数
匹配引导程序下用 APJ 升级可保留参数
PX4完整 2MiB 出厂 HEX
0x08000000,无独立引导程序
刷写 Flash 不清除 SD 中参数
原生恢复默认须单独执行

HEX 自带地址,按对应工具的 HEX 下载流程操作;不能把 ArduCopter APJ 当成 BIN 写入 0x08000000。需要恢复 PX4 出厂值时,先备份,再依次执行 param reset_all、param save、reboot,重启后核对配置。

跨 AFatFS / FatFS 固件切换时,备份并校验 SD 文件,按目标固件说明处理 FREESPAC.E 存储文件,保留历史日志。通用镜像不包含单台设备的传感器校准、无线绑定和个人设置。

06 / 功能复用与电源监测

15 / AI1 / PC5 与 UART8 TX / PE1 并接,16 / AI2 / PC4 与 UART8 RX / PE0 并接;25 / PD8、26 / PD9 的 UART3 与 I²C4 的 PD12、PD13 共用焊盘。23 / 24 为独立的 I²C3 外置罗盘接口。

组合15 / 1625 / 26模式值
ADC + I²C4模拟采样I²C40
ADC + UART3 · 出厂模拟采样UART31
UART8 + I²C4UART8I²C42
UART8 + UART3UART8UART33

模式参数分别是 INAV ecf_io_mode、ArduCopter BRD_ALT_CONFIG、PX4 ECF_IO_MODE。Betaflight 通过对应的资源映射预设切换,不使用上述数字模式参数。出厂值为 INAV ecf_io_mode=1、ArduCopter BRD_ALT_CONFIG=1、PX4 ECF_IO_MODE=1。

  1. 按所需组合连接外部电路,先排除同组设备同时连接。
  2. 应用对应固件 presets/shared-* 预设;接口路由与串口外设协议分别配置。
  3. 保存并正常重启,使接口路由生效。
  4. 读回模式、端口协议与采样来源,核对未选 MCU 引脚为高阻、无内部上下拉。
外部连接必须互斥。切换到 UART8 后,同组 ADC 电源采样停用;切换到 I²C4 后,同组 UART3 停用。外部信号为 3.3V,软件切换不能隔离外部电路。

可选 INA238 数字监测

参考配置为 7 位地址 0x45、0.5mΩ 分流器与 120A 换算量程,须与实际模块一致。选择模式 0 或 2 以启用 I²C4,停用 UART3。

  • ArduCopter:设置 BATT_MONITOR=21 并重启,然后应用 presets/power-ina238.parm;BATT_I2C_BUS=2 对应物理 I²C4。切回模拟设置 BATT_MONITOR=4 并重启,再应用模拟标定参数。
  • PX4:设置 SENS_EN_INA238=1 并应用对应数字监测预设,保存重启;切回模拟需关闭 INA238 驱动并恢复 ADC 参数。
  • Betaflight / INAV:共享模式可切换,但当前没有原生 INA238 / INA226 电池后端,仅启用总线无法使用该电池监测功能。

07 / 模拟参数与标定

统一参考为 11∶1 电压分压、20mV/A 电流灵敏度(50A/V)、零偏 0。以下为出厂采样参数,装机后仍须标定。

Betaflight

vbat_scale = 110
vbat_divider = 10
vbat_multiplier = 1
ibata_scale = 200
ibata_offset = 0

INAV

vbat_scale = 1100
current_meter_scale = 200
current_meter_offset = 0

ArduCopter

BATT_MONITOR = 4
BATT_VOLT_PIN = 8
BATT_CURR_PIN = 4
BATT_VOLT_MULT = 11
BATT_AMP_PERVLT = 50
BATT_AMP_OFFSET = 0

PX4

BAT1_SOURCE = 0
SENS_EN_INA238 = 0
BAT1_V_CHANNEL = 8
BAT1_I_CHANNEL = 4
BAT1_V_DIV = 11
BAT1_A_PER_V = 50
BAT_V_OFFS_CURR = 0

更换底板后的标定

  1. 确认实际分压电阻、分流器与放大器增益,预先核算最大采样电压不超过 3.3V。
  2. 使用万用表测量实际输入电压,对照地面站读数调整电压比例,并在第二个电压点复核。
  3. 记录零电流偏移,再使用已知负载与可靠电流参考进行至少两点校准。
  4. 保存、重启并重新读取;验证电流方向、累计耗电量和报警阈值。

11∶1 在理想 3.3V ADC 条件下对应 36.3V 名义满量程,实际输出摆幅、器件误差与瞬态裕量须另外考虑。该满量程不适用于核心板 VIN 耐压或电源模块额定值。

08 / 外设与控制输出

物理串口板边编号出厂用途
UART129 / 30ELRS / CRSF,双线、非反相
UART325 / 26预留串口,协议空闲
UART427 / 28AP / PX4:GPS2;BF / INAV:未分配
UART533 / 34BF / INAV:MSP;AP / PX4:MAVLink2,115200 bit/s
UART631 / 32GPS1,BF / INAV 默认 UBX;AP / PX4 自动探测
UART735 / 36串口 ESC 遥测,115200 bit/s
UART815 / 16出厂关闭,与 ADC 共享

INAV 的 ESC 遥测驱动按原生条件在启用电机输出后启动。串口 ESC 遥测与双向 DShot 使用不同信号线,须分别配置。

PX4 地面站标签为 UART1=TEL1、UART3=TEL2、UART4=TEL3、UART5=TEL4、UART6=GPS1、UART7=GPS2、UART8=RC。默认 GPS2 接收机应连接物理 UART4;标签 GPS2 所在的 UART7 已用于 ESC 遥测。

CAN、罗盘与 SPI

DroneCAN 默认节点 10、1Mbit/s。Betaflight / INAV 默认 CAN1,可切到 CAN2,一次使用一路;ArduCopter 两路使用独立驱动;PX4 两路接口属于同一节点。CAN 收发器、终端及保护按底板和总线布置配置。

I²C3(23 / 24)保留给外置罗盘。Betaflight / INAV 优先探测外置罗盘,未发现时回退板载 MMC5983MA;ArduCopter / PX4 按原生驱动探测。SPI4 默认没有激活的外部传感器;AP / PX4 可通过对应参数启用第二颗受支持的 IMU,需另行校验型号与安装旋转。

八路输出

CH1~CH8 对应 PA0、PA1、PA2、PA3、PB1、PB0、PD14、PD15。CH1~4、CH5~6、CH7~8 分别属于 TIM2、TIM3、TIM4,同组频率和协议需要兼容。出厂仅 CH1~4 分配电机功能,DShot300、Quad X;后四路未分配电机用途。电机编号与旋向应按所选固件混控核对。

09 / 版本、验证与资料

本指南对应 2026 年 10 月 28 日固件版本:Betaflight 2026.6.2 r4、INAV 9.1.0 r5、ArduCopter 4.7.2 r4、PX4 v1.17.0 r3。各版本的编译与安装方法见对应源码包说明。

已完成四款固件逐一烧录与板载传感器基础调试。已检查源码编译、日志与接口配置,以及 CH1 / 3 / 5 / 7 的 PWM400、DShot300 波形检查。详细测试结果见对应版本的测试说明。

这些测试不代表整机已具备飞行条件。装机后仍需检查外设连接、传感器校准、供电负载与失控保护。

设计资料许可

ECF 原创硬件设计资料采用 CC BY-NC-SA 4.0(署名—非商业性使用—相同方式共享),包括核心板、极简底板及模拟电压电流计的原理图、PCB、BOM 和配套设计资料。允许非商业性复制、分享和修改;分享时须保留署名与协议链接、注明修改,修改后的资料按相同或兼容协议分享。

商业使用须事先取得作者单独授权。作者另行允许为非商业用途按实际成本代购元件、打板和组装,不得计入利润或以成本价代制名义开展营利销售。

上述许可与额外授权仅适用于 ECF 原创设计资料。第三方器件资料与库遵循各自许可。Betaflight、INAV、ArduPilot 保留 GPLv3,PX4 保留 BSD 3-Clause;第三方代码遵循各自许可。

固件标识与上游项目

标识用于识别对应固件项目:Betaflight、INAV、ArduPilot、PX4。本页介绍 ECF 板级适配,不代表上游官方认证或背书。

软件入口:GitHub / albert17github / ECF

硬件入口:立创 ECF 硬件项目。原理图、PCB、BOM 与附件可在项目页查看,复刻或修改前请核对对应工程与接线说明。

下载出厂配置参考 JSON 回到项目首页