AM32-MultiRotor-ESC项目固件编译和烧录方法介绍

AM32-MultiRotor-ESC项目固件编译和烧录方法介绍


  • 📍AM32-MultiRotor-ESC项目地址:https://github.com/AlkaMotors/AM32-MultiRotor-ESC-firmware
  • 🎈Updater with V8 Bootloader: https://github.com/AlkaMotors/F051_Bootloader_Updater
  • 🔧烧录Bootloader和固件所需固件:USB转TTL串口工具(例如ch340)、或者DAPLINK/JLINK

📑项目简介

AM32-MultiRotor-ESC-firmware AM32固件原专为STM32 ARM处理器设计,用于控制无刷电机(BLDC)。该固件旨在通过平稳快速的启动和线性油门实现安全快速。它适用于多种车辆类型和飞行控制器。

📘硬件型号支持

AM32目前支持STSPIN32F0、STM32F051、STM32G071、GD32E230、AT32F415和AT32F421。由于随机问题太多,不推荐使用CKS32F051。目标兼容性列表可在此处找到(2021年4月)。

📗运行固件和Bootloader固件说明

要在空白ESC上使用AM32运行固件,必须首先使用ST-LINK、GD-LINK、CMIS-DAP或AT-LINK安装Bootloader引导加载程序。引导加载程序将取决于esc上使用的MCU。选择与ESC的MCU类型和信号输入引脚匹配的引导加载程序。

✨安装引导加载程序后,可以使用配置工具和Betaflight飞行控制器,安装主运行固件,也可以直接连接修改为单线的USB串行适配器。

  • 🔗🖇烧录流程图:
    在这里插入图片描述

  • 🌟如果手上有一个USB转TTL串口工具(例如ch340),那么恭喜你,可以实现Bootloader程序和固件烧录的全部烧录工作。

  • 👉通过Betaflight飞行控制器,可以使用网页版在线安装主运行固件页面:https://esc-configurator.com/

