手搓STM32H743开源飞控系列教程---(三)物唯飞控原理图讲解、硬件引脚讲解、一键适配官方固件,固件烧录

 资料汇总(AI问答知识库)

物唯AI智慧文档

 CSDN系列文章

手搓STM32H743开源飞控系列教程---(一)飞控调研与方案设计-CSDN博客

手搓STM32H743开源飞控系列教程---(二)源码下载,修改引脚定义、编译固件-CSDN博客

手搓STM32H743开源飞控系列教程---(三)物唯飞控原理图讲解、硬件引脚讲解、一键适配官方固件

手搓STM32H743开源飞控系列教程---(四) 番外~~AI问答知识库上线-CSDN博客

手搓STM32H743开源飞控系列教程---(五) 飞控IMU与罗盘方向调整-CSDN博客

立创EDA工程开源:

WFG100A飞控硬件 - 立创开源硬件平台

飞行视频(B站)

F450机架+APM固件,首飞

5寸机+BF固件,室内首飞

5寸机+BF固件,室外花飞

一、飞控介绍

        目前手搓的飞控代号叫“WFG100”,后续在编译过程中都将使用这个名称进行编译。

这个飞控采用 四层板 + LQFP100 封装 STM32H743VI 主控,板载磁罗盘、双冗余 IMU、气压计与 OSD,支持 ArduPilot / Betaflight 固件。

        

基本概况

类别详情

双冗余惯性

ICM‑42688‑P + ICM‑42605,自动健康监测与切换

高精度气压计

DPS310

10 × PWM/DShot

8 路PWM电调信号+ 2路辅助信号。

AT7456E OSD

图传画面叠加飞行参数

TF 卡 & USB‑C

黑匣子记录 / 固件 DFU / 参数调试

预留接口

CAN & I²C & SPI

支持 CAN设备、IIC设备及SPI设备的接入;扩展更多可能。

状态提示

LED、蜂鸣器

板卡规格

类别规格参数

主控芯片

STM32H743VI • Cortex‑M7 • 480 MHz • 2 MB Flash / 1 MB SRAM

供电

支持 2–6 S(6 V–36 V)电池输入;

5 V @ 3 A,10 V @ 3 A

传感器

IMU×2 (ICM‑42688‑P、ICM‑42605) • 气压计 DPS310 • 磁罗盘 IST8310

接口

UART × 8

CAN × 1

I²C × 1

SPI × 4

SDIO × 1

PWM× 10

存储

TF(≤ 32 GB) • 16 MB SPI‑Flash(可选)

板层

4‑Layer FR‑4,厚 1.6 mm,约 45 mm × 55 mm

支持固件

Ardupilot4.5~4.6、betaflight4.5~4.6

二、飞控引脚与焊盘定义

三、飞控原理图简介(已开源)

3.0 立创EDA开源工程:

WFG100A飞控硬件 - 立创开源硬件平台


3.1 主控芯片

        主控芯片采用LQFP封装的STM32H743VIT6。在BF固件中需要按下按键将BOOT0置于高电平才能进入DFU模式才能刷写固件,所以不要忘了这个复位按键。


3.2 IMU传感器

        采用双IMU传感器方案(ICM42605+ICM42688),均为SPI通讯方式,相比于IIC通讯的传感器,数据传输更快。


3.3 磁罗盘传感器

        磁罗盘传感器采用IST8310,也是飞控中非常通用的一款传感器。对于一些抗干扰要求比较高的飞控一般会采用RM3100,但是内置罗盘终究没有外置罗盘的抗干扰能力强,并且受限于该飞控板卡的尺寸大小,最终还是选用IST8310这款传感器。


3.4 气压计

气压计传感器采用DPS3100,目前也是大部分穿越机飞控所采用的气压计方案。


3.5 OSD图像叠加

OSD芯片的作用是将飞控的遥测数据(高度、速度、电量)叠加到视频画面上,这样我们在显示屏上就可以直接看到飞控的遥测数据。注意:只有模拟图传才需要使用OSD图像叠加,大疆或蜗牛的高清数字图传已自带OSD功能。

3.7 ADC信号采集引脚

        本飞控总共有6个MCU引脚作为了采集,分别是2路电池电压采集、2路电池电流采集、1路空速计采集、1路RSSI遥控器信号强度采集。其中1路RSSI遥控器信号强度采集、2路电池电流采集直接将MCU引脚引出至连接器的端子即可。

