FlyMcu串口下载STLink Utility

1、FlyMcu

FlyMcu串口下载,同STC-ISP(51单片机下载)。

使用步骤:

1、STM32的USART1通过串口转usb连接到电脑

2、通过keil生成Hex、bin文件

生成bin、hex文件可参考

keil生成bin文件(简单)-CSDN博客

  创建的Hex文件在工程的Object中。

 

 3、进行烧写

选择对应的串口和波特率

 然后选择文件,可选择hex(此软件不能烧写bin文件)文件。

 跳线帽配置boot0 boot1为0 1。然后重新复位

 

 然后点击开始编程下载

将跳线帽改成0 0 ,重新上电就能自动运行。

系统存储区解释:

系统存储区(0x1ffff000)的bootload为引导烧写区域(内部为自举程序),ST公司指定了特定的通信接口进行引导烧写。在更新过程中,通过自举接口USART1,接收USART1数据,刷新到程序存储区flash中0x08000000。相当于手机的刷机模式,电脑的pe系统。进行辅助自我更新。

程序一键下载电路:

可使用电路自动控制Boot0引脚和RST复位引脚的电平,使得在上电烧写程序时自动改变,烧写完成后恢复。

可使用usb转串口芯片CH340G的RTS、CTS和DTR、DSR(4个流控引脚,我们可以当作普通的GPIO使用),RTS和DTR为输出引脚,可以用来控制STM32的Boot0和RST(需要外围的控制电路)。

配置的高低电平在CH340G会应用

另外可使用编程后自动运行,运行一次,此次不需要修改跳线帽。同时不能使用编程到flash时写选项字节。这次运行为手动指令。重新上电还是需要修改跳线帽位置。运行成功会显示成功从0x0800000运行。

 

其他功能(boot0 boot1 在 1 0 模式下): 

1、读flash内的程序,需要在boot0 boot1 在 1 0 模式下,读取的是STM32系统存储区从0x08000000开始的bin(无地址信息,hex文件有地址信息)程序。

2、清除芯片,需要在boot0 boot1 在 1 0 模式下,将flash内的程序全部擦除为ff。

3、读取期间信息可以将以下信息读出。

4、选项字节设定

  • 读保护字节,会防止程序被读出,开启后也不能下载程序,可以解除读保护(解除时会清空数据)
  • 硬件选项字节,了解使用
  • 用户数据字节,自由使用的字节,这些字节只能在上位机例如此软件中修改。
  • 写保护字节,可以对flash的每几个页进行单独写保护,例如想对flash最后几个字节存储固定数据,不想被修改,那么可以写保护。但是如果对写保护字节的程序进行烧写覆盖,会报错。

配置完成后选择采用设置

然后勾选编程到flash时写选项字节。这样在烧写程序时可顺便对选项字节设定。

2、STLink Utility

STLink下载,需要进行安装,也需要使用STLINK的驱动。

使用:

1、连接,使用STLINK,无需修改跳线帽

2、保存当前设备程序 

3、 断开连接和擦除芯片

 4、烧写程序

烧写后程序自动运行,最后有选择,默认的可以不更改。

5、选项字节配置,target-option bytes

 内容和flaymcu相同。灰色的选项表示芯片没有此配置。配置完成后使用Apply配置应用,可直接更改选项字节。

6、重启后进行固件更新

重启(下电)后点击ST-LINK-update,连接后看到当前STLINK固件版本和更新固件版本

点击更新 

更新完成! 

3、一键下载电路

