本发明属于复位电路技术领域,具体涉及一种外部看门狗与程序烧录互不干扰电路。
背景技术:
由于单片机自身抗干扰能力的限制,以及各种因素的干扰影响,单片机在使用中容易出现死机,虽然可以增加各种看门狗复位电路,保障单片机在死机情况下自动重启;但在进行程序烧录时,单片机复位引脚nrst会出现电平由高到低的变化,然后低到高的变化,要使该引脚正常电平变化,必须要使该引脚电平在低电平时电压值低于0.8v,高电平时电压值高于2v,同时在复位引脚拉低时,复位引脚在低电平要维持一段时间tnrst,该复位引脚才能正常使用;由于单片机复位引脚和看门狗芯片复位输出引脚都存在等效电阻rpu和rwdg,以及nrst复位引脚外部连接有阻容复位电路(图1中的r4和c4组成的阻容复位电路),在匹配电阻r1值为0或者此电阻值不经过计算时,在程序烧录时,复位引脚nrst电平进行高低电平变化,但是维持低电平的时间大于单片机复位引脚复位的时间,进而在有看门狗电路运行的情况下烧录程序,导致程序无法烧录成功;目前常见的操作方式采用跳线电阻将看门狗复位引脚断开,或者采用专用烧录器工具事先烧录程序到芯片中,以上方式在后续程序升级优化等情况下再烧录程序时,导致程序无法烧录成功,不利于后期设备的调试和维护,也不利于设备智能化。
技术实现要素:
本发明的目的是提供一种给单片机使用的看门狗复位电路,既能在单片机死机的情况下,外部看门狗电路能自动响应运行让单片机复位重启,同时又能在电路板完整的情况下进行后续的程序升级或优化。
为了达到上述目的,本发明通过以下技术方案来实现:
一种外部看门狗与程序烧录互不干扰电路,包括单片机、外部看门狗芯片和与单片机连接的程序烧录接口,所述单片机的复位引脚nrst连接阻容复位电路,还包括匹配电阻r1,所述匹配电阻r1的一端连接单片机的复位引脚nrst,另一端与看门狗芯片的复位输出脚/neset相连,使单片机的复位引脚nrst的高低电平的电压值满足芯片定义的高低电平范围值,持续低电平的时间要大于单片机复位引脚nrst的要求的最小复位持续时间,以输入电压vcc为3.3v为例,芯片数据手册规定,复位引脚nrst的高电平的电压值在0.7vcc-vcc范围,而低电平则为低于0.8v,单片机复位引脚nrst持续低电平>tnrst,tnrst为单片机在低电平的最小复位持续时间。
优选地,所述匹配电阻的计算方法包括:单片机复位引脚nrst处于低电平,此时匹配电阻r1计算公式为:1/r=1/(r1+rwdg)+1/r4+1/rpu,rpu为单片机的复位引脚nrst的内部等效上拉电阻,r为整个电路的等效电阻,rwdg为看门狗芯片复位输出脚/neset的内部等效电阻,r4为阻容复位电路的电阻。
优选地,所述看门狗芯片复位输出脚/neset的内部等效电阻rwdg的计算方法:首先设定匹配电阻r1取值为0,通过看门狗手动复位引脚/mr的电平值置低,此时看门狗芯片复位输出脚/neset引脚输出低电平,从而阻容复位电路的电阻r4和看门狗芯片复位输出脚/neset的内部等效电阻rwdg形成串联电路,测量阻容复位电路的电阻r4上的电压,通过电阻串联后的分压特性,计算得到rwdg值。
优选地,所述整个电路的等效电阻r的计算方法为:通过阻容复位电路的电容c4充放电过程中的某一时刻t的电压值vt的计算公式,计算整个电路的等效电阻r值,vt计算公式为:vt=v0+(vu-v0)*[1-exp(-t/rc)],其中,v0为阻容复位电路的电容c4上的初始电压值,vu为电容c4充满终止电压值,c为电容c4的电容值,t的取值条件为t<tnrst,tnrst为单片机在低电平的最小复位时间。
优选地,所述阻容复位电路的电容c4充电过程,初始状态下,v0=0,充电极限电压vu,故在任意时刻t,在电压值为vt时所需要的时间值为:t=rcln[e/(vu-vt)];所述阻容复位电路的电容c4放电过程,放电前电容c4电压为,直至放完电时vu=0v,故在任意时刻t,在电压值为vt时所需要的时间t=rcln[v0/vt]。
本发明有意技术效果:通过单片机nrst复位引脚高低电平的范围值的情况,结合等效电阻r4、rpu和rwdg以及nrst引脚低电平值维持时间t范围值计算出匹配电阻r1的值(此值属于一个范围值),再结合rc电路计算出单片机复位引脚在低电平维持的时间,使得单片机的复位引脚nrst的高低电平的电压值和持续低电平的时间满足单片机复位引脚nrst的复位要求,从而实现在程序烧录中,不受看门狗电路和外围匹配的阻容值影响,亦无需修改或变动电路板任何器件或布局,即可进行程序升级烧录。
附图说明
图1是本发明的电路示意图;
图2是本发明的实施例中整体电路等效电阻r的等效电路;
图3是本发明的实施例中计算电阻rwdg时的等效电路。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
下面结合附图,对本申请的实施作进一步的详细描述:
如图1所示,一种外部看门狗与程序烧录互不干扰电路,包括单片机ic1、外部看门狗芯片u1和与单片机连接的程序烧录接口p1,所述单片机的复位引脚nrst连接阻容复位电路,还包括匹配电阻r1,所述匹配电阻r1的一端连接单片机的复位引脚nrst,另一端与看门狗芯片的复位输出脚/neset相连,两个芯片的供电电压均是3.3v。
由于单片机ic1中复位引脚nrst内部存在等效上拉电阻rpu,通过芯片数据手册可以查询到,rpu值在30k到50k之间,典型电阻值为40k,外部看门狗u1芯片的/neset引脚内部存在等效上拉或等效下拉电阻rwdg。
在正常使用情况下,在外部看门狗芯片u1中,看门狗输入引脚wdi平时处于中间电平状态,既不是高电平又不是低电平,因此正常情况下,外部看门狗芯片u1的/reset引脚电平处于高电平状态,电平为3.3v。在单片机中,由于其nrst引脚外部有阻容复位电路,电阻r4上拉接至3.3v,电容c4下拉接至地,此nrst引脚电平在3.3v,处于高电平状态。
在采用p1接口给单片机升级烧录代码的时候,boot0通过电阻接地,同时复位引脚nrst能实现高低电平变化,从单片机芯片数据手册可知nrst引脚对于高低电平定义,高电平时2v到3.8v,低电平是-0.5v到0.8v,也就是说复位引脚nrst电压值从0v升到2v以上,复位引脚才算是高电平,芯片复位引脚正常,复位引脚nrst电压值从3.3v降到0.8v以下,复位引脚才算是低电平,同时要满足在复位引脚nrst在低电平维持一段时间,芯片复位引脚nrst才能复位。
在进行程序烧录时,复位引脚nrst会出现电平由高到低的变化,然后低到高的变化,要使该引脚正常电平变化,必须要使该引脚电平在低电平时电压值低于0.8v,高电平时电压值高于2v,同时在复位引脚拉低时,复位引脚在低电平要维持一段时间,该复位引脚才能正常使用;由于单片机复位引脚和看门狗芯片复位输出引脚都存在等效电阻rpu和rwdg,以及nrst复位引脚外部连接有阻容复位电路(图示的r4和c4组成的阻容复位电路),在r1电阻值为0或者不经过计算的电阻值时,在程序烧录时,复位引脚nrst电平进行高低电平变化,但是复位引脚nrst维持低电平的时间大于单片机复位引脚复位需要的时间,进而导致程序无法烧录。
另一种情况是看门狗输入引脚wdi电平处于高电平或者低电平,则看门狗芯片u1的/reset引脚处于低电平,在r1电阻值为0或者电阻值较低的情况下,复位引脚nrst处于低电平,因此,看门狗电路可以给单片机复位;在单片机ic1受到环境干扰程序运行异常或自身运行异常时,由于看门狗输入引脚wdi引脚电平由中间电平状态转变为高电平或者低电平时或者可通过按下s1手动复位按键,触发看门狗芯片u1的/reset引脚电平由高电平变成低电平,则复位引脚nrst引脚电流流向为3.3v经过r4,再经过r1流向地,此时复位引脚nrst引脚电平小于0.8v,但是由于看门狗的引脚/reset在维持低电平的时间为tpor,这个时间大于单片机的nrst复位引脚维持低电平的时间,单片机可以正常复位。
匹配电阻r1计算过程中,已知存在等效电阻rpu、rwdg和r4电阻值(可以取值10k或者5.1k或者根据电路实际情况取值),及复位电路电容值,因此通过单片机nrst复位引脚高低电平的范围值的情况,结合等效电阻r4、rpu和rwdg以及nrst引脚低电平值维持时间t范围值计算出电阻r1的值(此值属于一个范围值),再结合rc电路计算出单片机复位引脚在低电平维持的时间,使得单片机的复位引脚nrst的高低电平的电压值和持续低电平的时间满足单片机复位引脚nrst的复位要求。
通过实际的计算取值,确认r4,c4和r1的值,在采用p1接口烧录直接烧录ic1芯片程序时,程序烧录不受影响,同时外部看门狗电路也能正常使用。
匹配电阻r1的具体计算如下:
单片机在低电平的最小复位时间为tnrst,单片机在烧录程序时复位引脚在电平值从0v到0.7v的持续时间为t.设v0为电容c4上的初始电压值;vu为电容c4充满终止电压值;vt为任意时刻t,电容上的电压值。则:vt=v0+(vu-v0)*[1-exp(-t/rc)];这里的r为整个电路的等效电阻值,具体计算如下:
在初始情况下,v0=0,充电极限电压vu=3.3v,故在任何时刻t,电容上的电压值为:
vt=v0+(vu-v0)*[1-exp(-t/rc)],
由此反推计算出在电压值为vt时所需要的时间值为:
t=rcln[e/(vu-vt)];
在放电时间计算中,由于v0=3.3v,vu=0v,故在任意时刻t,
电容上的电压为:vt=3.3*exp(-t/rc),
由此反推计算出时间t:t=rcln[3.3/vt],
在本实例中,vt约等于1/3vu(也就是0.7v),以上exp()表示以e为底的指数;ln()是e为底的对数,其中在电平从0到3.3v或者电压值从0.8v到0v这个过程中时间t要小于tnrst,才能保证在单片机烧录程序时,看门狗芯片和外围的rc复位电容不会影响到程序烧录。
在上述计算公式中,c为c4,由于r4,c4取值已知,nrst引脚内部存在等效上拉电阻rpu可通过单片机芯片手册得知,首先设定匹配电阻r1取值为0,通过看门狗手动复位引脚/mr的电平值置低,此时看门狗芯片复位输出脚/neset引脚输出低电平,从而阻容复位电路的电阻r4和看门狗芯片复位输出脚/neset的内部等效电阻rwdg形成串联电路(等效电路如图3所示),测量阻容复位电路的电阻r4上的电压,通过电阻串联后的分压特性,计算得到rwdg值。
由于计算r1的取值是在复位引脚nrst处于低电平时,以及通过上述充放电的公式计算出r的值,因此可以计算出r1的电阻值。
这里计算r1的步骤如下:
由于复位引脚nrst处于低电平,因此整个电路电流流向全部都是往单片机nrst内部引脚流入。因此,该电路中相当于三个电流流向(等效的电路图见图2所示),具体电阻计算为:1/r=1/(r1+rwdg)+1/r4+1/rpu;
通过这个公式计算出:r1=r*r4*rpu/(r4*rpu-r*rpu-r*r4)-rdwg;
因此,结合rc充放电计算出时间,再反推计算出r1的值,可以满足这个电路中电阻匹配,从而实现在程序烧录中,看门狗电路和外围匹配的阻容值不会影响程序烧录。
如图1所示,本申请采用stm32f103cbt6单片机芯片ic1,em6323+看门狗芯片u1,以及相应的电阻r4,r1,r3,c3,c4,轻触按键s1和烧录口p1组成实际电路进行实验验证。
1、在实验中可以进行复位电路电平测试,wdi引脚输入中间电平(如1.5v左右电平),测试得到u1的1脚处于3.3v高电平,ic1引脚nrst引脚电平>2v,则ic1芯片nrst引脚可以输出高电平,wdi引脚输入高(或低)电平(接3.3v或地),测试得到u1的1脚处于低电平,ic1引脚nrst引脚电平<0.8v,则ic1芯片nrst引脚电平为低电平。
2、按下按键s1,测试得到u1的/reset脚处于低电平,ic1引脚nrst引脚电平<0.8v,则ic1芯片nrst引脚电平为低电平。
通过上述步骤测试可知,外部看门狗对单片机进行复位时,复位引脚nrst电平可正常高低电平变化,在采用p1接口烧录程序时,单片机程序可进行正常烧录,复位引脚nrst电平可正常高低电平变化。