而2路电池电压采集、1路空速计算采集则需要配上相应的分压电路,如下:

        注意看ADC-VBAT1和ADC-VBAT2,设计了2处电池电压采集电路。其中ADC-VBAT1默认接了电池输入,只要电池一上电即可采集到电池电压信息;而ADC-VBAT2只是引出了焊盘,如果需要采集电压需要将焊盘焊接上。

        ADC-AIRS是空速计的接口,一般情况下多旋翼是用不上的,但是该飞控如果刷写APM的固定翼固件则可用上,作为预留先引出!

3.8 预留CAN/IIC/SIP接口

        本飞控还预留了CAN、IIC、SPI三大通讯接口,正常情况下穿越机也不需要使用该接口。但是后续如果我们用APM固件就可以接入更多的外设传感器,因为也预留引出。

CAN电路,MCU的CAN引脚引出后需要先经过CAN转换芯片,再到连接器端子,如下图所示:



3.9 TF卡

此处采用的是SDIO协议。


3.10 USB下载口

TYPEC接口也没啥好说的,注意在USB口上增加一个EDS管(USBLC6-2P6)用于防静电。


3.11穿越机常规接口

电调接口:

2路电调接口集成了供电、电流采集及8路PWM接口,X8机型也能轻松驾驭。

此外2路辅助PWM接口,通过焊盘引出。


遥控器接收机接口:

使用MCU的串口6作为遥控器的接收机接口,目前常用的遥控器主要是SBUS和CRSF协议。

其中SBUS信号是单向接收的,CRSF则可以回传遥控器接收机的状态给飞控。


模拟摄像头与模拟图传接口:

在3.5处有一个OSD图像叠加芯片,因此摄像头接口(CAMERA)的VRX引脚、模拟图传接口(VTX)的VTX引脚都和OSD图像叠加芯片相连。注意模拟图传接口(VTX)还有一根UART1_TX的信号线,这个是可以通过OSD进行无线调参。(如果不使用无线调参,则可以直接忽略UART1_TX这根线)


大疆高清图传接口:


GPS模块接口:

3.12电源设计

1)电池输入,降至5V


2)5V再降至2路3.3V,1路给MCU供电,1路给传感器供电。



3)电池电压降至10V,给图传模块供电。


4)电源保护电路

3.12LED灯带、蜂鸣器

部分飞友可能还会接上LED灯带和蜂鸣器,这2个外设直接采用底面焊盘引出,分别为A16和A10焊盘。

四、编译APM固件

前言:

接下来内容,需要结合与之前的文章来看,因为很多内容在前面的文章已经讲过了,详细内容查看以下文章的章节五

手搓STM32H743开源飞控系列教程---(二)APM和BF固件源码下载,硬件定义修改、编译固件-CSDN博客

APM所有飞控板卡硬件定义文件存放在这个文件夹下:

/ardupilot/libraries/AP_HAL_ChibiOS/hwdef

        接下来讲解一下具体的适配步骤。此处我默认大家已经完成了WLS的安装、git环境的配置以及ardupilot源码的下载。

4.1 切换分支

        源码下载完成后,首先要做的就是切换一个稳定明确的分支,因为源码默认下载的源码是在master版本,这个版本一般是最新的开发版本,定义配置等内容都是比较混乱,没有正式发版。通常我会使用明确发版的版本。截止到2025年7月22日,APM多旋翼固件的稳定版本是4.6.2,执行以下命令切换分支:

git checkout Copter-4.6.2      # 切换到4.6.2分支

git branch                     # 确认分支切换成功

        注意:每次切换分支以后,尽可能都更新一下子模块以及编译环境,因为这里面的 很多工具链版本可能与分支是有对应关系的,分别执行以下2条命令:

git submodule update --init --recursive

Tools/environment_install/install-prereqs-ubuntu.sh -y

4.2 新建文件夹并命名

        我们在源码文件ardupilot/libraries/AP_HAL_ChibiOS/hwdef这个文件夹下,首先新增一个“WFG100”文件夹。

4.3 放入两个.dat文件

        在“WFG100”这个文件夹中,将我们我们写好的2个.dat格式的硬件定义文件拷贝进去,它们分别是详细的硬件定义文件及bootloader定义文件。