1、CH340芯片特点

  • 全速USB设备接口,兼容USBV2.0。
  • 仿真标准串口,用于升级原串口外围设备,或者通过USB增加额外串口。
  • 计算机端Windows操作系统下的串口应用程序完全兼容,无需修改。
  • 硬件全双工串口,内置收发缓冲区,支持通讯波特率50bps~2Mbps。
  • 支持常用的MODEM联络信号RTS、DTR、DCD、RI、DSR、CTS。
  • 通过外加电平转换器件,提供RS232、RS485、RS422等接口。
  • CH340R芯片支持IrDA规范SIR红外线通讯,支持波特率2400bps到115200bps。
  • 内置固件,软件兼容CH341,可以直接使用CH341的VCP驱动程序。
  • 支持5V电源电压和3.3V电源电压。
  • CH340C/N/K/E/X/B内置时钟,无需外部晶振,CH340B还内置EEPROM用于配置序列号等。
  • 提供SOP-16、SOP-8和SSOP-20以及ESSOP-10、MSOP-10无铅封装,兼容RoHS

2、CH340系列芯片

3、CH340引脚定义

4、一键下载电路原理

STM32下载,在NRST复位后BOOT0  = 1高电平即可进行烧写。默认断开不生效。

DTR#和RTS#都是输出类型,FlyMCU(一键下载工具),会控制CH340这两个引脚的高低电平状态,通过控制DTR#和RST#这两个引脚的高低电平状态,从而控制STM32的BOOT0 和 RESET。选择DTR的低电平复位,RTS 高电平进 BootLoader。

我们需要注意一点:CH340G上电后DTR#和RTS#都为高电平,在用MCUISP烧写软件时,我们在软件下方选择“DTR的低电平复位,RTS高电平进BootLoader”,CH340G IC在实际操作时引脚的变化为“DTR#拉高,RTS#拉低”,即软件设置和实际情况是取非的,相反的。

RST#和DTR#是低电平有效,因此没有动作的时候都是保持高电平的。

控制流程:

初始:下载软件配置DTR的低电平复位,RTS 高电平进 BootLoader。电路中DTR#、RST#默认高电平
启动:因为CH340C的DTR和RST发送为非门DTR#维持高,RST#拉低。DTR#高电平,Q1的b-e有电压差(电流存在),那么Q1的c-e导通,NRST接到RST#线为低电平。RTS为低电平,Q2的c-b有电压差(电流),Q2的c-e导通,BooT0为高电平。
复位:NRST接到RST#线为低电平,单片机复位。BooT0持续为高电平。

100ms后复位结束,改变电平:DTR#电平跳变(拉低),RST#不变(拉低)。此时复位结束。单片机启动后4个上升沿锁定boot0电平。为1,启动到系统存储bootload。

下载结束:RST#先变成高电平DTR#在变成高电平。RST#先变成高电平,BOOT0=0,退出烧写模式。DTR#在变成高电平,Q1的b-e无电压差,不在复位。烧写结束,重新上电即可使用。或者烧写时软件勾选烧写完跳转运行。
注:下载结束时之所以RST#先变成高电平DTR#在变成高电平。是防止DTR#先变成高电平时,RST#仍然低电平导致复位,再次进入bootload。

信号时序图: 

三极管工作原理

 其他辅助电路:

NRST稳定高电平,按钮控制复位

 

 STM32晶振电路

 复位后手动高电平BOOT0按钮,以及供电LED显示

BOOT1拉高,平时不用的引脚持续拉高

外部晶振

 

 USB插头和SWD烧写口插头

 

 参考:

看了一些博主的分享经验以防自己以后碰到先放在下面:

  • 目前最稳定的情况是由外部USB接口的5V供电(防止RTS有2.5V的电,防止BOOT0不能回0,稳定供电使CH340芯片引脚电平稳定)。
  • CH340G,需要加12MHz的晶振,否则无法正常工作;
  • 另外有CH340T等系列是不需要增加晶振的。而且CH340有两种供电方式,上面我提供的是5V供电,还可以3.3V供电,区别是3.3V的V3脚不需要外接电容,而是要直连到3.3V。
  • 对于CH340转换成的USB接口,有些电路会在D+那里加一个1.5K上拉到3.3V,目的应该是将USB口变为高速口,但我用软件查看了,无论加不加上拉电阻,这个USB口都是全速口。
  • 这两周在查找一个问题,就是MPU6050在我两块开发板上面展现出来的速率不一样,自己画的板子数据很慢,串口打印到虚拟机很不灵敏,相比之下买的开发板很灵敏,我对调了STM32都解决不了问题,对比了电路怀疑是CH340的区别,然后对CH340有了更深的认识,最后发现是我自己画的板子STM32的晶振旁路电容全都是104的,对于一个硬件工程师来说,真是很低级的错误,但也说明,电容用大可以正常工作,但是运算速率会变慢。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

