BF固件硬件配置文件分析
1、前言
玩过单片机开发的电子爱好者们应该都知道,在完成硬件设计后,还需要进将固件烧录到MCU芯片上的,整个软硬件系统结合起来才能正常工作,飞控系统也不例外,在完成WFG100飞控的设计后,我们还需要基于官方代码修改硬件配置相关的文件,这样官方的代码的即可适配我们自定义的 飞控硬件,其流程整体如下:

上述流程步骤说难不难,但还是有一些基本的操作门槛。比如需要懂一些Linux的基本操作指令、Vscode编译器使用基础、以及有一台Linux系统的电脑(或者在Windows电脑上装有WLS子系统)。如果不会做源码的修改的话,那么就只能下载别人编译的好的固件,或者在设计原理图的时候,芯片的引脚定义需要设计成和官方某个开源板子的引脚一致,然后使用它的固件。 当然这样的话,就是设计自主性上差了点意思,不能随心所欲的设计,无法做到运放自如!
2、BF源码地址
BF固件的源码地址:

https://github.com/ArduPilot/ardupilot
3、如何选择飞控硬件的核心传感器?
玩无人机的朋友应该都清楚,其实飞控的核心硬件系统是非常简单的,就是一个主控MCU(一一般情况下通常是STM32单片机)+IMU(惯性测量单元)+气压计+磁盘罗盘组成。那么我们在自己设计硬件画原理图的时候,不禁会问一个问题:我到底要怎么样选择飞控IMU、气压计以及磁罗盘的型号? 有三种方法:
1)参考市面上售卖的成品飞控,研究他们的传感器选型。
因为商家选型肯定考虑了兼容性、性价比、开源支持性等等。
2)查看APM支持的传感器型号,这样就不需要重写底层驱动代码,仅改宏定义配置文件即可。
如何查看APM固件支持的全部传感器型号,请查阅本文章节4、APM固件支持传感器列表
3)针对能够玩转源码底层的嵌入高手,传感器型号随便选择,甚至纯国产化都没问题。
(此部分就暂时略过吧,因为三言两语讲不清楚,后期物唯团队会通过视频进行讲解。)
4、BF固件支持的传感器列表
在选择IMU、气压计、罗盘时,我们最好选择BF固件已支持的传感器,这样我们就不需要再专门的写传感器的底层驱动,直接通过某些简单的宏定义即可调用驱动;
Betaflight源码的传感器底层驱动都放在src/main/drivers这个文件夹下
https://github.com/betaflight/betaflight/tree/master/src/main/drivers
如下图所示:

4.1 BF固件支持的IMU型号
IMU全部驱动文件路径:betaflight/src/main/drivers/accgyro/
https://github.com/betaflight/betaflight/tree/master/src/main/drivers/accgyro
4.2 BF固件支持的罗盘型号
磁罗盘全部驱动文件路径: betaflight/src/main/drivers/compass/
https://github.com/betaflight/betaflight/tree/master/src/main/drivers/compass
4.3 APM固件支持的气压计型号
气压计全部驱动文件路径: betaflight/src/main/drivers/barometer/
https://github.com/betaflight/betaflight/tree/master/src/main/drivers/barometer
5、BF固件的硬件配置文件解读
大家有没有发现,从淘宝采购的某些大牌子的飞控硬件,只需要将数据线插入飞控地面站,地面站就可以识别飞控的板子型号,或者选择指定厂商的飞控板子就会自动匹配相应的固件。这是因为这些飞控厂商通过赞助/资助/合作的方式,与飞控的官方开发组建立了长期的迭代机制,官方代码在每次版本更新的时候,就会默认将这些飞控的硬件厂商都包含了进去,做好了适配。
如果是自己DIY手搓的飞控,那官方代码里肯定没有我们的自己画的飞控硬件相关的引脚定义配置文件,所以必须要我们下载官方源码,然后自行添加或修改引脚配置文件,再自行编译固件去适配我们自己设计的飞控硬件。
接下来就给大家讲解一下BF的硬件配置文件如何进行修改?
5.1 基本概述
BF固件支持的所有飞控硬件板卡列表如下:
https://github.com/betaflight/config/tree/6f5fb58d9a4b8f98a086f9b26ec2d616f9c8f630/configs

如上图所示,每一个文件夹都代表着一个飞控硬件的定义描述,目前物唯团队自己设计了一个飞控硬件并命名为WFG100,我们在编译源码生成固件时,首先就在/betaflight/src/config/configs这个目录层级下,创建一个“WFG100”的文件夹,然后在这个“WFG100”文件夹中编写我们的硬件描述定义。

5.2 解读微空MicoAir743的硬件定义文件
还是老样子用微空MicoAir743 V2飞控,来解读BF源码中的硬件定义。源码链接如下:
打开后可以看到硬件的定义文件也是相当简单,就是一个.h的头文件 。

5.3 如何修改BF源码的硬件配置文件?
对于新手而言,修改硬件配置文件的诀窍就是:多参考几个飞控硬件的config.h文件,照葫芦画瓢!
整体步骤就是:
1)先创建一个文件夹(这个文件夹就是你自定义飞控的名称,比如WFG100)
2)从跟你类似的成品飞控硬件定义文件中,拷贝config.h文件到刚命名的飞控文件夹下。(比如WFG100)
3)照葫芦画瓢,根据自己的实际硬件连接,修改config.h。
6、WFG100飞控的BF硬件配置文件
飞控硬件的原理图资料请查看WFG100硬件设计资料汇总
基于物唯WFG100飞控的BF硬件配置文件附件请访问以下链接进行下载:
0199a3ef-6738-7cdb-ba80-1e5530dd389a

将上述文件解压后如下:

放置在/betaflight/src/config/configs路径下,便可开展编译工作。