这两个文件已放在交流群中,需要可直接下载,解压后使用。

4.4 执行waf配置

完成上述步骤后,接下来即可执行代码编译工程,首先我们要先执行了一次配置命令,确保./waf配置成功。

输入以下命令:

./waf configure

4.5 关联bootloader

关联bootloader,执行以下命令,在命令的最后是飞控板卡的名称,也就是之前创建文件夹的名字,我的飞控叫WFG100.

输入以下命令,回车执行。

python3 Tools/scripts/build_bootloaders.py WFG100

执行成功后,界面如下:

4.6 配置板子型号

有了bootloader后,我们就可以选择需要编译的板子了。此处我编译板子类型为WFG100(大家如果复刻请按需更改名字即可),输入以下命令,回车执行。

./waf configure --board WFG100

执行成功的界面,如下图所示:

4.7 执行编译、生成固件

./waf copter

等待编译执行,默认是编译1200多个文件,待编译完成后会显示固件的存放位置。

打开固件的生成目录,会发现以下2种类型的固件文件,具体区别详见章节七固件烧录说明

至此,APM固件的编译以及固件生成就结束了!

五、编译BF固件

前言:

        BF固件编译大体流程与APM固件一致,详细编译说明参考之前的文章的章节五,

手搓STM32H743开源飞控系列教程---(二)APM和BF固件源码下载,硬件定义修改、编译固件-CSDN博客

BF固件的硬件配置文件在/betaflight/src/config/configs目录下,如下图所示:


        接下来讲解一下BF固件的具体的适配步骤。此处我默认大家已经完成了WLS的安装、git环境的配置以及betaflight源码的下载。

5.1切换分支

        源码下载完成后,首先要做的就是切换一个稳定明确的分支,因为源码默认下载的源码是在master版本,这个版本一般是最新的开发版本,定义配置等内容都是比较混乱,没有正式发版。通常我会使用明确发版的版本。截止到2025年7月22日,BF固件的稳定版本是4.5.2,执行以下命令切换分支:

git checkout 4.5-maintenance   # 切换到4.5.2分支

git branch                     # 确认分支切换成功

        注意:每次切换分支以后,都必须重新安装一下编译工具链,执行以下命令

sudo apt update
sudo apt-get upgrade -y

make arm_sdk_install   #更新编译工具链

5.2 新建文件夹并命名

        我们在源码文件/betaflight/src/config/configs这个文件夹下,首先新增一个“WFG100”文件夹。

5.3 放入config.h文件

         在“WFG100”这个文件夹中,将我们写好的config.h格式的硬件定义文件拷贝进去。

这个文件已放在交流群中,需要可直接下载,解压后使用。

5.4 执行编译指令,生成固件

执行编译命令make, 我们的板卡叫WFG100,因此输入以下指令

make WFG100

编译完成后,固件生成在此目录下。

然后我们使用BF地面站即可进行烧录,详见章节七。

六、物唯编译补丁包使用

        此外,我们还撰写了一个编译脚本的用来生成APM固件、BF固件的硬件配置文件(仅针对WFG100飞控),其原理就是通过脚本,把相关的硬件配置文件通过补丁的方式打到APM或BF工程的源码上,只要你会基本的操作,那么这个肯定也不在话下,github链接如下:

GitHub上 - WWKJ-FX/WFG100-Patch

七、固件烧录说明

7.1 烧录BF固件

BF固件的烧录比较简单,使用Betaflight Configurator地面站进行固件烧录

Betaflight Configurator地面站下载链接:https://github.com/betaflight/betaflight-configurator/releases/download/10.10.0/betaflight-configurator_10.10.0_win64-installer.exe

1)按BOOT0按键,接入USB线上电。

2)打开Betaflight Configurator地面站,确认已进入DFU模式

3)点击右下角“从本地电脑加载固件”,选择需要烧录的固件。

4)确认固件加载完成,并烧录固件。

5)等待固件的擦除与烧录

6)烧录固件完成。

烧录完成后会自动推出DFU模式,此时我们可以连接飞控,进行飞控参数的配置。

7.2 烧录APM固件(通过STM32的烧录工具)

        APM固件的烧录则稍微多了一个步骤,需要先对MCU完成Bootloader的烧录。因此如果我们的飞控板之前烧录过BF固件,由于此时MCU中没有APM固件的bootloader,因此用户无法通过Missionplanner地面站进行APM固件的烧录。

