最近在用STM32F030F4做一款产品,用在电能计量场合的,3.3V电源是220V经过阻容降压再经过LDO稳压得到的。
开发过程中没有碰到太多的问题,调试也很顺利。
但测试时挂载到220V交流电上时问题就出现了,老是出现死机,并且经常是出现在上电的瞬间。
经过调试发现,出现死机时,都调到了HardFault中断那里。
因为之前该款产品从没有出现过该问题,只不过是芯片换成了ST的,板子布局基本无改动,所以一直怀疑是软件出现了问题。
经过一段时间的调试后,没有找到软件的问题,决定从硬件方面着手找问题。
用示波器监控3.3V电源,发现上电时,电源上有很大的干扰,在电源端加大电容,依然没有改善。
最终终于找到了问题的所在,当将HSI(内部8M RC振荡器)作为系统时钟时,就没有问题,出问题的是系统时钟使用HSE(外部8M晶体)的情况。
还好系统中只是校准部分需要用到比较准确的时钟,其它情况下对系统时钟的准确度没有要求,所以问题就比较好解决了,只需要在校准的时候将系统时钟切换到HSE,校准完成后切换回HSI,其余时候用HSI工作就可以了,经过测试,再也没有出现过死机的现象了。
至此问题得到解决,看来使用外部晶体时,对芯片的抗干扰能力还是要求比较高的,希望ST能在这个方面有所改善。
|