【好书共读——《电子硬件工程师入职图解手册》分享】——③设备复位知识讨论
<div class='showpostmsg'><p align="center"><span style="font-size:22px;"><b>设备复位知识讨论</b></span></p><p> </p>
<p> 设备复位指利用信号将微控制器(CPU或单片机)恢复到初始状态,类似于计算器“清零”。复位信号的主要作用是让系统可以稳定工作,避免进入到异常工作状态。一般的,复位可以分为冷启动复位和热启动复位。冷启动复位,比如系统下电后重新上电复位,这种复位方式会使系统从ISP监控程序区开始执行程序。热启动复位,如外部RST引脚复位,内部看门狗复位,寄存器复位等,这种复位方式会从用户程序区开始执行程序。有时,也会根据操作方式对其进行分类,如硬件复位和软件复位。</p>
<p> 复位信号一般是持续一个特定时间的高电平或低电平的脉冲信号。常用的复位信号有高电平复位和低电平复位,一般采用电容、电阻、轻触开关与MCU的RST脚连接,R和C的选择一般与上电复位时序有关,τ=RC。其电路如图1所示,左图为高电平复位,右图为低电平复位。</p>
<p align="center"> </p>
<p align="center">图 1</p>
<p> 在日常工作中,我们使用的单片机、DSP、CPLD、FPGA都需要用到复位电路。单片机、DSP、CPLD都具有外部RST引脚,以便复位信号输入,如STC89C51、STM32、MSP430、LPC1788、GD32、TM4C等微处理器。不同类型的MCU上电时序不同,复位所需时间不同,有的微处理器只需要250ns即可复位成功,而有的则需要4.5ms以上才能复位成功。而FPGA则没有默认的RST引脚,需要工程师将某个引脚自定义为RST脚,并将其接到外部的复位电路上,一般采用低电平有效。</p>
<p> 常用的复位方式还有外部看门狗复位,当MCU运行过程中,由于运算数据量较大、通信协议帧过长,有时会出现程序运行不稳定、程序跑飞或者宕机等现象,此时就需要看门狗复位将其恢复正常。有的MCU内部自带看门狗复位器,如STM32、MSP430等,有的MCU内部无看门狗寄存器。但是MCU自带的看门狗采用程序控制,也存在出错的风险,为了让MCU自己恢复正常,就有了看门狗芯片。看门狗芯片原理:如果看门狗在一定时间内没有检测到看门MCU发送的脉冲信号,则看门狗认为MCU出故障了,就会发送复位信号,俗称“喂狗”(<b>此处,本书中描述存在略微错误</b>)。常用的看门狗芯片有:常用的看门狗芯片品牌有Microchip、Texas Instruments、Maxim Integrated等,常用的型号有ATmega328、DS1802、TCA8418、TPL5010、MAX6710等。他们可以用于监控系统的运行状态,当系统出现故障或崩溃时,可以自动重启系统,确保系统的稳定性和安全性。</p>
<p> 在工作中,工程师尝尝会遇到MCU复位失效导致系统死机、系统反复重启、崩溃、出错等问题,按键复位和看门狗定时器(WDT)复位功能失效,导致系统无法正常复位和恢复。这些问题可能与外部复位电路设计不当、外部复位信号干扰、复位后的初始化过程异常、电源异常或看门狗定时器异常等。因此,复位电路对系统有着至关重要的作用。在单片机上电时,如果复位电路设计不当或者上电复位信号出现问题,可能导致MCU无法正常复位,从而影响系统的稳定性和可靠性。</p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>
页:
[1]