BetaFlight飞控AOCODAF435V2MPU6500固件编译

BetaFlight飞控AOCODAF435V2MPU6500固件编译

  • 1. 源由
  • 2. 准备
    • 2.1 板子
    • 2.2 代码
    • 2.3 工具
  • 3. 配置修改
  • 4. 编译
    • 4.1 获取代码
    • 4.2 获取配置
    • 4.3 编译固件
    • 4.4 DFU烧录
    • 4.5 版本核对
  • 5. 总结
  • 6. 跟踪问题

1. 源由

刚拿到一块Aocoda F405V2 (MPU6500) + AT32F435飞控板(替换主控芯片)。

  • Aocoda-RC F405V2 FC(STM32F405RGT6 v.s. AT32F435RGT7) IO Definitions
  • STM32F405RGT6 v.s. AT32F435RGT7 Comparison for Flight Controller

准备尝鲜使用github最新betaflight代码,应该是4.5的了。

2. 准备

2.1 板子

默认已经烧录了atbetaflight固件 v4.3.2,硬件IMU/Baro/MAX7456都已经找到。
在这里插入图片描述

2.2 代码

本次代码版本,详见下面git log -n 1

betaflight 最新代码

commit eee0cb54677aaf4daae28fd7068460abbffa53c8 (HEAD -> master, origin/master, origin/HEAD)
Author: Steve Evans <SteveCEvans@users.noreply.github.com>
Date:   Sat Oct 21 23:40:46 2023 +0100Fix buffer overflow in JETIEXBUS character reception (#13130)* Fix buffer overflow in jetiexbus character reception* Update src/main/rx/jetiexbus.cCo-authored-by: Mark Haslinghuis <mark@numloq.nl>---------Co-authored-by: Mark Haslinghuis <mark@numloq.nl>

config 最新配置

commit 6fa050144d5e6bccf0f50ac67d014491ddb10a71 (HEAD -> master, origin/master, origin/HEAD)
Author: Steve Evans <SteveCEvans@users.noreply.github.com>
Date:   Thu Oct 19 19:17:18 2023 +0100Add ICM42688P to SKYSTARSF405 (#193)

2.3 工具

Betaflight Configurator需要升级到10.10版本或者之后。

注:之前的版本无法识别AT32芯片。

Root cause:Artery AT32F435/7 DFU and VCP support #3259

在这里插入图片描述
注:首先要确保AT32 DFU驱动正确识别硬件。上图是10.9版本,DFU识别芯片,但是配置工具枚举失败。

3. 配置修改

鉴于该板子整体采用了简单替换。根据之前的一些经验,基于AOCODAF405V2MPU6500修改,新增目标AOCODAF435V2MPU6500。

  • Betaflight飞控之4.5版本配置文件调整
  • BetaFlight统一硬件AOCODARC H7DUAL配置文件讨论
  • BetaFlight统一硬件资源简单配置修改

注:以下配置只是现抄版本,确保固件编译正常。可能存在部分IO功能异常问题,需要后续试飞调试确认。

/** This file is part of Betaflight.** Betaflight is free software. You can redistribute this software* and/or modify this software under the terms of the GNU General* Public License as published by the Free Software Foundation,* either version 3 of the License, or (at your option) any later* version.** Betaflight is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.** See the GNU General Public License for more details.** You should have received a copy of the GNU General Public* License along with this software.** If not, see <http://www.gnu.org/licenses/>.*/#pragma once#define FC_TARGET_MCU     AT32F435G#define BOARD_NAME        AOCODAF435V2MPU6500
#define MANUFACTURER_ID   SJET#define USE_GYRO
#define USE_GYRO_SPI_MPU6500
#define USE_ACC
#define USE_ACC_SPI_MPU6500
#define USE_BARO_BMP280
#define USE_BARO_DPS310
#define USE_FLASH
#define USE_FLASH_W25Q128FV
#define USE_MAX7456#define BEEPER_PIN           PB8
#define MOTOR1_PIN           PC6
#define MOTOR2_PIN           PC7
#define MOTOR3_PIN           PC8
#define MOTOR4_PIN           PC9
#define MOTOR5_PIN           PA15
#define MOTOR6_PIN           PA8
#define MOTOR7_PIN           PB10
#define MOTOR8_PIN           PB11
#define RX_PPM_PIN           PA3
#define LED_STRIP_PIN        PB1
#define UART1_TX_PIN         PA9
#define UART2_TX_PIN         PA2
#define UART3_TX_PIN         PC10
#define UART4_TX_PIN         PA0
#define UART5_TX_PIN         PC12
#define UART1_RX_PIN         PA10
#define UART2_RX_PIN         PA3
#define UART3_RX_PIN         PC11
#define UART4_RX_PIN         PA1
#define UART5_RX_PIN         PD2
#define I2C1_SCL_PIN         PB6
#define I2C1_SDA_PIN         PB7
#define LED0_PIN             PC13
#define SPI1_SCK_PIN         PA5
#define SPI2_SCK_PIN         PB13
#define SPI3_SCK_PIN         PB3
#define SPI1_SDI_PIN         PA6
#define SPI2_SDI_PIN         PB14
#define SPI3_SDI_PIN         PB4
#define SPI1_SDO_PIN         PA7
#define SPI2_SDO_PIN         PB15
#define SPI3_SDO_PIN         PB5
#define ESCSERIAL_PIN        PC11
#define ADC_VBAT_PIN         PC2
#define ADC_RSSI_PIN         PC3
#define ADC_CURR_PIN         PC1
#define FLASH_CS_PIN         PC0
#define MAX7456_SPI_CS_PIN   PA13
#define GYRO_1_EXTI_PIN      PC4
#define GYRO_1_CS_PIN        PA4
#define USB_DETECT_PIN       PB12#define TIMER_PIN_MAPPING \TIMER_PIN_MAP( 0, RX_PPM_PIN    , 2,  0) \TIMER_PIN_MAP( 1, MOTOR1_PIN    , 2,  1) \TIMER_PIN_MAP( 2, MOTOR2_PIN    , 2,  1) \TIMER_PIN_MAP( 3, MOTOR3_PIN    , 2,  1) \TIMER_PIN_MAP( 4, MOTOR4_PIN    , 2,  0) \TIMER_PIN_MAP( 5, MOTOR5_PIN    , 1,  0) \TIMER_PIN_MAP( 6, MOTOR6_PIN    , 1,  1) \TIMER_PIN_MAP( 7, MOTOR7_PIN    , 1,  0) \TIMER_PIN_MAP( 8, MOTOR8_PIN    , 1,  0) \TIMER_PIN_MAP( 9, LED_STRIP_PIN , 2,  0)#define ADC_INSTANCE ADC3
#define ADC3_DMA_OPT        1#define MAG_I2C_INSTANCE (I2CDEV_1)
#define USE_BARO
#define BARO_I2C_INSTANCE (I2CDEV_1)
#define DEFAULT_BLACKBOX_DEVICE     BLACKBOX_DEVICE_FLASH
#define DEFAULT_DSHOT_BURST DSHOT_DMAR_OFF
#define DEFAULT_DSHOT_BITBANG DSHOT_BITBANG_OFF
#define DEFAULT_CURRENT_METER_SOURCE CURRENT_METER_ADC
#define DEFAULT_VOLTAGE_METER_SOURCE VOLTAGE_METER_ADC
#define DEFAULT_CURRENT_METER_SCALE 500
#define BEEPER_INVERTED
#define SYSTEM_HSE_MHZ 8
#define MAX7456_SPI_INSTANCE SPI2
#define FLASH_SPI_INSTANCE SPI3
#define USE_SPI_GYRO
#define GYRO_1_SPI_INSTANCE SPI1

4. 编译

4.1 获取代码

$ git clone git@github.com:betaflight/betaflight.git
$ cd betaflight

4.2 获取配置

$ cd src/
$ git clone git@github.com:betaflight/config.git
$ cd ..

4.3 编译固件

$ make AOCODAF435V2MPU6500
$ ls obj
betaflight_4.5.0_AT32F435G_AOCODAF435V2MPU6500.hex

4.4 DFU烧录

按住Reset按钮,通过USB给飞控上电,进入DFU模式。

在这里插入图片描述

4.5 版本核对

在这里插入图片描述

5. 总结

  1. betaflight固件版本、飞控配置 ==》 基本正常
  2. Gyro/Acc/Baro以及传感数据 ==》基本正常
  3. Gyro校准,Pitch/Roll/Yaw ==》基本正常
  4. OSD MAX7456 芯片 SPI未发现 ==》异常 //atbetaflight正常
  5. 芯片内部温度:Vref=0. 0V, Core temp=-281degC ==》异常 //atbetaflight正常
  6. 怀疑存在问题:电机页面提示需要4个电机配置 ==》异常 //待确认TIMER_PIN_MAP

在这里插入图片描述
在这里插入图片描述

6. 跟踪问题

【1】 AT32F435 internal reference voltage issue “Vref=0. 0V” #13133
【2】 AT32F435 OSD_CS resouce allocate issue #13134
【3】How was the fourth parameter determined in TIMER_PIN_MAP? #13135
【4】 VCP hangs on AT32 while getting dma list of valid resource #13138

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/168416.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css伪类元素使用技巧 表达input父级聚焦css实现

:focus-within 可以让它自己被聚焦或者它的后代元素被聚焦input 中有required 加星号在这里插入图片描述

Rust 中的String与所有权机制

文章目录 一、string二、所有权2.1 所有权与作用域2.2 对所有权的操作2.2.1 转移2.2.3 拷贝2.2.3 传递 2.3 引用2.3.1 借用2.3.2 可变引用 一、string 之前学习过 Rust 只有几种基础的数据类型&#xff0c;但是没有常用的字符串也就是String&#xff0c;今天来学习一下 String…

Qt中QFile、QByteArray QDataStream和QTextStream区别及示例

在Qt中&#xff0c;QFile、QByteArray、QDataStream和QTextStream是常用的文件和数据处理类。 主要功能和区别 QFile&#xff1a; QFile是用于读写文本和二进制文件以及资源的I/O设备。可以单独使用QFile&#xff0c;或者更方便地与QTextStream或QDataStream一起使用。 通常在…

紫光同创FPGA实现PCIE测速试验,提供PDS工程和Linux QT上位机源码和技术支持

目录 1、前言免责声明 2、我已有的PCIE方案3、设计思路框架PCIE硬件设计PCIE IP核添加和配置驱动文件和驱动安装QT上位机和源码 4、PDS工程详解5、上板调试验证并演示6、福利&#xff1a;工程代码的获取 紫光同创FPGA实现PCIE测速试验&#xff0c;提供PDS工程和Linux QT上位机源…

机器学习(新手入门)-线性回归 #房价预测

题目&#xff1a;给定数据集dataSet&#xff0c;每一行代表一组数据记录,每组数据记录中&#xff0c;第一个值为房屋面积&#xff08;单位&#xff1a;平方英尺&#xff09;&#xff0c;第二个值为房屋中的房间数&#xff0c;第三个值为房价&#xff08;单位&#xff1a;千美元…

笔记39:在Pycharm中为项目添加新解释器

很久不用pycharm都生疏了 a a a 第一步&#xff1a;创建虚拟环境 略 a a a 第二步&#xff1a;将虚拟环境应用到项目中去 【File】----【Settings】----【Project:~~~】-----【Project Interpreter】----【选择合适的解释器】 ​​​​​​​ 因为我们要用新的解释…

浅析 C# Console 控制台为什么也会卡死

一&#xff1a;背景 1. 讲故事 在分析旅程中&#xff0c;总会有几例控制台的意外卡死导致的生产事故&#xff0c;有经验的朋友都知道&#xff0c;控制台卡死一般是动了 快速编辑窗口 的缘故&#xff0c;截图如下&#xff1a; 虽然知道缘由&#xff0c;但一直没有时间探究底层…

SpringBoot2.x简单集成Flowable

环境和版本 window10 java1.8 mysql8 flowable6 springboot 2.7.6 配置 使用IDEA创建一个SpringBoot项目 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.…

网络协议--IP选路

9.1 引言 选路是IP最重要的功能之一。图9-1是IP层处理过程的简单流程。需要进行选路的数据报可以由本地主机产生&#xff0c;也可以由其他主机产生。在后一种情况下&#xff0c;主机必须配置成一个路由器&#xff0c;否则通过网络接口接收到的数据报&#xff0c;如果目的地址不…

原型与原型链

一、原型&#xff1a;prototype 1.什么是原型&#xff1f; javascript常被描述为一种基于原型的语言&#xff08;每个对象都拥有一个原型对象&#xff09; 当访问一个对象的属性时&#xff0c;它不仅在该对象上寻找&#xff0c;还会寻找该对象的原型&#xff0c;以及该对象原…

Git学习笔记——超详细

Git笔记 安装git&#xff1a; apt install git 创建版本库&#xff1a; git init 添加文件到版本库&#xff1a; git add 文件 提交文件到仓库&#xff1a; git commit -m “注释” 查看仓库当前的状态信息&#xff1a; git status 查看修改内容和之前版本的区别&am…

阿里云服务器x86计算架构ECS实例规格汇总

阿里云企业级服务器基于X86架构的实例规格&#xff0c;每一个vCPU都对应一个处理器核心的超线程&#xff0c;基于ARM架构的实例规格&#xff0c;每一个vCPU都对应一个处理器的物理核心&#xff0c;具有性能稳定且资源独享的特点。阿里云服务器网aliyunfuwuqi.com分享阿里云企业…

STM32 HAL高级定时器正交编码模式案例

STM32 HAL高级定时器正交编码模式案例 &#x1f516;基于stm32F030RBT6单片机采用高级定时器1&#xff0c;编码器模式&#xff0c;测试EC11编码器。 &#x1f3ac;EC11测试效果&#xff1a; &#x1f33f;STM32定时器编码器有3种映射模式: ✨本次采用的是上面的模式3&#x…

【网络】HTTPS讲解(侧重于加密、秘钥、证书的讲解)

HTTPS讲解 前言正式开始安全HTTP和HTTPS的关系什么是加密和解密为什么要加密运营商劫持中间人 常⻅的加密⽅式对称加密⾮对称加密 数据摘要数字签名HTTPS 的⼯作过程⽅案 1 - 只使⽤对称加密&#xff08;不可靠&#xff09;⽅案 2 - 只使⽤⾮对称加密&#xff08;不可靠&#x…

Node编写用户登录接口

目录 前言 服务器 编写登录接口API 使用sql语句查询数据库中是否有该用户 判断密码是否正确 生成JWT的Token字符串 配置解析token的中间件 配置捕获错误中间件 完整的登录接口代码 前言 本文介绍如何使用node编写登录接口以及解密生成token&#xff0c;如何编写注册接…

【Qt】消息机制和事件

文章目录 事件event()事件过滤器案例&#xff1a;检测鼠标事件案例&#xff1a;定时器 事件 事件&#xff08;event&#xff09;是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘&#xff0c;或者是窗口需要重新绘制的时候&#xff0c;都会发出一个相应的事…

Docker Swarm 集群搭建

Docker Swarm Mode Docker Swarm 集群搭建 Docker Swarm 节点维护 Docker Service 创建 1.准备主机 搭建一个 docker swarm 集群&#xff0c;包含 5 个 swarm 节点。这 5 个 swarm 节点的 IP 与暂 时的角色分配如下&#xff08;注意&#xff0c;搭建完成后会切换角色&#xff…

Linux绝对路径和相对路径

在 Linux 中&#xff0c;简单的理解一个文件的路径&#xff0c;指的就是该文件存放的位置。 只要我们告诉 Linux 系统某个文件存放的准确位置&#xff0c;那么它就可以找到这个文件。指明一个文件存放的位置&#xff0c;有 2 种方法&#xff0c;分别是使用绝对路径和相对路径。…

​​​​​​​Python---练习:打印直角三角形(利用wihle循环嵌套)

案例&#xff1a; 打印直角三角形&#xff0c;特征&#xff1a;一共有5行&#xff0c;第1行&#xff0c;有1列。第2行&#xff0c;有2列&#xff0c;第3&#xff0c;有3列。 思考&#xff1a; pycharm里面&#xff0c;输出三角形&#xff0c;因为本来控制台就是长方形&#…

Python桌面应用之XX学院水卡报表查询系统(Tkinter+cx_Oracle)

一、功能样式 Python桌面应用之XX学院水卡报表查询系统功能&#xff1a; 连接Oracle数据库&#xff0c;查询XX学院水卡操作总明细报表&#xff0c;汇总数据报表&#xff0c;个人明细报表&#xff0c;进行预览并且支持导出报表 1.总明细报表样式 2.汇总明细样式 3.个人明细…