STM32程序下载详解

STM32 ISP程序下载详解

1、STM32三种启动模式

STM32通过BOOT0和BOOT1两个引脚来选择启动模式:

模式BOOT0BOOT1启动模式说明
模式10X用户闪存存储器用户闪存存储器,也就是FLASH启动
模式210系统存储器系统存储器启动,用于串口下载
模式311SRAM启动SRAM启动,用于在SRAM中调试代码

!!!系统复位后,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存

1)用户闪存存储器启动模式(Main Flash memory) BOOT0 = 0

BOOT0设置为0,stm32就进入了用户闪存存储器启动模式,也就是flash启动模式。这种模式是正常的用户工作模式通过J-TAG和SWD模式进行下载程序,重启后也直接从这启动程序

2)系统存储器启动模式(system memory) BOOT0 = 1 BOOT1 = 0

BOOT0设置为1,BOOT1设置为0整个系统进行进入系统存储器启动模式。从系统存储器启动,这种模式启动的程序功能是由厂家预留设置的。

系统存储器是芯片内部一块特定的区域,在STM32在出厂时,由ST在这个区域内部预置了一段BootLoader,也就是我们常说的ISP程序,这是一块ROM,出厂后无法修改

一般来说,我们选用这种启动模式时,是为了从串口下载程序,因为在厂家提供的BootLoader中,提供了串口下载程序的固件可以通过这个BootLoader将程序下载到系统的Flash中。但是这个下载方式需要以下步骤:

STEP1:BOOT0设置为1,BOOT1设置为0,然后按下复位键,这样才能从系统存储器启动BootLoader
STEP2: 最后在BootLoader的帮助下,通过串口下载程序到Flash中
STEP3: 程序下载完成后,又有需要将BOOT0设置为GND,手动复位,这样,STM32才可以从Flash中启动

3)SRAM启动(Embedded Memory)

内置SRAM,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试
假如我只修改了代码中一个小小的地方,然后就需要重新擦除整个Flash,比较的费时可以考虑从这个模式启动代码(也就是STM32的内存中),用于快速的程序调试,等程序调试完成后,再将程序下载到Flash中。

2、CH430G一键程序下载原理(ISP)

为了操作方便,我们直接把BOOT1通过下拉电阻接地,一直为低电平,仅通过改变BOOT0的电平高低来下载程序

STEP1:系统上电,BOOT = 0,系统进入模式1运行。上电复位后,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存,进入主闪存存储器,执行我们断电前烧录的代码;

STEP2:程序编译完成,生成HEX文件;

STEP3:烧写HEX文件时,BOOT0拉高,进入模式2,然后让系统复位一次,复位后系统重新锁存引脚,通过系统存储器BootLoader引导烧写HEX文件;

STEP4:烧写HEX文件完成,我们希望进入模式1执行代码,但我们不需要再复位和锁存BOOT引脚进入模式1啦,因为MCUISP烧录软件帮我们配置好了,程序烧录完成会自动从OX0800 0000开始运行,即进入主闪存存储器执行程序;

参考手册:从主闪存存储器启动:主闪存存储器被映射到启动空间(0x00000000),但仍然能多在’它原有的地址(0x08000000)访问它,即闪存存储器的内容可以在两个地址区域访问,0x00000000或0x08000000

3、原理图分析

我们通过RTS#和DTR#来控制BOOT0,进而改变启动方式,其中BOO1一直为低电平

由CH340G芯片资料可以知道这两个引脚的功能都为输出,且上电后均为高电平

RTS#:信号输出,初始状态为高电平,表示芯片接收数据已经准备就绪,下载程序时会变成低电平。

DTR#:信号输出,初始状态为高电平,下载程序时会变成低电平(但是,是在RTS变为低电平之后才为低)。

在这里插入图片描述

三级管:NPN:基极高电平导通,低电平截止;PNP:栅极低电平导通,高电平截止;
MOS管:N-MOS:栅极高电平导通,低电平截止;P-MOS:栅极低电平导通,高电平截止。

① 上电后:DTR# RTS#都为高电平(没有压降),Q2截止,RESET为高电平(低电平有效);RTS#为高电平,Q3截止,BOOT0 = 0,进入模式1

② 打开MCUISP后,将软件设置为“ DTR的低电平复位,RTS高电平进bootloade”

软件配置和IC操作是相反的实际的引脚操作为:DTR为高,RTS拉低

在启用下载的时候,DTR#维持高,RTS#拉低,此时Q2和Q3都导通,那么BOOT0 = 1进入模式2,RESET为低电平复位

然后DTR#变低,Q2不导通,复位结束。此时的BOOT0为高电平,经过4个SYSCLK,BOOT0的状态会被锁存,变成串口下载模式,那么就会启用串口下载程序

③ 程序下载结束后,RTS#会先变成高电平,DTR#再变成高电平,由MCUISP软件配置进入主闪存存储器执行程序

程序下载时序图如下:
在这里插入图片描述

4、拓展:关于flash死锁的解决办法(Flash memory启动方式)

开发调试过程中,由于某种原因导致**内部Flash锁死,无法连接SWD以及JTAG调试,无法读到设备,可以通过修改BOOT模式重新刷写代码。修改为BOOT0=1,BOOT1=0即可从系统存储器启动,ST出厂时自带Bootloader程序,**SWD以及JTAG调试接口都是专用的。重新烧写程序后,可将BOOT模式重新更换到BOOT0=0,BOOT1=X即可正常使用。

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STM32F103是STMicroelectronics(意法半导体)生产的一款低成本的32位单片机系列,拥有强大的性能和丰富的外设。串口下载是一种通过串行通信接口进行程序下载的方法。 首先,要进行串口下载,我们需要准备一台电脑,一根串口线,以及一个串口下载工具。串口线连接电脑的串口口和STM32F103的串口口。 然后,我们需要设置STM32F103的串口引脚工作模式。在I/O端口配置寄存器中,我们需要将串口引脚配置为复用功能,并将相关的引脚设置为串口模式。 接下来,在电脑上打开串口下载工具,并设置好串口参数,例如波特率、数据位、校验位等。确保电脑和STM32F103之间的串口连接是正常的。 然后,我们需要在开发环境(例如Keil或STM32CubeIDE)中编写程序,并进行编译和生成可执行文件。将生成的可执行文件保存在电脑上一个特定的目录中。 在串口下载工具中选择要下载的可执行文件,并点击下载按钮开始下载下载过程中,串口下载工具会通过串行通信接口将可执行文件的数据传输到STM32F103的Flash存储器中。 下载完成后,重启STM32F103,使其加载新下载程序。此时,STM32F103就可以运行新程序了。 总的来说,STM32F103的串口下载是一种通过串行通信接口将可执行文件下载到芯片的Flash存储器中的方法。通过这种方法,我们可以方便地更新芯片的程序,以实现不同的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值