文章目录

  • 前言
  • 1、BOOT0和BOOT1的作用
  • 2、一键下载电路
    • 2.1、洋桃1号开发板
    • 2.2、正点原子战舰版
  • 参考资料

前言

  之前在STM32的程序下载方面一直不求甚解,现在是时候回来仔细研究一下了
通过本篇文章将了解到:
  1、STM32程序下载的两种方式及其工作流程
  2、两种ISP一键下载电路设计思路


1、BOOT0和BOOT1的作用

▲STM32官方参考手册 P33

  其中SRAM和主闪存存储器、系统存储器的使用场景区别是显而易见。而主闪存存储器和系统存储器的使用区别就没那么明显了,这里主要讨论启动模式中主闪存存储器、系统存储器的区别,下面将用启动模式1和启动模式2代称。
  首先声明以上两种启动模式在下载程序时的一般使用场景,启动模式1通常用于JTAG和SWD下载时使用而启动模式2是在使用串口下载中使用到。

  在系统复位后,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。

  针对上述手册中的原话需要知道的是启动模式在上电时会根据BOOT引脚的电平状态来被选择,再次选择则需要改变BOOT引脚的电平状态然后再复位才可,也就是说在下载程序和运行程序选用的启动模式不同时是需要多次复位的。
  现在可以梳理一遍工作流程了:选择启动模式->下载程序->选择启动模式->运行下载程序
  下面是启动模式1和启动模式2的具体区别

1.主闪存存储器(Main Flash memory)
  STM32内置的Flash,一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。
2.系统存储器(System memory)
  从系统存储器启动,这种模式启动的程序功能是由厂家设置的。STM32在出厂时,由ST在这个区域内部预置了一段BootLoader, 也就是我们常说的ISP程序, 这是一块ROM,出厂后无法修改。一般来说,我们选用这种启动模式时,是为了从串口下载程序,因为在厂家提供的BootLoader中,提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的Flash中。

  通过上面的描述可以看出一个问题:
  1、如果使用仿真器下载那么就不用改变启动模式即不用改变BOOT引脚的电平状态
  2、如果使用串口下载(ISP下载)那么启动模式再下载时应该是启动模式2而运行程序时启动模式需要变为启动模式1。
  如果是使用跳线帽来改变BOOT引脚的值那么的确是太反人类的操作了,于是有了一键下载电路的产生。


2、一键下载电路

  在这里将举两个例子:正点原子战舰版和洋桃1号开发板的一键下载电路。

2.1、洋桃1号开发板

  洋桃1号开发板的做法是通过软件实现的也就是说这里只能通过猜测来分析了,在其核心板上使用了一枚8Pin的单片机来控制BOOT0和BOOT1引脚,不得不说这种做法挺取巧也挺新颖的,也体现了洋桃1号开发人员对这个过程的熟悉。

▲来自洋桃1号核心板原理图

2.2、正点原子战舰版

▲正点原子战舰板一键下载电路

  一键下载电路的具体实现过程:首先,mcuisp 控制DTR输出低电平,则DTR_ N输出高,然后RTS置高,则RTS_ N输出低,这样Q3导通了,BOOTO被拉高,即实现设置BOOTO为1,同时Q2也会导通,STM32F1的复位脚被拉低,实现复位。然后,延时100ms后,mcuisp控制DTR为高电平,则DTR_N输出低电平,RTS维持高电平,则RTS_N继续为低电平,此时STM32F1的复位引脚,由于Q2不再导通,变为高电平,STM32F1 结束复位,但是BOOT0还是维持为1,从而进入ISP模式,接着mcuisp就可以开始连接STM32F1, 下载代码了,从而实现一键下载。

  以上文字为正点原子STM32F1开发指南中对于一键下载电路的相关解释,解释的足够清晰再次不做赘述。值得注意的一点是要意识到使用计算机和CH340G通信从而改变DTR和RST引脚电平值这个事实。 从而理解在程序烧录软件中的设置的作用。


参考资料

  探究 STM32 的三种 BOOT(启动) 模式并实例验证
  STM32F1开发指南-库函数版本_V3.2

