刘军(正点原子)
【作者简介】刘军(正点原子):无协第25届技术总监,现就职于佳都新太科技股份有限公司,任电子工程师一职。对STM32有深入的研究,曾出版著作《例说STM32》,曾受邀到ST公司演讲,自己研发的STM32开发板在淘宝上销量火爆。
一、问题现象
功能:电源控制板可以单独控制5V/12V/24V三路电压的输出,并测量其电流和电压。
电源控制板所选CPU为STM32F103C8T6@72Mhz.
电源控制板所选继电器为:24V@12mA.
电源控制板所有电解电容均为2200uF.
电源控制板2.0PCB如下图所示:
图1
下面是地线回路:
图2
打样焊接后,测试时发现如下问题:
1,stm32控制K3导通(K3控制12V的输出。),导致STM32异常重启。重启2~3次之后,可以正常控制K3导通。
2,K3导通后,在VCC12处人为短路,导致STM32重启,但是电流显著增加(之前为20ma,之后为350ma),同时STM32发热严重。但是STM32运行正常(持续观察数分钟无异常)。
二,原因分析
先看问题2.
根据现象我进行了如下检测:
1,STM32正常工作,在电源输入口直接短路12v,现象不能重复。
2,STM32正常工作,将K3强行导通,在12V输出口短路,现象被重复。
3,STM32进B00TLOADER模式,将K3强行导通, ,在12V输出口短路,现象被重复。
仔细检查PCB后,发现问题可能是出在地线回路,如图3所示:
图3
我这样设计的本意是VSSA的地和STM32的其他地是分开的,为了ADC准确,我特地把VSSA和模拟部分的地连在一起,而STM32的其他地则连到另外一个地线网络,如图3所示。
采取措施如下,如图4所示:
图4
在A处,将底层的地线割开,在B处,用焊锡连接两个地线网络。在做同样测试,未重现问题2,而问题1依旧。问题2得到解决。
再看问题1.
根据问题2的解决方法,问题1的问题,也有可能出在地线。
在解决问题2之后,地线网络分为上下两层。没有连接在一起(没有形成地线环)。我认为干扰可能来自ULN2003,于是把ULN2003的地线割开,直接连接到电源输入点的地。如图5所示:
图5
在C处割开,断开ULN2003与下方地网的连接,直接连接在地线输入端。
经测试,问题依旧。
进一步查看,发现图6所示电流圈:
图6
这样5V-》3.3V-》GND回路就形成了一个环,并且刚好将12V的输出圈在里面,当输出短路的时候,瞬间电流变化很大,谐波很多,对环路会形成很大干扰。因此导致STM32死机。(这里可以预测5V短路应该也会导致STM32死机,只是如果5V短路了,STM32就没电源了,不好观测现象)。
解决办法如图7:
图7
在D处,将地线割断,直接从E处飞线连接F处。再测试,问题得到解决。
至此,问题1得到解决。
此时,更进一步,测试短接24V输出,产生很大火花(电容2个2200uF并联,比较足),同时导致STM32死机,原因同样是形成了电源回路,导致死机。
解决办法如图8:
图8
在G处,将地线网络断开,连接H处和E处。再测试,24V短路也无法导致STM32重启。问题得到解决。
二,总结
1. 对STM32的内部电源理解薄弱,想当然的认为VSSA和GND无任何联系。
2. 虽然参加了电磁兼容的培训,但是实际经验严重不足,导致设计缺陷明显。
3. 说某个芯片的看干扰性能不行,多半是自己电路设计不行。电路设计的差,再好的芯片也是百搭。
4. 问题解决期间,试过在PCB下面放一块铜板(覆铜PCB),同时连接到GND,发现对问题解决没多大帮助(问题依旧),不要指望覆铜解决所有干扰的问题.