aws(学习笔记第十课) 对AWS的EBS如何备份(snapshot)以及使用snapshot恢复数据,AWS实例存储

aws(学习笔记第十课) 对AWS的EBS如何备份(snapshot)以及使用snapshot,AWS实例存储 学习内容: 对AWS的EBS如何备份AWS实例存储EBS和实例存储的不足 1. 对AWS的EBS如何备份(snapshot)以及使用snapshot恢复数…

论文2—《基于柔顺控制的智能神经导航手术机器人系统设计》文献阅读分析报告

论文报告:基于卷积神经网络的手术机器人控制系统设计 摘要 本研究针对机器人辅助微创手术中定向障碍和缺乏导航信息的问题,设计了一种智能控制导航手术机器人系统。该系统采用可靠和安全的定位技术、7自由度机械臂以及避免关节角度限制的逆运动学控制策…

《数据结构与算法》二叉树基础OJ练习

二叉树的基础知识详见:《数据结构与算法》二叉树-CSDN博客 1 单值二叉树 思路 我们把树分成当前树(用根和左孩子还有右孩子进行比较,如果左孩子或者右孩子为空那就不比了,如果左右孩子或者其中一个存在就比较,相等就是…

栈和队列(C 语言)

目录 一、栈1. 栈的概念2. 栈的结构3. 栈的实现思路4. 栈的实现代码 二、队列1. 队列的概念2. 队列的结构3. 队列的实现思路4. 队列的实现代码5. 循环队列 一、栈 1. 栈的概念 栈是一种特殊的线性表,只允许在固定的一端进行插入和删除操作,该端被称为栈…

自动化测试工具Ranorex Studio(二十五)-库的拆分

默认地,每一个Ranorex Studio项目包含一个对象库文件,这个文件自动用在每一个新创建的录制中。你可以在一个单独的库文件中管理一个测试套件项目中所有的UI元素,但是在一个自动化测试项目中多个对象库的存在还是有一些原因的: .测…

Centos下安装Maven(无坑版)

Linux 安装 Maven Maven 压缩包下载与解压 华为云下载源,自行选择版本 下面的示例使用的是 3.8.1 版本 wget https://repo.huaweicloud.com/apache/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.tar.gz解压 tar -zxvf apache-maven-3.8.1-bin.tar.gz移…

99、Python并发编程:多线程的问题、临界资源以及同步机制

引言 多线程技术的引入,可以帮助我们实现并发编程,一方面可以充分利用CPU计算资源,另一方面,可以在用户体验上带来极大的改善。但是,多线程技术也存在一些问题。本文就来简单聊一下多线程引入导致的问题,以…

jmeter常用配置元件介绍总结之取样器

系列文章目录 1.windows、linux安装jmeter及设置中文显示 2.jmeter常用配置元件介绍总结之安装插件 3.jmeter常用配置元件介绍总结之取样器 jmeter常用配置元件介绍总结之取样器 2.取样器2.1.HTTP请求2.2.Debug Sampler2.3.JSR223 Sampler2.4.JDBC Connection Configuration和J…

Python练习11

Python日常练习 题目: 编写一个石头剪刀布游戏,该程序要求完成如下功能: (1) 显示游戏规则,提醒用户输入一个1-3的整数或者直接回车。 用户输入回车时游戏结束。 用户输入不合法(包括输入的…

什么是欧拉角和四元数

涉及机器人调度工作的一些基本概念整理理解 目录 什么是欧拉角和四元数 ?相关工具网站相关工具代码 什么是欧拉角和四元数 ? 这里画了一张图,简明方便理解: 欧拉角 (Euler Angles) 是一种描述物体在三维空间旋转姿态的方法&…

关于几种卷积

1*1卷积 分组卷积&深度可分离卷积 空洞卷积、膨胀卷积 转置卷积 https://zhuanlan.zhihu.com/p/80041030 https://yinguobing.com/separable-convolution/#fn2 11的卷积可以理解为对通道进行加权,对于一个通道来说,每个像素点加权是一样的&am…

std::copy

std::copy 是 C 标准库中的一个算法&#xff0c;用于将一个序列中的元素复制到另一个位置。这个算法定义在 <algorithm> 头文件中。 --- 函数原型 std::copy 有几个不同的重载版本&#xff0c;但以下是最常用的两个&#xff1a; template <class InputIterator, c…

PyQt5实战——翻译的实现,第一次爬取微软翻译经验总结(八)

个人博客&#xff1a;苏三有春的博客 系类往期文章&#xff1a; PyQt5实战——多脚本集合包&#xff0c;前言与环境配置&#xff08;一&#xff09; PyQt5实战——多脚本集合包&#xff0c;UI以及工程布局&#xff08;二&#xff09; PyQt5实战——多脚本集合包&#xff0c;程序…

【数据集】【YOLO】【VOC】目标检测数据集,查找数据集,yolo目标检测算法详细实战训练步骤!

数据集列表 帮忙采集开源数据集&#xff0c;包括YOLO格式数据集和Pascal VOC格式数据集&#xff0c;含图像原文件和标注文件&#xff0c;几百张到几千张不等&#xff0c;国内外公开数据集均可。 针对目标检测&#xff0c;YOLO系列模型训练&#xff0c;分类训练等。 部分数据…

Vue前端开发:元素动画效果之过渡动画

在Vue中&#xff0c;专门提供了一个名称为transition 的内置组件&#xff0c;来完成单个DOM元素的动画效果&#xff0c;该组件本身和它的顶层并不渲染动画效果&#xff0c;而只是将动画效果应用到被组件包裹的DOM元素上&#xff0c;代码实现的格式如下所示。 <transition&g…

【C/C++】strcmp函数的模拟实现

零.导言 之前我们学习了strcmp函数&#xff0c;不妨我们现在尝试模拟实现strcmp函数的功能。 一.实现strcmp函数的要点 strcmp函数是一种字符串函数&#xff0c;可以比较字符类型的数组&#xff0c;因此我们自定义的模拟函数需要两个char类型的指针参数&#xff1b;第一个字符…

ima.copilot:智慧因你而生

在数字化时代&#xff0c;信息的获取、处理和创作已经成为我们日常工作和学习中不可或缺的一部分。腾讯公司推出的ima.copilot&#xff08;简称ima&#xff09;正是为了满足这一需求&#xff0c;它是一款由腾讯混元大模型提供技术支持的智能工作台产品&#xff0c;旨在通过智能…

string类

1. 标准库中的string类 1.1 string类(了解) string - C Reference 在使用string类时&#xff0c;必须包含 # include头文件以及 using namespace std; 1.2 auto和范围for 1&#xff09;auto关键字 作为一个新的类型指示符来指示编译器&#xff0c;auto声明的变量必须由编…

元数据管理是如何在ETL过程中发挥作用的?

ETL&#xff08;抽取、转换和加载&#xff09;技术在现代大数据处理中起着至关重要的作用。ETL技术主要用于将不同来源、格式和结构的数据抽取到一个中心化的数据仓库&#xff0c;并进行转换和加载&#xff0c;进而提供一致、高质量的数据给数据分析和报告工具。然而&#xff0…