inav向STM32F401CCU开发板定制的过程(一)

写在前面的入魔小记

好些年没到CSDN来记事了,疫情来的那年,呆在家里实在无聊,好在到郊外空旷无人的地方也没人管,于是买了个KT板的板机和带自稳的飞控接收机开始玩起了固定翼。随后换了FS的一代神控i6,入手了开源(山寨)的F4V3S飞控慢慢地入了魔。

之所以开始动手定制的原因:

由于记性不好,经常接错电源线,烧在手里的飞控没有十块也有七八块了吧,本来嘛,再买就是了,结果今年不知如何地,就闹起了芯片荒,卖家们都买不到STM32F405了,直接搞得连价都没涨就断货了,想来再烧个几块的,只怕就再没电装去飞场了,就动了定制到其它板上的心思。

材料:

主控STM32F401CCU开发板,某宝买的,20大洋不到。

MPU6050六轴姿态传感器模块,10元不到吧。

BMP280大气压力传感器模块,贵的10多元,也有便宜的,10元内能搞到手。

BN-880带罗盘的GPS模块(GNSS),原来有的。

TXS0108E电平转换模块(人懒,能用模块解决的,就不要用三极管解决),5元不到。

目标:能实现固定翼航模飞行的自稳控制(应该也实现多轴飞行器),能依据GPS返航就好了。

动手过程:

首先跑去github从inav分叉了一份源码仓库到自己手里:https://github.com/afilez/inav

然后切到了release_2.5.2的分叉,以此分叉出2.5.2-patch分叉来,之后的代码就在这上面改了。

之所以选择2.5.2版本,是因为我手里也只有现成的下载好交叉编译工具链的环境,后面的新版本都改用了更新的交叉编译工具链,又得经历漫长的下载过程,就不想再来一次了,而且我手里的配置工具 inav configurator也是2.5.2版的。

开始定制之前,当然要确认这个环境至少能编译出一个固件来:

make TARGET= 

可以列出当前支持的飞控板目标来,我原来用就的OMNIBUSF4,所以先试着编译了OMNIBUSF4的固件。

 make TARGET=OMNIBUSF4

一通编译链接之后,显示FLASH和内存的空间使用情况就输出hex文件了。

第一步、创建自己的target环境来,这个target就先叫做FLYESF401吧。

 cp -a src/main/target/OMNIBUSF4 src/main/target/FLYESF401

重命名main/main/FLYESF401/OMNIBUSF4V3.mk为main/main/FLYESF401/FLYESF401.mk

删掉不需要的其它mk文件了。

这时候再次make TARGET=

就看到新的target了。

当然,这仍然是F4V3S用的固件,毕竟只是复制了一个环境。

第二步、修改main/target/FLYESF401/target.mk,修改这个板子要附加的源文件,可以看到里面有不少传感器的驱动,MPU只留下自己想要的,里面并没有MPU6050的,所以要加一行:

drivers/accgyro/accgyro_mpu6050.c \

其它的,明显不需要的罗盘驱动就删了,不需要的除BMP280以外的气压计驱动也删了,罗盘也只留BN-880可能用到的QMC5883L或HMC5883L就够了。

暂时不需要OSD支持(MAX7456要帖片焊,没有现成的开发模块),所以

drivers/max7456.c

也删掉了。

这时候可以试着编译一次,生成的HEX文件,应用的FLASH空间应该比原版的要小一些。

到这里,仍然是基于STM32F405RGT6 MCU的,由于两个芯片的封装、引脚定义、内部功能都有差异,就算编译出来,烧录到STM32F401上,也是运行不起来的。

差异表现在:

引脚定义不一样,需要针对数据手册改。

内部定时器数量不一样,也需要对应调整代码。

外接的总线数量也不一样,不过这里只用一个I2C来串接三个传感器,所以不重要。

重点:时钟晶振频率也不一样,F4V3用的是8MHz的晶振,F401用的是25MHz的晶振,按原有的初始化代码,直接超出了F401能跑的84MHz内部主频。

重点:片内FLASH容量不一样,F405有1MB的FLASH,而F401只有256K的FLASH,布局也不一样。芯片内的flash一定放不下F4V3的固件。

整个过程还有很多坑要踩,最终砍掉了所有不相关的功能:SD卡支持、OSD支持、仪表台、各种非PWM的电调协议、固定翼自动降落功能、可调节图传频道与功率等等,才勉强在256K的FLASH空间里放下了需要的功能。

之后的定制过程待续,如果只是想直接拿来用,可以直接去github下载已经定制好的源码自己编译来用了。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值