Missionplanner地面站下载链接:

https://firmware.ardupilot.org/Tools/MissionPlanner/MissionPlanner-1.3.82.msi

        第一次烧录APM固件,需要使用STM32CubeProgrammer,将APM的bootloader和用户程序一同烧录到MCU后,后续才能使用Missionplanner地面站进行固件更新,方法如下:

1)按BOOT0按键,接入USB线上电

2)打开STM32CubeProgrammer,进行连接。

3)连接成功后的界面如下图所示:

4)选择本地电脑的APM固件,注意选择固件的格式。

5)确认固件加载完毕,执行烧录

6)烧录完成提示

7)通过Missionplanner地面站连接飞控,即可看到数据正在刷新。

7.3 烧录APM固件(通过Missionplanner地面站)

        通过章节6.2的方法完成APM固件烧录后(其实就是确保bootloader烧录到了MCU中),当MCU上已成功烧录bootloader后,用户后续便可通过Missionplanner地面站,进行固件更新。需要注意的是,使用Missionplanner更新固件需要选择的固件格式为“.APJ”。烧录方法如下:

1)通过USB线给飞控板供电。(注意无需按下按键)

2)选择串口号与波特率(115200),注意不要点击连接!

3)初始设置->安装固件->Load custom firmware。注意不要点击连接!

4)根据提示执行动作

5)等到固件烧录完成,烧录完成后会提示Upload Done

