这两天在学习stm32最小系统板的时候 对这一部分特别的不理解 于是就去找了很多东西去看
先说一键下载电路吧 先引用一张正点原子的原理图:
在芯片手册上查找ch340的手册,上面对于 RTS与DTR的定义是这样的 :
这就说明 我们是可以去控制RTS与DTR的一个高低电平的 从而间接的控制Q2、Q3两个三极管的开关 这样一来BOOT0的高低电平也是会受我们的控制的
这里先插入一点 就是stm32下载程序所需要的条件(芯片手册有提到)
这里面我们只需要知道当BOOT0为0 (BOOT1是0/1都无所谓)的时候stm32正常工作,当BOOT0为1 BOOT1为0的时候stm32会进入下载模式,这个时候我们就可以烧录程序进去了
为了简化电路设计 BOOT1直接接地(BOOT1为0) 这样我们只需要控制BOOT0的高低电平就可以控制stm32的下载模式或者正常运行模式了。
我们可以让DTR输出高电平 RTS输出低电平 NPN管Q2导通 可以看做导线 此时Q3也就会导通,BOOT0输出为1 stm32进入下载模式。
我们也可以DTR输出低电平,NPN管Q2截止,Q3也会截止,BOOT0输出为0,stm32进入正常运行模式。
你以为这么简单就完了?其实stm32下载程序的时候是需要复位的,当BOOT0为1 BOOT1为0时stm32进入下载模式,需要给stm32的复位管脚NRST输入一个低电平,让单片机复位,要能一键下载,复位电路是肯定少不了的。查询stm32的芯片手册,我们又知道了管脚NRST的低电平得小于0.8V并且持续100ns,这样一来单片机实现复位了。
这里还是放一张正点原子的手动复位电路原理图
这两个RESET的信号都会连接到NRST,简单理解就是说当RESET输出低电平小于0.8V并且持续100ns,stm32就会复位,先说上图,这个算是一个手动复位RC充电电路,上电的瞬间,电容C12两端电压可以认为是0,RESET会输出低电平,stm32处于复位状态,VCC3.3通过电阻R3给电容充电,当电容C12的电压升高到0.8V以上,stm32退出复位状态进入运行状态。当我们需要手动复位的时候只需要按下按钮,让电容放电,松手后就会重复上述流程,stm32会进行一次复位。
其实复位电路不止这一个,还记得一键下载也需要复位吗,如下图(和上面的是重复的,嘿嘿不用翻上去看了。)
进入下载模式后stm32需要复位才能下载,我们可以让DTR输出高电平 RTS输出低电平 NPN管Q2导通,可以看做导线,Q2的发射集又与RTS相连(RTS低电平,近似于接地),这个时候大部分电压都在R46上面,RESET输出低电平 此时Q3也就会导通,BOOT0输出为1,stm32进入下载模式。
我当时其实是不理解为什么RESET会输出低电平,但是其实原理很简单,附上一张自己理解后画的图
这里我把这两个引脚连接起来了,为了方便理解(两张图原理是一样的),后面还是会以正点原子的原理图来进行讲解。开关二极管1N484的阴极因为Q2的导通、大部分电压落在R46上面,二极管的阴极电压被拉的很低,二极管的阳极相当于只加了0.62V(1N484的管压降是0.62V),还是低电平(因为二极管导通,在我画的这个图上面来看 R6会多吃掉一点3.3V的电压,让二极管的阳极能从一个高电平到一个低电压的状态),这个是导通的时候,RESET会输出低电平。
当DTR输出低电平,NPN管Q2截止,相当于电阻无穷大,大部分电压都给三极管吃掉了,二极管的阴极是高电平,二极管的阳极也是高电平,所以二极管会截止。Q3也会截止,BOOT0输出为0,stm32进入正常运行模式。有个魔鬼细节,就是说进入正常模式后也需要复位,而C12电容在二极管导通的时候,电容的电是放完了的,当BOOT0输出为0,stm32进入正常运行模式的时候,电容是在充电的,RESET会输出低电平,stm32复位。
水平有限,有理解不对的地方望纠正。
参考资料
【stm32】一键下载电路文章来源:https://www.toymoban.com/news/detail-422398.html
STM32 复位电路设计文章来源地址https://www.toymoban.com/news/detail-422398.html
到了这里,关于STM32的一键下载CH340 DTR RTS与复位电路NRST的学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!