在单片机的使用中,经常会接触到复位电路,它是单片机最小系统重要的一个构成部分。同样它也是非常重要的一部分。 复位就是让单片机从初始化状态开始重新运行,即程序从头开始执行。复位电路设计的好坏,直接影响整个系统是否稳定可靠。复位电路与单片机的RESET/NRST引脚相连,拿STM32系列单片机举例,当系统正常工作时,如果RESET引脚电压低于某一阈值,则单片机进入复位状态。单片机的复位可分为低电平复位和高电平复位,这是由厂家决定的,区分的方式可以看数据手册,手册中的复位章节会写清楚是什么电平复位。单片机的复位可以分为:上电复位、掉电复位、软件复位、外部手动复位等。 上电复位:单片机每次上电都会给RESET脚一个复位信号,让单片机从一个固定的相同状态重新开始工作;
掉电复位:单片机复位引脚电压低于某一阈值电位时,单片机会进入复位状态。 软件复位:程序员执行某一特定的复位指令,来使单片机进行复位,或者当程序在一定时间失去响应的情况下通过看门狗电路控制单片机进行复位。 外部手动复位可以通过一个复位按键让死机或跑飞的程序重新运行。 下面我们一起看一下常见的几种复位电路。 图1 图2 图1是最常见的低电平上电复位原理图,我们来分析这个过程,上电前电容两端电压为0。上电后,电流从3.3V流经电阻、电容到地,由于电容两端电压不能突变,所以上电瞬间RESET脚上电压也为零,并保持一小段时间低电平,这段时间触发单片机复位;随着时间推移,电容两端电压太高超过某一阈值电位,复位完成。这个电阻、电容的取值大小影响到复位引脚电平的上升时间(电容的充电时间)。 图2 手动按键复位原理图,手动按钮复位在GND和RESET之间接一个按钮。当人为按下按钮时, RESET脚就会被GND拉为低电平,使单片机进入复位状态,如果手不松掉,那么会一直处于复位状态,直至手松掉之后,复位引脚电平恢复。 ST单片机内部的复位波形,上电的时候VDD大于Vpor并持续一定的时间,单片机脱离复位状态,掉电的时候Vdd电压低于Vpdr电压,单片机进行复位。 软件复位也分两种,我们可以使用复位指令,直接使单片机进行复位,另外一种使用单片机内置看门狗,配置启动看门狗,在主循环程序中每隔一定地时间刷新看门狗,俗称喂狗。如果一定的时间没有喂狗,可以认为程序跑飞,则看门狗模块会复位单片机,内置看门狗又分窗口看门狗和独立看门狗,区别如下: 时钟不同 1、独立看门狗:独立看门狗使用的是内部专门的 40Khz低速时钟,不需要使能时钟操作。 2、窗口看门狗:窗口看门狗使用的是 PCLK1的时钟,使用前需要先使能时钟。 中断不同 1、独立看门狗:独立看门狗没有中断,超时直接复位。 2、窗口看门狗:窗口看门狗可以在中断中做复位前的函数操作,比如报错一些数据等。 使用场景不同 1、独立看门狗:独立看门狗一般用于避免程序跑飞或者死循环。 2、窗口看门狗:窗口看门狗避免程序不安预定逻辑执行,比如先于理想环境完成,或者后于极限时间超时。 当然复位衍生出来的电路形态可能不止上述的两种,但是基本上都是围绕上述的电路进行变换,最后强调一点,RESET的走线越短越好,复位电路一定要尽可能靠近MCU, 因为复位电路到单片机这一段的走线,可能会引入其他外界因素的干扰,是单片机处于不稳定的状态。关于复位的内容就跟大家分享到这里,大家有没有遇到过关于一些复位引起的问题呢?
|