<think>好的,用户之前问过关于GY-MS5803-14BA压力传感器和Holybro Kakute F722飞塔的接口兼容性问题,现在他们接着问这个飞塔能不能二次开发,二次开发的形式以及是否可以自主编程。我需要先确定用户的需求是什么。可能用户是一个无人机爱好者或者开发者,他们想要定制飞控的功能,或者添加新的传感器,或者修改控制算法之类的。 首先,我需要明确Holybro Kakute F722飞塔的硬件配置。它使用STM32F722微控制器,这个芯片基于ARM Cortex-M7内核,主频216MHz,性能不错。通常飞塔主要用于无人机飞控,但二次开发的可能性要看硬件接口和软件支持。 接下来,二次开发的形式。通常来说,二次开发可能包括修改飞控固件(比如Betaflight、INAV或ArduPilot),或者编写自己的应用程序。Kakute F722是否支持这些呢?Betaflight和INAV是开源的,用户可以通过修改代码来添加功能。而ArduPilot同样开源,支持更复杂的自动驾驶功能。所以用户可能需要了解如何获取源代码,编译和烧录固件。 然后,自主编程的问题。用户可能想知道是否可以在飞塔上运行自己编写的代码,而不仅仅是使用现有的飞控固件。这涉及到是否有足够的文档、开发工具链的支持,以及硬件是否开放足够的接口。STM32系列通常有良好的生态系统,使用STM32CubeIDE或者Keil MDK进行开发,所以理论上是可以的。但需要确认Holybro是否提供了足够的硬件资料,比如原理图引脚定义等。 另外,需要考虑飞塔的硬件资源是否足够。比如,是否有足够的GPIO、串口、I2C、SPI接口供用户扩展,是否有足够的Flash和RAM存储用户程序。STM32F722有512KB Flash和256KB RAM,对于大多数应用来说应该足够。 用户可能还关心二次开发的具体步骤,比如如何搭建开发环境,如何调试,是否有示例代码。这些需要查阅Holybro的文档,或者社区资源。如果Holybro提供了BSP(板级支持包),那会更容易。否则,用户可能需要自己配置外设驱动。 还要注意,飞塔原本设计用于飞控,二次开发可能需要绕过原有的飞控固件,直接在硬件上编程,或者修改现有固件。如果是后者,用户需要熟悉飞控固件的架构,比如Betaflight的代码结构,如何添加新的传感器或修改控制算法。 另外,安全性也是一个问题。自主编程如果出错,可能会导致无人机失控,所以用户需要谨慎测试。是否有恢复机制,比如DFU模式来重新刷写固件,这也是需要考虑的。 总结一下,用户需要了解Kakute F722的二次开发能力,包括硬件和软件层面的支持,开发工具和资源是否可用,以及具体的开发流程和注意事项。回答时需要分点说明二次开发的形式,可能用到的工具,自主编程的方法,以及需要注意的问题,同时提供实际操作的步骤或示例,帮助用户开始他们的项目。</think>--- ### **Holybro Kakute F722 飞塔的二次开发能力与形式** **Holybro Kakute F722 飞塔支持二次开发**,其核心基于 STM32F722 高性能微控制器(ARM Cortex-M7,216MHz),具备丰富的硬件资源和开放的软件生态。以下是具体分析: --- ### **1. 二次开发的定义** **二次开发**指在原有硬件平台上,通过修改或扩展固件功能,实现定制化需求(如新增传感器支持、优化控制算法、开发特定应用等)。其核心是**利用硬件接口和软件工具链,编写或修改代码以适配用户需求**。 --- ### **2. 二次开发的形式** #### **(1) 基于飞控固件的修改** - **支持固件**:Betaflight、INAV、ArduPilot 等开源飞控系统。 - **开发方式**: - **修改现有功能**:例如调整 PID 参数、添加自定义飞行模式。 - **扩展硬件支持**:例如集成新型传感器(如光流、TOF 雷达)或通信模块(如 LoRa)。 - **工具链**: - 使用 Git 克隆固件仓(如 [Betaflight GitHub](https://github.com/betaflight/betaflight))。 - 通过 PlatformIO 或 Makefile 编译固件,并刷写到飞塔。 #### **(2) 自主编程(裸机开发)** - **直接控制硬件**:绕过飞控固件,直接通过 STM32 HAL 或寄存器操作开发底层驱动。 - **适用场景**: - 开发独立于飞控的专用功能(如数据采集、自定义通信协议)。 - 科研实验或工业定制需求。 - **工具链**: - STM32CubeIDE(官方集成开发环境)。 - Keil MDK 或 IAR Embedded Workbench(需授权)。 --- ### **3. 二次开发的关键条件** #### **(1) 硬件资源** - **STM32F722 配置**: - 512KB Flash,256KB RAM。 - 丰富外设:8×UART、3×I²C、4×SPI、12×PWM 输出。 - **扩展接口**: - 预留的 GPIO、UART、I²C 接口可用于连接外部设备(如传感器、显示屏)。 #### **(2) 软件支持** - **官方文档**:需查阅 Kakute F722 的引脚定义和原理图(Holybro 官网提供)。 - **开发**: - STM32CubeF7 HAL (提供外设驱动)。 - 飞控固件的 API(如 Betaflight 的传感器驱动框架)。 --- ### **4. 自主编程操作步骤示例** 以 **STM32CubeIDE** 开发环境为例: 1. **创建工程**: -STM32CubeIDE 中选择 STM32F722VET6 芯片。 - 配置时钟树(默认 216MHz)、外设(如启用 UART、I²C)。 2. **编写代码**: ```c // 示例:通过 UART 发送数据 #include "main.h" UART_HandleTypeDef huart1; int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART1_UART_Init(); char msg[] = "Hello Kakute F722!\r\n"; while (1) { HAL_UART_Transmit(&huart1, (uint8_t*)msg, strlen(msg), 100); HAL_Delay(1000); } } ``` 3. **烧录与调试**: - 通过 USB 或 ST-LINK 调试器连接飞塔。 - 编译并下载程序,使用串口助查看输出。 --- ### **5. 注意事项** - **硬件限制**:飞塔设计为无人机飞控,部分外设可能已被飞控固件占用(如 PWM 输出),需避免冲突。 - **固件兼容性**:若需同时运行飞控和自定义代码,建议使用 ArduPilot 的“ChibiOS”线程管理功能。 - **调试工具**:建议使用 ST-LINK 或 J-Link 进行实时调试。 - **社区资源**:Holybro 论坛、Betaflight GitHub Issues 是解决问题的关键渠道。 --- ### **结论** **Holybro Kakute F722 完全支持二次开发和自主编程**!开发者可通过以下方式实现: 1. **修改开源飞控固件**:适合无人机功能扩展。 2. **裸机编程**:适合深度定制或非飞控应用(需熟悉 STM32 开发)。 3. **混合开发**:在飞控固件中嵌入自定义驱动或算法。 建议从官方文档和示例代码入,逐步验证功能,确保硬件安全后再进行复杂开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值