一种微控制器异常强制复位的看门狗电路
技术领域
本实用新型涉及嵌入式***中微控制器(MCU)软件跑飞时的复位和硬件死锁情况下的强制复位电路。
背景技术
在嵌入式***中微控制器(MCU)因受到外界干扰或其它原因影响,常会出现死机或程序跑飞的现象,造成产品不能正常工作。业界使用看门狗技术来解决这一问题,通过看门狗将死机或跑飞的***复位并使其正常工作。看门狗分为微控制器内部看门狗和外部看门狗。内部看门狗是利用MCU内部资源实现的,包括内部专用看门狗或使用内部定时器实现看门狗功能。开启看门狗功能后,MCU要通过软件定期的对定时器重新赋初值或清零(喂狗),一旦MCU异常,定时器将溢出,内部硬件会自动对MCU进行复位操作。外部看门狗是指在MCU外部增加看门狗芯片或电路实现看门狗功能的情况。目前基本上都使用外部专用看门狗芯片,极个别产品会使用外部自行设计的看门狗电路。因为看门狗芯片已经能满足常规的MCU异常时的复位需求。外部看门狗在上电时即开启,MCU需要通过IO引脚的电平变化来实现喂狗功能,一旦MCU异常,喂狗控制脚变化超时,外部看门狗将产生复位信号,复位信号加到MCU的外部复位脚,使***复位。
外置的专用看门狗芯片或电路实际上是一个特殊的定时器,当定时时间到时,发出溢出脉冲,该脉冲输入到单片机的外部复位引脚上,从而实现***复位。软件在主程序循环中适时地执行喂狗操作(通过控制引脚变化来清除外部看门狗),保证***正常运行时看门狗不溢出;而当***运行异常时,看门狗超时发出溢出脉冲,通过单片机的RESET引脚使单片机复位。这种方式相比内部硬件看门狗及软件看门狗更加可靠,不存在因为上电复位失败而导致内部看门狗及软件看门狗失效的可能,缺点是需要外配芯片或电路。 目前常用的集成看门狗电路很多,如DS1232、MAX705~708、MAX791等。图1是DS1232芯片与AT89C52芯片的电路图,单片机通过P3.3脚控制DS1232的喂狗信号,该喂狗信号在主程序的适当时机给出,保证DS1232芯片不溢出,RST脚则保持为低电平;当单片机死机时,P3.3脚不再给出喂狗脉冲,则DS1232定时到时后RST脚输出高电平脉冲将单片机复位。
现有的看门狗电路,存在如下缺陷:
1、MCU内部看门狗在软件未将该功能开启时将不起作用。内部看门狗在MCU死锁时将失效。
2、外部看门狗喂狗引脚设计为低电平有效或高电平有效,当MCU死机时喂狗脚的状态是不定的。如果与外部看门狗喂狗引脚的有效电平一致,将导致外部看门狗失效。
3、外部看门狗喂狗条件简单,一般为高低电平变化即可,在***受到干扰或MCU软件异常时容易错误的产生喂狗条件,使外部看门狗不能正常工作。
4、外部看门狗复位信号直接连接到MCU的复位脚上,在MCU死锁时,MCU已经内部保护起来,通过该引脚已经不能正常复位MCU。
5、外部看门狗为与MCU复位脚配合使用,复位电平有效时间都比较短,一般在毫秒级,不适合用于进行断电复位。***中都含有较大的电容,毫秒级的停电不能有效的将存储的电量消耗掉,因此不能实现断电复位。
实用新型内容
本实用新型的目的在于提供一种可靠的微控制器异常强制复位的看门狗电路,使MCU不管在软件跑飞和死锁情况下,均能有效的对***进行复位,从而保证***、产品的可靠运行。
本实用新型所述的微控制器异常强制复位的看门狗电路,包括第一CD4017计数器模块,第二CD4017计数器模块,555振荡器电路模块和电平转换电路模块;
所述电平转换电路,用于将MCU输入的喂狗信号的电压转换成与第一CD4017计数器相匹配的电压,其输入端连接MCU喂狗信号的输出脚,其输出端连接第一CD4017计数器模块的脉冲输入脚(CLK脚),将经电平转换电路转换后的喂狗信号输入到第一CD4017计数器模块;
所述555振荡器电路模块,用于生成周期性的脉冲信号,并将生成的脉冲信号输送到第一CD4017计数器模块的复位脚(RST脚)和第二CD4017计数器模块的脉冲输入脚(CLK脚);
所述第一CD4017计数器模块,其脉冲输入脚(CLK脚)连接电平转换模块的输出端,复位脚(RST脚)则与555振荡器电路模块的输出端连接,其数据输出脚Q8脚则连接到第二CD4017计数器模块的复位脚(RST脚);其将十个喂狗脉冲,转成一个脉冲信号提供给第二计数器作为复位信号;
第二CD4017计数器模块,其频率输入脚(CLK脚)连接555振荡器电路模块的输出端,其复位脚(RST脚)连接第一CD4017技术器模块的数据输出脚Q8,其数据输出脚Q9则连接到控制MCU工作的电源电路,通过电源电路控制对MCU的供电和停电;其接收555振动器电路模块的脉冲信号和第一CD4017计数器模块的复位信号,控制MCU的供电和停电。
555振荡器电路模块,可以产生任意占空比和周期的脉冲信号,该脉冲信号为第二CD4017计数器模块提供脉冲输入,同时每个脉冲的高电平将第一CD4017计数器模块复位,第一CD4017计数器模块的RST脚高电平有效。
当第二CD4017计数器模块的复位脚(RST)始终保持低电平,即未执行有效的喂狗时,555振荡器电路模块产生的连续9个脉冲可使第二CD4017计数器模块的数据输出脚Q9从低电平变为高电平,此时MCU电源电路可关断MCU的供电,看门狗执行断电功能。延时到555振荡器电路模块的一个周期后,产生的第10个脉冲可使第二CD4017计数器模块的数据输出脚Q9从高电平变为低电平,此时MCU电源电路对MCU及其它元件将重新上电,此时看门狗执行完断电复位功能。MCU正常运行时要在555振荡器电路模块输出低电平的时间内连续通过喂狗信号输入脚(WatchDog)向看门狗电路输入10个脉冲,使第一CD4017计数器模块的数据输出脚Q8产生1个高电平脉冲,该高电平脉冲施加到第二CD4017计数器模块的复位脚(RST)使第二CD4017计数器模块复位(重新计数),这样是一次有效的喂狗。只要在555振荡器电路模块的前8个脉冲内执行过1次有效的喂狗,第二CD4017计数器模块才会重新计数,这样降低了MCU程序的复杂程度。
本实用新型所述的看门狗电路,克服了普通看门狗喂狗条件简单,容易被误喂狗的缺点,同时由于脉冲周期可以自行调整,可以实现较长时间的断电强制复位功能,是非常实用及有效的MCU监视电路。经过工业生产中的应用测试,证明能有效的解决程序跑飞及死锁现象。
本实用新型所述的看门狗电路,喂狗电平要求在固定时间内连续10个脉冲信号才有效。提高喂狗的复杂性,使异常和干扰引起的喂狗引脚的电平变化不可能与有效喂狗信号一致,从而避免产生误喂狗现象,使看门狗失效。
同时,其看门狗执行复位时不通过MCU的复位引脚复位,而是采用直接断电、延时、重新上电的强制复位方式。这样不管是软件跑飞还是死锁现象,都可以实现有效的复位。
附图说明
图1是一种现有看门狗电路的示意图。
图2是本实用新型所述看门狗电路的示意图。
图3是LM2575-3.3稳压器模块电路图。
具体实施方式
如图2,一种看门狗电路,包括第一CD4017计数器模块,第二CD4017计数器模块,555振荡器电路模块和电平转换电路模块;所述电平转换电路,用于将MCU输入的喂狗信号的电压转换成与第一CD4017计数器模块相匹配的电压,其输入端连接MCU喂狗信号的输出脚,其输出端连接第一CD4017计数器模块的脉冲输入脚(CLK脚),将经电平转换电路转换后的喂狗信号输入到第一CD4017计数器模块;所述555振荡器电路模块,用于生成脉冲信号,并将生成的脉冲信号输送到第一CD4017计数器模块的复位脚(RST脚)和第二CD4017计数器模块的脉冲输入脚(CLK脚);所述第一CD4017计数器模块,其脉冲输入脚(CLK脚)连接电平转换模块得输出端,复位脚(RST脚)则与555振荡器电路模块的输出端连接,其数据输出脚Q8脚则连接到第二CD4017计数器模块的复位脚(RST脚);第二CD4017计数器模块,其脉冲输入脚(CLK脚)连接555振荡器电路模块的输出端,其复位脚(RST脚)连接第一CD4017技术器模块的数据输出脚Q8,其数据输出脚Q9则连接到控制MCU工作的电源电路,通过电源电路控制对MCU的供电。
所述555振荡器电路模块为基本的555振荡器电路,其包括ICM7555芯片,在ICM7555芯片的第5脚(Cvolt)和GND端之间连接电容C602,在THR端与GND端之间连接电容C601,在R端与VCC端连接,TRIG端与THR端连接,在DIS端与GND之间连接R602,在DIS端与VCC端之间连接R601。通过调整R601、R602、C601的参数可以产生任意占空比和周期的脉冲。
所述电平转换电路模块为开关三极管电路,Watch_Dog输入低电平时,输出为高电平+12V,与第一CD4017计数器电源相匹配;Watch_Dog输入高电平时,输出为低电平。
第二CD4017计数器模块的数据输出脚Q9可连接LM2575-3.3稳压器的第5脚,通过LM2575-3.3稳压器模块控制MCU的供电,如图3。当第二CD4017计数器模块的数据输出脚Q9输出电平为高电平时,执行关断功能,将+3.3V电压关断,此时由+3.3V供电的MCU及其它元件将停电,此时看门狗执行停电功能。
当延时到555振荡器电路模块的一个周期后,产生的第10个脉冲可使第二CD4017计数器模块的数据输出脚Q9从高电平变为低电平,此时LM2575-3.3的第5脚为低电平,其关断功能失效,+3.3V电压将继续供电,此时由+3.3V供电的MCU及其它元件将重新供电运行,此时看门狗执行完断电复位功能。