单片机“死机”了该怎么办?

控制/MCU

1843人已加入

描述

单片机(Microcontroller,MCU) 又称为微控制器或嵌入式控制器,体积虽小,但使用方便,应用范围广泛,在如通讯设备、智能化管理、医疗设备及工业自动化等应用中都能看到它的身影。

虽然单片机系统结构简单,但是面对单片机“死机”,有时就像生活中会遇到的高山深谷,可能让你花大半天时间,也百思不得其解。

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

不同单片机的规格可能略有不同,除了可能有不同的核心处理器,还有可能有不同的RAM容量、不同的串口接口、不同的速度、不同的电压等等。

定时器

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

时钟信号

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

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

定时器

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

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

供电电压

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

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

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

定时器

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

定时器

电流耗量

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

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

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

定时器

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

应用程序

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

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

经验总结

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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分