问题:
所有电路板全部供电时,MCU不工作。
描述:
电源板给A板供电,并通过A板中的切换开关控制对B板、C板和D板的供电,供电电压有+5V、-5V和+13V、-13V,给单独某块板供电没有问题,但四块电路板同时供电时,串口无法发数,IO口无法切换,MCU无法正常工作。
原因分析与解决:
在初始化语句中将切换开关的IO口配置好并打开开关,尝试使用硬件仿真来处理,硬件仿真加入中断可以正常执行,怀疑是由于切换开关同时打开造成瞬间电流过大而导致问题,于是将各个开关IO口的开启语句加入300ms的延时,并在程序进入main函数内的第一行也加入300ms的延时。发现现象有所改善,但时好时坏,有时上电MCU能正常运行,有时上电后MCU不能,未能从根本上解决问题。
接着找问题。
排除了各个单板的原理性问题后,发现在多个电路组成系统时GND连接地比较随意,而且基本所有的电路的GND都引出一根接到了可调电源的GND上,这种接法直接导致电流过大辐射干扰MCU运行。因此,改进MCU的连接方式,按照原理图中系统GND的串接方式严格连接GND,问题解决。