一,为什么要设计复位电路?
电源接通到电源稳定期间,单片机发布命令,出现误动作。一个成熟的产品是大概率需要复位的
在产品调试阶段,软件代码出现问题,指针运行错误或者进入中断程序出不来,需要经常复位软件, 有些工程师也会采用软件复位, 不过软件复位没有硬件复位来的快捷。
二,复位电路实际做了些什么?
1.复位使单片机具有初始的固定状态:
- 复位脉冲信号使PC指针指向0000H单元;
- 复位脉冲信号使SFR得到固定的初始值。
三,复位电路前提需要什么?
1.复位信号
- 硬件复位需要高低电平;
- 软件复位需要设置寄存器;
-
看门狗复位需要配置寄存器。
2.STM32复位脚电气特性
- 由STM32的数据手册可知,复位管脚低电平电压需要小于0.8V,输入脉冲时间为100ns。所 以只需要在NRST管脚给小于0.8V的电压,持续时间为100ns就可以实现复位了。
3.CPU正常工作:复位操作需要设计PC寄存器。
4.晶振正常工作:为CPU提供时钟频率,供给能量让CPU动起来。
5.电源正常工作:不能有所波动,电源要稳定工作。
6.复位信号是不是只要满足低电平时间大于100ns就可以呢?
- 试想一下如果只给100nS,那么此时是由复位信号了, 但是电源还没到VCC,晶振还没起振? 这一定存在的,因为上电时,Vcc 的上升时间约为 10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为 10MHz,起振时间为 1ms;晶振频率为 1MHz,起振时间则为 10ms。目前STM32单片机大部分采用8M高速晶振,那么主要问题出在电源的上升时间,为了保证系统的稳定性, 这里我们取2倍,20ms的低电平时间。
四,设计复位电路?
1.目前市面上的复位电路大部分采用RC复位,这种方式成本低廉,稳定性好,被用于大部分的设计中。
2.电容充电:电荷在电容器极板上聚集的过程叫做充电过程,这个过程不是瞬间完成的,而是需要一段时间,时间取决于电路的组成元件。
3.基本RC充电电路
开关闭合,电子在电源的作用下从位于电容顶部的极板沿电路移动并聚集到位于底部的极板上,导致在顶部极板聚集了正电荷,在底部极板聚集了负电荷。 开始时,电子的转移非常迅速,随后由于两个极板间产生的电压逐渐接近于所加的电源电压,移动速度减慢。最终,当电容两个极板间的电压达到所加的电源电压时,电子移动过程停止,这时候,极板上的净电荷是:
C=Q/U 得到Q=CU=CE
电荷在极板上聚集的过程叫做瞬态过程 —— 电压或者电流从一个稳态到另一个稳态的过程。电压-时间变化过程曲线如下图所示
从上图中可以看出, t=0s时,电容器两端电压是 0V;一开始,电荷聚集的速度很快,导致电压急剧增加。随着时间的推移,电荷聚集的速度减慢,导致电压变化的速率也减缓,即电压继续增加,但速率变慢。最终,由于极板间电压接近外加电压,充电速率极低,直到极板间电压等于外加电压 —— 瞬态过程结束。
可以用数学中的指数函数来描述上述过程
式中:
- vc用小写斜体来表示,因为它是随时间变化的,不是常数;
- 指数写为时间(t)除以常数涛,涛称作时间常数,定义为:
涛=RC (S) - t=0S 时, vc=0;
- t=涛S 时, vc=0.632E;
- t=2涛S 时, vc=0.865E;
- t=3涛S 时, vc=0.993E;
-
可以得出:在直流电源作用的电路中,电容器两端的电压在经过5个时间常数后基本等于外部电压,即充电过程基本结束。
或者:一个电容的瞬态或充电过程在经历5个时间常数后便基本结束。
电流-时间变化过程下图所示:
4.关于时间常数涛
时间常数涛不可能为0,因为在容性电路中总会存在一定的电阻。在有些情况下,涛的值可能很小,但是无论多小,5倍涛的值一定存在,不可能为0。因此可以得出:电容两端的电压不能瞬间改变。
更进一步的说,电容的大小反映了电容电压变化的程度。电容越大,时间常数越大,电容两端的电压达到所加电压的时间就会越长。这在避雷针和浪涌抑制器的设计上非常有帮助,避雷针和浪涌抑制器是用来保护电路以免电路受到不可预知的过电压的损害。
五.STM32单片机复位电路设计
1.复位原理
可以根据上述的RC充电原理,采用一个电阻和一个电容串联,中间段连接至STM32的复位管脚。为了保证复位的时间很短,由上述曲线可知,当在一个时间常数时,电压为电源电压的0.632倍,若VCC=3.3V,那么一个时间常数时电压为:3.3*0.632= 2.0856,RC假设100mS, 可选择R=10K,C=10uF。则20ms时,充电电压大概为0.4V左右。
2.原理图设计
按照我们上面说的理论,其实有两种方式,如下图所示,那么哪种才是我们想要的呢?下图两者的区别在于电容的电阻的位置不同, 由于电容两端的电压不能突变,当刚上电时,A电路为低电平,此时单片机复位,直到保持到1个时间常数后,NRST为高电平,而B电路,一上电为高电平,1个时间常数后NRST管脚为低电平, 并且一直保持低电平, 这样会导致MCU一直复位,所以正确的电路应该A电路,而B电路适合用于高电平复位的MCU。
下图为上电自动复位电路, 如果需要加手动复位的话也和简单,只需要在AB电路的电容两端并联一个按键,当按键按下时,A图中的NRST为低电平,MCU复位,B电路为高电平。