单片机死机怎么办?看看一个资深工程师的经验总结

单片机(Microcontroller,MCU) 又称为微控制器或嵌入式控制器,体积虽小,但使用方便,应用范围广泛,在如通讯设备、智能化管理、医疗设备及工业自动化等应用中都能看到它的身影。虽然单片机系统结构简单,但是面对单片机“死机”,有时就像生活中会遇到的高山深谷,可能让你花大半天时间,也百思不得其解。

在这里笔者尝试分享一些我们在做技术支持时曾经遇见的典型问题——如时钟信号、供电电压、电流耗量和应用程序等,我们可以利用一些简易方法去寻找解决这些问题的可能性。

不同单片机的规格可能略有不同,除了可能有不同的核心处理器,还有可能有不同的RAM容量、不同的串口接口、不同的速度、不同的电压等等。想快速了解单片机的功能和外设等资料,可以点击DigiKey 微控制器的产品索引,进行查找。

图1,DigiKey的微控制器产品索引,是查找单片机资料的快速通道

时钟信号

无论是晶体振荡器(简称晶振),或是内部时钟振荡器,都可以为单片机提供时钟信号。单片机会按时钟信号执行一个又一个储存器内的指令,进行既定的正常工作。一旦时钟信号不正常,单片机则不能正常控制。

要检查时钟信号,可以先观察单片机系统的时钟或其他模块(如定时器或ADC)是否存在并正常工作,以确定其逻辑正常操作。譬如TI MSP430FR2000单片机在激活模式(Active Mode) 工作下,系统的时钟可高达24MHz。

图2,TI MSP430FR2000单片机不同工作模式比较

进行时钟信号检查,最简单的方法是先将时钟切换到相关的GPIO引脚,并使用数字示波器进行测量,看看时钟信号波形的幅度和周期。如果没有时钟信号或振荡不正常,可尝试更换晶振或检查内部时钟设定。如果仍不正常,单片机内部可能出现问题。

供电电压

常见单片机的供电电压是+5V,详情可查看单片机数据手册上的资料,或是参考DigiKey网站內产品页的资料。

检查单片机的供电电压,可以从单片机供电引脚看看供电电压是否正常。最好的方法是使用具有足够带宽的数字示波器,以便有效看到任何意外的电压瞬变。

若单片机发现是0V或低于正常工作电压,可以尝试先将该引脚与供电端断开。断开后,如果供电端电压恢复正常,则很大机会是单片机的电路出现问题;如果断开后,供电端电压仍不正常,则是供电的电路出现故障。

图3,通过数字示波器查看单片机供电电压

电流耗量

如果发现单片机的电流耗量相比其低功耗模式的电流消耗低很多,单片机可能处于睡眠模式而没有工作。在这种情况下,可能是由于时钟或输入相关的故障,导致某些中断无法触发。

有些时候,如果单片机的电流耗量高得惊人,可能是物理损坏,这会导致单片机异常运行或闩锁情况。在这种情况下,可以尝试利用复位信号来区分是单片机已经永久性损坏或是出现闩锁问题。

图4,检查单片机的电流耗量以确定失效原因

下图是有关TI MSP432P401单片机正常复位期间的电流消耗。

图5,TI MSP430P401单片机正常复位期间电流消耗

应用程序

在执行应用程序时,其中一个常见故障是单片机轮询问题(Polling) 。

这是由于应用程序中的循环设计,不断要求单片机轮询某些信号或等待某些输入信号;也可能是产生了冲突,导致循环条件一直无法满足。当然,这些都是为了让单片机一直保持在我们需要运行的情况,但可能会引致莫名奇妙的死机。例如,当ADC回路仅等待来自外部传感器输入的指定信号时,由于外部传感器无法按预期输出信号,可能使单片机死机。

经验总结

要排除单片机故障,就要按单片机的特性一一排查,还需要耐心及缜密的思考设计,如此操作单片机故障应该可以一步一步解决。

更多单片机技术内容:

关于此作者

Image of Barley Li

Barley Li是DigiKey在香港的应用工程师,负责分享解决方案和业内技术,以协助客户进行项目设计。他拥有超过10年的全球电子销售经验,并曾为半导体制造商准备过产品简介和应用说明。Barley毕业于香港城市大学的电子工程系,在空闲的时候,他喜欢和他的儿子一起建玩具模型和玩球类游戏。

More posts by Barley Li
 TechForum

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.

Visit TechForum