单片机电路中常用复位电路
电路一点通 2025-03-13

我们在很多的单片机电路中都会看到复位电路,如下所示:

以上是我们的STM32103C8T6最小系统板中的复位电路,以上为例,来研究下复位电路:

A.首先我们先看左边的复位电路:

把芯片的RESET复位信号通过一个按键和一个电容并联到地,上方接一个10k电阻到电源。

1.何为复位?

单片机复位电路的作用是:使单片机的状态处于初始化状态,让单片机的程序从头开始执行,

运行时钟处于稳定状态、各种寄存器、端口处于初始化状态等等。目的是让单片机能够稳定、正确的从头开始执行程序。

单片机有两种复位方式:一是高电平复位,二是低电平复位

四种常用的复位电路如下:

第一种:上电复位电路:

我们以高电平为例,这个电路是利用电容的充电来实现复位的,当电源接通的瞬间,

单片机复位端的电位与VCC相同,随着充电电流的减少,复位端的电位逐渐下降。直至电容充满电,复位端的电压变为低电平。

电路中R和C的值可以根据下面的式子计算,其中T是复位时间。

T=(1/9)R1C1

另一个反之。。。。。

计算公式:T=9*RC

第二种:按键复位电路:

我们一般通过数据手册可以查看芯片的高低电平复位;

第三种:加了二极管的按键复位电路:

第二个的的按键复位电路如果当电源因某种干扰瞬间断电时,由于C不能迅速将电荷放掉,待电源恢复时,单片机不能上电自动复位,导致程序运行失控。电源瞬间断电干扰会导致程序停止正常运行,形成程序“乱飞”或进入“死循环”。

如果有了这个二极管就可以快速将电容上的电压释放,保证复位信号正确无误。也能快速为下次复位做好准备。

  • 有个问题来了,二极管正向导向电源,这个电如何放掉?
  • 因为VCC断电后,电容两端的电压不能突变,对于高电平复位电路,上端变为0,那么下端会产生一个负电源电压,

    此时对于地来讲,地成为了高处,负电压成为低处,电压会通过地与二极管,电阻与reset负电压形成回路放掉。

    而对于低电平复位电路,RRESET此处的高电压通过二极管与电阻与地形成回路放掉电压。

    网络上对于复位有个很搞笑的段子如下:

    只要电源接通,那么这个电容就会“逐渐充满电”,这个过程必须要有,正是这个过程保证了CPU正确地“RESET”。

    当电容充满电之后我们把电源开关断开了,这个电容中的电“何去何从”呢?

    VCC和GND之间接了N多的器件,所有的器件都对它说:“把你那点电给我吧,我还能坚持一下。”

    电容说:“给你们没问题,可是我他娘脑袋上有个电阻挡我的财路,你们先别急,我慢慢把电放给你们。”

    当电容刚刚要把电通过那个上拉电阻放出来,电源开关突然又接通了。

    CPU开始冲电容吼:“孙子!你Y的那个充电过程怎么没啦?我还要复位呢!”

    电容不干了:“废话,我上次充的电还没放呢这他妈电源又通啦!”

    CPU急了:“那我怎么办?我得复位啊!”电容眼珠一翻:“管你Y怎么办,死去吧你!”

    第四种:用复位芯片复位电路:

    对于一些非常复杂的电路,为了让芯片正确复位,必须用一些复位芯片,能够保证其精确的复位。

    B.我们在来看下右边的电路:

    对于这个电路,我们首先要了解单片机的状态,如下:

    BOOT1接了一个下拉电阻,因此为低电平,为0,那么会产生第一种和第二种情况,

    当K2按下,BOOT0为高电平,1,从系统存贮器启动

    当不按下时,为0,从主闪存存贮器启动。

    那么这三种方式又是什么呢?

    1、主闪存存储器
    是STM32内置的Flash,一般我们使用JTAG或者SWD模式下载程序时,

    就是下载到这个里面,重启后也直接从这启动程序。

    2、系统存储器
    从系统存储器启动,这种模式启动的程序功能是由厂家设置的。

    一般来说,这种启动方式用的比较少。系统存储器是芯片内部一块特定的区域,

    STM32在出厂时,由ST在这个区域内部预置了一段BootLoader,也就是我们常说的ISP程序,

    这是一块ROM,出厂后无法修改。一般来说,我们选用这种启动模式时,是为了从串口下载程序,

    因为在厂家提供的BootLoader中,提供了串口下载程序的固件,

    可以通过这个BootLoader将程序下载到系统的Flash中。但是这个下载方式需要以下步骤:

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

    3、内置SRAM
    内置SRAM,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。

    假如我只修改了代码中一个小小的地方,然后就需要重新擦除整个Flash,比较的费时,

    可以考虑从这个模式启动代码(也就是STM32的内存中),用于快速的程序调试,等程序调试完成后,再将程序下载到Flash中。


声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 硬件
  • 原理图
  • 信号完整性
  • EMI
下载排行榜
更多
评测报告
更多
广告