关于复位电路的理解;
上面的这张图片只能说复位的一个概念,需要考虑的因素有两个地方,其中之一就是LDO的复位电压与MCU的复位电压,这两个都需要查询相应的datasheet。比如所用到的LDO芯片7A6150,
当然在这边还有几种不同的复位方式;比如软件复位,上电复位,
外部复位(External Reset)
它是影响时钟模块和所有内部电路,属于同步复位,但外部Reset引脚为逻辑低电平。在引脚变为低电平后,CPU的复位控制逻辑单元确认复位状态直到Reset释放。复位控制逻辑保持复位低电平状态,在额外512个时钟周期内。因为当复位引脚为低电平时与MCU执行复位命令是相互冲突的,因此复位引脚必须保证520时间周期内低电平才能保证外部复位被外部总线辨识出来。
上电复位(Power-on reset)
它是由外部总线产生的一种异步复位。单片机在电源电压VDD小于大约2.5V的时候复位,只要VDD电压不超过这个阈值,单片机就仍然保持复位状态。
电压跌落的时间大概在纳米级(如果一旦出现了,马上会复位)。因此监测上电复位不能单片机内部,因为小于这个电压单片机逻辑功能。
低电压复位(Low-Voltage Reset)
它是部分单片级内部监控器形成的异步复位,单片机电压小于一定触发值时,单片机开始复位。
低电压的复位电平是和供电电压相关的,会有一个波动:
软件复位(Software Reset)
它是由软件看门狗定时器超时引起的一个异步复位。如果要开启软件复位,必须要注意设置软件内部寄存器,使之有效。这个功能主要是用来防止程序跑飞。
双总线故障复位(Double Bus Fault Reset)
它是由双总线错误监视器产生的异步复位,它是总线错误的特殊状态会导致中止异常处理。
时钟丢失复位(Loss of Clock Reset)
它在参考时钟子模块消失的时候产生的同步复位。如果要使该复位有效,需要设置寄存器SYNCR。
关于更详细的外部Reset的资料可以这样描述(51单片机):
为了确保良好的外部复位和上电复位,复位脉冲宽度必须足够宽,我们要考虑以下两个参数来确定复位脉冲宽度:
tosc:振荡器才可达到Vih1或Vil1电压的时间。
tvddrise:电压VDD由10上升至90%的时间。
当这两个参数的条件得到满足时,还必须维持至少一定的机器周期来保证单片机内部的启动。
如果是不正常的复位的话:
如果要具体的计算,关于LDO的Reset可参考前面关于拉普拉斯变换的计算过程。
偷懒的话可以查表:
对于这张图片的红色标准的地方文字还是比较注意的地方,就是与MCU识别的时间搭好了相应的桥梁。
一般而言,我们的复位电路的应用如下所示;
计算公式如下图所示;
接下来需要思考的一个问题就是有哪些情况之下能够引起MCU复位呢?电源掉电,感性噪声,由于ESD相应的状况等等。
由于ESD引起的MCU复位效果;
曾经有一位彪悍的女同事,去了新单位后要确认一下静电电容到底能起多大的作用,能抗多大的静电,她把模块上所有的静电电容全部去掉,然后打一下静电,单片机就重启一下。
前面写过两篇文章是关于静电电容的
ESD电容问题
谈谈模块的的引脚布置和ESD问题
在这两篇以外举几个实例说明一下:
第一个例子是这样的,在打静电的时候测试EMC的性能(国内一般不这么BT的要做合成实验),出现了两个问题,第一个是单片机Reset了,第二个是某个频率段发射限值超标。
经过调查发现了原因是一个输出IC,由于是功率地,因此静电电容并没有直接打在地平面上,而是通过一根很长的PCB连线连接至地,因此阻抗比较高,这就变成了一跟天线,并且耦合至单片机,导致了单片机的Reset.
静电电容布线有三个原则,第一是必须给每个接插件引脚配上静电电容,第二是尽可能使得电容靠近接插件的引脚,第二个是尽可能使电容靠近地平面。
看下面一个例子,这次ESD直接把模块引脚打坏了
上例是在电容接到的是顶层一小块地,通过小的通孔连接后在内层连接地平面,距离过长,阻抗过高。
在某些极端情况下,ESD还会损坏MCU,特别是某些单片机有内部的稳压器,和它相近的IO口如果用来做输出而且没有很好的接静电电容(包括电容地没接好的情况)可能严重损坏单片机的稳压器,这会导致非常严重的结果。
还有一个值得注意的CAN的通讯口,一般高速的CAN不允许接大一些电容,这时候只能通过附加K级的电阻来防止信号耦合后损坏器件了,有钱的话可以选择TVS。
感性噪声引起MCU复位的情况;
曾经看到过一个很好的分析过程,把所有的内容都总结出来了。
在产品实验中,我们发现当部分电机启动的时候,单片机就Reset了。
继电器开关期间产生的噪声耦合到了MCU信号线路上。这种噪声引起了MCU电流注入/出,这种耦合噪音有足够高的转换率才会引起了微控制器的复位时的。
在系统设计的时候,是采用继电器来控制电机的,在出现问题后,我们做了实验,发现在继电器驱动电机过程中有以下的现象:
-电动机的电感产生负电压尖峰。
-在继电器的开关期间,继电器触点上产生了一些地弹电压。
由于这些地弹,电池电压(9~16V)和电机产生的电压尖峰综合效应,导致了继电器触点上的电压高达-36V的(在继电器上压敏电阻器加装了之后)。
在产品设计的时候,有继电器未安装,然后在继电器输出线与地线之间存在高阻抗(86千欧)。
在上述条件下,驱动电机的继电器开关时产生的电压变化,电容耦合到未安装的继电器的输出线和反馈线,而他们是通过高阻抗连接到MCU的引脚上的。
这种耦合噪声电流注入/出到MCU,如果耦合噪音摆率足够高,将会导致微控制器的Reset。
两个因素导致此问题:
1)首先是不同PCB层电容耦合通道,有助于提高容性耦合。
2)其次是一些反馈线电容器连接到信号地平面,也有助于增加从功率噪音源的电子地平面的耦合。
经验教训:
-良好的分配功率地和信号地,避免耦合噪声。
-避免在干扰源出来的任何线加电容到信号地。
-如果可能存在选择安装的器件,设置0欧姆电阻连接该器件的线到功率地,避免浮线。
对于以上的知识来说,从理论与应用现状详细的描述了MCU一些复位以及当中的应对策略。