正点原子STM32 ISP电路分析

最近想画一块STM32的开发板,需要设计ISP自动下载电路,在此借鉴正点原子的ISP自动下载电路的硬件设计。由于模拟电路不是很精通,本章结合PSpice进行仿真理解ISP的原理。

1. STM32的启动方式

讲到下载方式,一定得首先首先知道STM32的启动方式。STM32一共有三种其中方式,如下图所示

BOOT0BOOT1启动方式
0X内部FLASH
10系统存储器
11内部RAM
  • 内部FLASH通常对应的是我们使用下载器进行烧录,比如常用的Jlink、STlink、DAPlink等等
  • 系统存储器通常对应的是使用串口下载,因为STM32在出厂时就内置了一段BootLoader,这段BootLoader用于启动串口下载的程序。
  • 内部RAM没用用过, 就不过多介绍

如果我们的开发板没有一键下载电路的话,我们下载程序时要把boot 0的跳冒从接GND变成接VCC,然后下载,按一下复位按键程序才能烧录,最后再把接VCC变成接GND,并且再按一下复位,这样单片机才能运行程序,每一次烧录程序都很麻烦。而当我们的单片机有了一键下载电路后,就不需要改变boot 0的值,直接烧录就可以运行。下面就我个人来分析一下一键下载电路。串口ISP通信的详细原理请看着: STM32 串口 ISP 原理

2. ISP自动下载电路设计

所谓自动就是指用户无需按下复位键和BOOT切换来实现下载,一般复位管脚会接上拉电阻,默认为高电平,而BOOT0管脚一般会接下拉电阻,默认为低电平,我们需要设计一种电路,在下载的时候将RESET管脚设置为低电平,BOOT0设置为高电平。怎么才能设置这两个管脚呢?解决的思路是通过上位机去控制这两个管脚的电平,具体怎么控制呢?这就涉及到串口的硬件流控制了,上位机是可以通过编程控制USB转TTL芯片的相关管脚状态的。

2.1 正点原子ISP自动下载电路设计

如下图所示为正点原子ISP自动下载电路设计原理图。ISP电路只要看左边部分,下载软件(mcuISP或者FlyMCU等软件)需要设置为DTR的低电平复位和RTS高电平进BootLoader,此时CH340G的RTS#为低电平,DTR#为高电平,电平相反的原因是:DTR#和RTS#表示反向标志的的意思。因为我们的mcuisp软件使用的是232标准电平,而单片机是ttl电平,他们两者电平是相反的。所以原理图中DTR后面加了一个#表示我们CH340G芯片此时接收到的DTR是高电平(与我圈起来的序号1中的DTR低电平相反所以是高电平)。并不是说CH340G芯片会进行逻辑非运算,仅仅只是一个提醒标志而已。由电路图可知,Q3会导通,导致BOOT0管脚为高电平,Q2也会导通, 导致RESET管脚为低电平,此时MCU进入复位,此时就能达到我们的设置电平的作用了。

在这里插入图片描述

2.2 ISP自动下载电路全过程解析

如下图所示,为mcuisp串口烧录软件的全过程,我们需要设置好1和3就可以实现自动下载了,标号2处显示的是下载时的调试信息。从图示我们可知分为以下几步:

  • DTR置低、RTS置高(对应DTR#置高、RTS#置低), 延时100ms
  • DTR置高、RTS维持高
  • 程序下载
    在这里插入图片描述

2.2.1 DTR置低、RTS置高(对应DTR#置高、RTS#置低) 阶段

此时Q3和Q1都导通,BOOT0为高电平,RESET为低电平,STM32此时进入BootLoader,为烧录程序做准备。下图为仿真图,注意在仿真的时候需要将RESET的上拉电阻和BOOT0的下拉电阻画上, 不然很难分析出BOOT0和RESET的电平变化。
在这里插入图片描述

2.2.2 DTR置高、RTS置高(对应DTR#置低、RTS#置低) 阶段

此时Q3导通,Q1截止,BOOT0为高电平,RESET为高电平,释放复位。下图为仿真图
在这里插入图片描述
经过这两步后就可以通过串口下载代码了

2.3 疑问点

2.3.1 为什么需要将两个三极管连接在一起?

这是因为Q3在这里其主导作用,当RTS#为低电平时,给Q2的射极提供了一个电平,若RTS#为高电平,此时不管DTR#为任何电平,Q2都不会导通,此时RESET为高电平。下图为仿真结果
在这里插入图片描述
在这里插入图片描述

2.3.2 为什么需要那个IN4148二极管?

这个二极管的作用我觉得是防止手动复位电路影响到ISP自动下载电路,目前的仿真结果看不出这个结论。至于是不是得实物调试,有知道的大佬也可以麻烦告诉我

2.3.3 下载完成后RTS#是不是会自动变为高电平?

理论上在下载程序后需要将BOOT0拉低, 此时需要Q3截止,那就是需要RTS#为高电平,但是我们冲上位机下载日志中没看出这个调试信息, 具体得看实物的电平。

参考资料

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零涂

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值