运行固件编译

    1. 先将项目工程git克隆下来:https://github.com/AlkaMotors/AM32-MultiRotor-ESC-firmware.git
    1. 下载并解压arm-none-eabi-gcc编译器,将对应bin目录添加到电脑的系统环境变量中。(默认使用的是10.2.0,(Version 10.3-2021.10):gcc-arm-none-eabi:https://developer.arm.com/downloads/-/gnu-rm
      AM32-MultiRotor-ESC-firmware\make\tools.mk,修改版本:10.3.1来匹配当前使用的版本。
    1. 下载并解压mingw64,将对应的bin目录添加到电脑的系统环境变量中。

在项目文件夹,直接使用make,即可进行编译。将会生成所有型号的固件。
在这里插入图片描述

在这里插入图片描述

  • 单独编译指定型号的固件:
//不知道为什么会全部的固件出来
make MCU_TYPE=F421 TARGET=AM32_4IN1
  • 可以通过查看 Makefile 文件来了解所有支持的型号。常见的型号包括:
  • AM32_4IN1
  • AM32_SINGLE
  • AM32_8IN1

📗Bootloader固件烧写

根据mcu的不同选择烧录工具有所不同,如果是通过SWD接口烧录,使用ST-LINK、GD-LINK、CMIS-DAP或AT-LINK烧录Bootloader引导加载程序。如果是通过串口烧录方式,那么所选择的上位机软件不同,需要配合USB转串口工具(例如ch340)进行烧录。

🔧SWD接口烧录

AM32-MultiRotor-ESC项目所支持的mcu都支持使用swd接口烧录,通过SWD接口通用的烧录器有dap-link和jlink.特定的烧录器ST-LINK、AT-LINK等这些烧录工具只支持对应厂商的烧录芯片烧录。

  • MCU为STM32的,例如STSPIN32F0、STM32F051、STM32G071,可以使用ST-LINK、dap-link、jlink。
  • MCU为AT32的,例如:AT32F421可以使用dap-link、jlink、AT-LINK。
🔧SWD烧录上位机软件选择
  • 🌿如果使用openocd烧录,可以直接使用命令行烧录。
  • jlink烧录:

jlink使用openocd烧录,需要将默认的jlink driver驱动更换为libusbK驱动才能使用。

//jlink烧录命令参考格式
openocd -f interface/jlink_swd.cfg -f target/stm32f4x.cfg -c "program STM32F405VG_DEMO.hex verify reset exit"
  • daplink烧录
//daplink烧录命令参考格式
openocd -f interface/cmsis-dap.cfg -f target/stm32f4x.cfg -c "program STM32F405VG_DEMO.hex verify reset exit"
  • 🔨借用相对应的上位机软件烧录方式
    推荐使用mcu厂商的上位机烧录软件进行烧录,当然也可以借助第三方个人制作的MCUProg软件进行烧录。

如果是AT32可以使用ArteryICPProgrammer,支持jlink和ATLINK烧录Bootloader程序。不支持dap-link.
在这里插入图片描述

  • 如果是ST32,上位机可以选择当前官方推荐的STM32CubeProgrammer,支持串口、USB DFU、JLINK、ST-LINK或者老款烧录软件STM32 ST-LINK Utility仅支持ST-LINK烧录方式,两者都不支持daplink.
    在这里插入图片描述
    在这里插入图片描述
📙串口烧录方式介绍:

AM32-MultiRotor-ESC项目所支持的mcu通过串口方式烧录接口,串口方式烧录Bootloader引导加载程序前,需要先将mcu的Boot0引脚接高电平(3.3V).

  • 🌿如果是AT32,就使用Artery_ISP_Programmer上位机软件,默认串口1(PA2、PA3)进行串口下载Bootloader引导加载程序
    在这里插入图片描述

  • 🌿如果是STM32就选择STM32CubeProgrammer上位机软件,默认串口1(PA9、PA10)
    在这里插入图片描述

📒运行固件烧录

运行固件烧录可以使用配置工具和Betaflight飞行控制器,安装主运行固件,也可以直接连接修改为单线的USB串行适配器。以及借助Arduino UNO/nano板子实现运行固件的烧录

  • 👉如果手上有Betaflight飞行控制器的,可以通过Betaflight飞行控制器,直接使用网页版,在线安装主运行固件:https://esc-configurator.com/
  • 🌿单线的USB串行烧录,需要USB转TTL串口工具,将USB转TTL串口工具的RxD和TxD引脚连接到一块,也就是短接起来,在连接到已经烧录过Bootloader程序的ESC电调板的信号引脚上,如果烧录的是F421_PB4_BOOTLOADER_V2.hex固件,那么信号引脚就是PB4.然后使用Esc_Config_Tool软件进行固件的烧写。
    在这里插入图片描述

在这里插入图片描述

  • 烧录成功后,断开重新连接
    在这里插入图片描述
    如果后续有新版的固件,可以以同样的步骤升级固件。
  • 🌿Arduino烧录方式
    是借助Arduino UNO/nano板子,烧录好特定的程序,通过上位机软件借助 UNO/nano板子来上传运行固件到MCU中。
  • Arduino烧录方式介绍:https://github.com/am32-firmware/am32-wiki/blob/main/docs/guides/Arduino-PC-Link.md
  1. Arduino烧录方式,可以使用上位机软件BLHeliSuite烧录Arduino程序: (软件自带UNO/nano编译好的固件)https://www.mediafire.com/folder/dx6kfaasyo24l/BLHeliSuite
    在这里插入图片描述
  2. 方法二使用Arduino IDE上传代码到UNO/nano上。
//如果是nan板子D3引脚连接到ESC电调上的PB4信号接收引脚上(具体引脚看型号和固件),用来给ESC电调传固件用
// This should work conecting signal to pin D3 and ground to ground
/*This file is part of the BlHeliSuite interface solutions for AVRCopyright (C) 2014  by 4712This program is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation, either version 3 of the License, or(at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program.  If not, see <http://www.gnu.org/licenses/>.File: Arduino1Wire.cAuthor: 4712
*/
/** Arduino1Wire.c //Method I in C** Rev 1: Initial realease* Rev 1.1: Set ow pull up at startup  
*/#include <avr/io.h>//1-Wire Pin:
//Arduino Nano only -> PD3=D3
//MEGA boards -> PB2=D51=MOSI 
//all other -> PB3=D11=MOSI
#define OW_PIND3#if defined OW_PIND3
#define OW_DDR DDRD
#define OW_PORT PORTD
#define OW_PIN PIND
#define OW PIND3
#elif defined OW_PINB3
#define OW_DDR DDRB
#define OW_PORT PORTB
#define OW_PIN PINB
#define OW PINB3
#elif defined OW_PINB2
#define OW_DDR DDRB
#define OW_PORT PORTB
#define OW_PIN PINB
#define OW PINB2
#endif#if (defined (__AVR_ATmega2560__) || defined (__AVR_ATmega1280__))
#define IN_DDR DDRE
#define IN_PORT PORTE
#define IN_PIN PINE#define IN_RX PINE0
#define IN_TX PINE1
#else#define IN_DDR DDRD
#define IN_PORT PORTD
#define IN_PIN PIND#define IN_RX PIND0 
#define IN_TX PIND1#endif #define SetOWout (OW_DDR|= (1<< OW))
#define SetOWin (OW_DDR &= ~(1<< OW))
#define SetOWlow (OW_PORT &= ~(1<< OW))
#define SetOWhigh (OW_PORT |= (1<< OW))
#define IsOWhigh (OW_PIN & (1<< OW))
#define IsOWlow (!(OW_PIN & (1<< OW)))#define SetTXlow (IN_PORT &= ~(1<< IN_TX))
#define SetTXhigh (IN_PORT |= (1<< IN_TX))
#define IsRXhigh (IN_PIN & (1<< IN_RX))
#define IsRXlow (!(IN_PIN & (1<< IN_RX)))int main(void)
{//Very important disable hardware UARTUCSR0B =0;IN_DDR |=  (1<<IN_TX );IN_DDR &= ~(0<< IN_RX);IN_PORT|= (1<<IN_TX )|(1<< IN_RX); //pullup RX ;TX high//SetOWin;//Set OW as input / defaultSetOWhigh; //pull up onwhile(IsRXhigh); //wait for RX go Low = 1 Incoming datawhile(1){//RX low = 1 -> set oneWire to output SetOWout;SetOWlow; //Set oneWire low =1SetTXlow;  //Echo low to TX //Wait RX go high = 0 againwhile(IsRXlow);// input // RX is high (or high again) = 0 end of bit or idle - so listen to data from TRX SetOWhigh;  //Set OneWire High = 0 for sharper edge //can be skipped?//and Echo low to TX  SetOWin;SetOWhigh;  //Set OneWire pull upwhile (IsRXhigh) //while RX high (no incoming bytes){if  (IsOWhigh) SetTXhigh; //Set TX High = 0else SetTXlow; //Set TX Low = 1 }   }    
}
  • 🍁 Arduino nano给目标板烧录连接示意图:(建议在Arduino UNO/nano 连接引脚D3到ESC电调板直接串连一个1K的电阻,ESC电调板上的MCU一般都是3.3V电平,Arduino UNO/nano为5V,虽然电调板mcu GPIO引脚可能忍耐5V,为了不损坏io口保险起见)
    在这里插入图片描述

  • 烧录软件:Esc_Config_Tool_1_82_WINhttps://drive.google.com/file/d/1XACXV4w1ldtp71KJtZOjKVYttHv50o5C/view)(软件下不了就去立创开源工程搜索相关AT32电调,一般都上传有该软件)
    在这里插入图片描述
    在这里插入图片描述

等待进度条走完:

在这里插入图片描述

  • 烧录固件成功后,可以切换界面到Settings,可以显示出固件信息以及配置参数界面
    在这里插入图片描述

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

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

相关文章

HarmonyOS:@AnimatableExtend 装饰器自学指南

在最近的项目开发中&#xff0c;我遇到了需要实现复杂动画效果的需求。在探索解决方案的过程中&#xff0c;我发现了 AnimatableExtend 装饰器&#xff0c;它为实现动画效果提供了一种非常灵活且强大的方式。然而&#xff0c;在学习这个装饰器的过程中&#xff0c;我发现相关的…

Windows server 2022域控制服务器的配置

Windows server 2022介绍 一、核心特性与改进 安全核心服务器&#xff08;Secured-Core Server&#xff09; 硬件级安全&#xff1a;支持基于硬件的安全功能&#xff08;如TPM 2.0、Secure Boot、基于虚拟化的安全防护VBS&#xff09;&#xff0c;防止固件攻击。受信任的启动链…

C++语法之模板函数和模板类

模板函数是什么&#xff1f;就是不指定类型的函数&#xff0c;不指定类型如何写代码?所以得用到模板&#xff0c;可以先用模板代替&#xff0c;就好像方程式&#xff0c;先用x,y代替一样。 它的写法是这样&#xff0c;定义函数时&#xff0c;开头加一句:(其中的T就相当于x,y之…

时序分析笔记

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、周期约束 二、建立时间和保持时间 三、时序路径 四、时序模型 前言 约束文件笔记&#xff0c;傅里叶的猫的视频。 一、周期约束 时序约束就是告诉软件输…

六十天前端强化训练之第二十八天之Composition 函数完全指南

欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗&#xff0c;谢谢大佬&#xff01; 目录 一、核心概念解析 1.1 什么是 Composition 函数 1.2 为什么需要封装 1.3 设计原则 二、实战案例&#xff1a;鼠标跟踪器 2.1 未封装版本 2.2 封装后的 Composition 函数…

MySQL 锁机制详解

MySQL 锁机制详解 5.1 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、 RAM、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有 效性是所有数…

常见中间件漏洞攻略-Apache篇

漏洞名称&#xff1a;Apache HTTP Server 路径穿越漏洞-CVE-2021-41773 第一步&#xff1a;拉取环境、启动环境 #拉取环境 docker pull blueteamsteve/cve-2021-41773:no-cgidhttp://121.40.229.129:8080#启动环境 docker run -dit -p 8080:80 blueteamsteve/cve-2021-41773:n…

站群服务器是什么意思呢?

站群服务器是一种专门为托管和管理多个网站而设计的服务器&#xff0c;其核心特点是为每个网站分配独立的IP地址。这种服务器通常用于SEO优化、提高网站权重和排名&#xff0c;以及集中管理多个网站的需求。以下是站群服务器的详细解释&#xff1a; 一、站群服务器的定义 站群…

Excel 小黑第22套

对应大猫22 新建一行&#xff0c;输入第一个人名字&#xff0c; 填充 -快速填充 修改员工编号&#xff08;1—001&#xff09;&#xff1a;选中所有员工编号&#xff0c;开始 -数据组 -自定义数字格式 000 在所有空表格单元格中输入数字0&#xff1a;选中修改的表格范围&#…

多传感器融合 SLAM LVI-SAM

目录 LVI-SAM 简介 A. 系统概述 B. 视觉惯导系统 C.雷达惯导系统 LVI-SAM 安装编译 编译 LVI-SAM 常见问题 LVI-SAM 工程化建议 LVI-SAM 简介 源码地址:https://github.com/TixiaoShan/LVI-SAM 如无法下载,换用 gitee 版本:https://gitee.com/inf_lee/LVI-SAM 改进…

Linux shell脚本3-if语句、case语句、for语句、while语句、until语句、break语句、continue语句,格式说明及程序验证

目录 1.if 控制语句 1.1 if 语句格式 1.2 程序验证 2.case语句 2.1case语句格式 2.2程序验证 2.2.1 终端先执行程序&#xff0c;在输入一个数 2.2.2 终端执行程序时同时输入一个预设变量 2.2.3 case带有按位或运算和通配符匹配 3.for语句 3.1for语句格式 3.2程序验…

图解模糊推理过程(超详细步骤)

我们前面已经讨论了三角形、梯形、高斯型、S型、Z型、Π型6种隶属函数&#xff0c;下一步进入模糊推理阶段。 有关六种隶属函数的特点在“Pi型隶属函数&#xff08;Π-shaped Membership Function&#xff09;的详细介绍及python示例”都有详细讲解&#xff1a;https://lzm07.b…

001-JMeter的安装与配置

1.前期准备 下载好JMeter : https://jmeter.apache.org/download_jmeter.cgi 下载好JDK : :Java Downloads | Oracle 中国 下载图中圈蓝的JMeter和JDK就行&#xff0c;让它边下载&#xff0c;我们边往下看 2.为什么要下载并安装JDK ? JMeter 是基于 Java 开发的工具&#…

英伟达有哪些支持AI绘画的 工程

英伟达在AI绘画领域布局广泛&#xff0c;其自研工具与第三方合作项目共同构建了完整的技术生态。以下是其核心支持AI绘画的工程及合作项目的详细介绍&#xff1a; 一、英伟达自研AI绘画工具 1. GauGAN系列 技术特点&#xff1a;基于生成对抗网络&#xff08;GAN&#xff09;&…

Netty源码—4.客户端接入流程二

大纲 1.关于Netty客户端连接接入问题整理 2.Reactor线程模型和服务端启动流程 3.Netty新连接接入的整体处理逻辑 4.新连接接入之检测新连接 5.新连接接入之创建NioSocketChannel 6.新连接接入之绑定NioEventLoop线程 7.新连接接入之注册Selector和注册读事件 8.注册Rea…

2025.3.17-2025.3.23学习周报

目录 摘要Abstract1 文献阅读1.1 动态图邻接矩阵1.2 总体框架1.2.1 GCAM1.2.2 输出块 1.3 实验分析 总结 摘要 在本周阅读的文献中&#xff0c;作者提出了一种名为TFM-GCAM的模型。TFM-GCAM模型的创新主要分为两部分&#xff0c;一部分是交通流量矩阵的设计&#xff0c;TFM-GC…

生活电子类常识——搭建openMauns工作流+搭建易犯错解析

前言 小白一句话生成一个网站&#xff1f;小白一句话生成一个游戏&#xff1f;小白一句话生成一个ppt?小白一句话生成一个视频&#xff1f; 可以 原理 总体的执行流程是 1&#xff0c;用户下达指令 2&#xff0c;大模型根据用户指令&#xff0c;分解指令任务为多个细分步骤…

深入解析 Uniswap:自动做市商模型的数学推导与智能合约架构

目录 1. 自动做市商&#xff08;AMM&#xff09;模型的数学推导1.1 恒定乘积公式推导1.2 价格影响与滑点 2. Uniswap 智能合约架构解析2.1 核心合约&#xff08;Core&#xff09;2.1.1 工厂合约&#xff08;Factory&#xff09;2.1.2 交易对合约&#xff08;Pair&#xff09; 2…

高频面试题(含笔试高频算法整理)基本总结回顾20

干货分享&#xff0c;感谢您的阅读&#xff01; &#xff08;暂存篇---后续会删除&#xff0c;完整版和持续更新见高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09;&#xff09; 备注&#xff1a;引用请标注出处&#xff0c;同时存在的问题请在相关博客留言…

生成模型速通(Diffusion,VAE,GAN)

基本概念 参考视频https://www.bilibili.com/video/BV1re4y1m7gb/?spm_id_from333.337.search-card.all.click&vd_sourcef04f16dd6fd058b8328c67a3e064abd5 生成模型其实是主要是依赖概率分布&#xff0c;对输入特征的概率密度函数建模 隐空间&#xff08;latent space)…