单片机工程师经常按自己的经验和认知搭建系统硬件然后编写软件,功能调通和测试无异常就认为项目完成了。很少会是测量VDD实际情况做可靠性分析,VDD上电、掉电时比较容易产生可靠性问题。
如上图所示,当VDD下电很慢且VDD在下降过程中反复提升/下降时,MCU有可能会产生反复复位和重启现象,如上图黄色波形所示,NRST因PDR产生拉低,而后又因VDD回升到POR点NRST又被拉高。这种场景容易产生可靠性问题。比如程序中存在对FLASH擦写功能时,如果在擦写操作未完成时产生PDR复位,有可能擦写不完整或其它不可预知风险(如误擦写了程序区);另外就是如果VDD电压在2V左右上下反复波动,芯片就会在低供电情况下反复复位和重启,操作FLASH也是有风险的。其它控制上的风险,大家也可以想想会带来哪些风险。
解决方法分硬件和软件。硬件法当然是改良自己的掉电曲线了;软件法就是main函数进来后先不做风险的操作(如FLASH擦写),避开掉电曲线中波动不定的这个时间阶段。