【STM32】关于BOOT引脚和一键下载电路下载的一些事相关推荐

  1. STM32 SWD/JTAG引脚被占用 无法使用Jlink下载代码时的解决方法

    2022/09/15 众所周知,当我们使用STlink或者Jlink的SWD为STM32下载程序时使用到的是PA13和PA14两个引脚,但在某些情况下我们可能会将这两个引脚复用为其它的模式,此时,我们 ...

  2. STM32学习笔记——CH340一键下载电路

    今天看了一下STM32板子的一键下载功能,对电路理解了一下,做个说明. 1.启动模式 STM32上电后的BOOT1/0的电平状态会决定它的运行模式.很明显,我们如果上电后要进入自己写的程序并运行,那么 ...

  3. CH340在STM32实现一键下载电路的理解

    转自http://www.cnblogs.com/einstein-2014731/p/4885300.html 在做基于STM32的多功能MP3播放器的课题时,在程序下载这部分时借鉴了正点原子开发板 ...

  4. STM32-CH340实现一键下载电路分析

    在程序下载这部分时借鉴了正点原子开发板上的一键下载电路,采用CH340G这款芯片设计. 我们通过RTS#和DTR#两个输出信号来控制STM32 IC的BOOT0和BOOT1两引脚来选择启动模式,如下表 ...

  5. STM32 BOOT 引脚配置

    STM32 BOOT 引脚配置 在STM32F10xxx里,可以通过BOOT[1:0]引脚选择三种不同启动模式: BOOT1=x BOOT0=0 从用户闪存启动,芯片内置的Flash,这是正常的工作模 ...

  6. ISP一键下载电路分析+74HC1G66GW(信号图)

    之前要不用的最小系统的开发板要不就是用的SWD调试口,没有注意过ISP一键下载电路是个怎么回事,因为需要就简单的看了一下野火的ISP一键下载电路. 默认情况一下,一般我们的程序都是从用户闪存也就是内部 ...

  7. 基于CH340的一键下载电路

    阅读目录 一.CH340简介 二.CH340G在Arduino上的下载电路应用 三.CH340G在STM32上的下载电路应用 四.CH340驱动程序下载 回到顶部 一.CH340简介 CH340 是一 ...

  8. 串口一键下载电路(CH340)的理解

    如图:为原子的串口下载电路    在CH340的数据手册上有引脚的介绍以及作用:    这两个引脚:DTR#和RTS#都是 输出类型,  MCUISP(一键下载工具),会控制CH340这两个引脚的高低 ...

  9. Easy EDA #学习笔记09# | ESP32 一键下载电路

    问题描述 使用Arduino IDE烧录ESP32的时候,IDE会提示在60秒(好像是)内要按下板载BOOT键,否则就出现'-'___连串等待,超时报错,结束. MicroBlocks 废除 ESP3 ...

最新文章

  1. 【Git】Git 本地的撤销修改和删除操作
  2. js控制鼠标移动_原生JS封装可拖拽效果
  3. 在vue中let var 和const 区别
  4. 【Nginx-20180108】Nginx的搭建文件服务器问题一则
  5. Java获得时间 String与Timestamp互转
  6. 我在河南安阳拍摄的一个山村小孩儿
  7. 网页 添加QQ/MSN/旺旺 在线聊天代码
  8. 1009. 说反话 (20)
  9. 程序清单4.1_talkback.c程序_《C Primer Plus》P60
  10. 我心目中的Asp.net核心对象
  11. 英语总结系列(四):寻觅激励自我之道
  12. 【YII】常用代码积累
  13. SAM2695 带效果器的低功耗单芯片合成器
  14. 秩和比RSR法算法C语言,秩和比法
  15. 电脑计算机硬盘坏了如何修理,笔记本电脑硬盘坏了怎么修复怎么办
  16. Java DataStore 封装代码
  17. 华为mate40Android,【猫哥爆料】史上最强Mate40官宣,坐实年度安卓机皇!
  18. 在PPT上使用开发工具的不同控件实现单选操作
  19. crt和zoc7的快捷键记录
  20. vue-cl 有一些静态资源不想经过webpack打包那么应该public 下面

热门文章

  1. java编写一个邮件程序显示收件箱中所有的邮件列表_如何使用JavaMail获取邮件帐户中的可用文件夹列表...
  2. c json保存整型数组_命令行JSON解析神器jq
  3. Swagger中paramType
  4. pytorch使用Ray-tune对原有训练模型的代码改写,自动调参(一)
  5. docker安装ping命令
  6. 路由器与计算机IP配置,电脑的IP地址和DNS等参数如何设置
  7. wps怎么投递简历发到boss直聘_BOSS直聘角逐招聘季:装机量、下载增量、增长率三料冠军...
  8. oracle成本模块培训,Oracle App 培训笔记(5) -- 成本管理模块表结构整理 续
  9. matlab有趣表白程序_小人表白MATLAB代码
  10. 11content_processor