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

前言

  之前在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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值