原标题:单片机“死机”了怎么办?看看一个资深工程师的经验总结
单片机(Microcontroller,MCU) 又称为微控制器或嵌入式控制器,体积虽小,但使用方便,应用范围广泛,在如通讯设备、智能化管理、医疗设备及工业自动化等应用中都能看到它的身影。虽然单片机系统结构简单,但是面对单片机“死机”,有时就像生活中会遇到的高山深谷,可能让你花大半天时间,也百思不得其解。
在这里笔者尝试分享一些我们在做技术支持时曾经遇见的典型问题——如时钟信号、供电电压、电流耗量和应用程序等,我们可以利用一些简易方法去寻找解决这些问题的可能性。
不同单片机的规格可能略有不同,除了可能有不同的核心处理器,还有可能有不同的RAM容量、不同的串口接口、不同的速度、不同的电压等等。想快速了解单片机的功能和外设等资料,可以点击Digi-Key微控制器的产品索引,进行查找。
图1,Digi-Key的微控制器产品索引,是查找单片机资料的快速通道
时钟信号
无论是晶体振荡器(简称晶振),或是内部时钟振荡器,都可以为单片机提供时钟信号。单片机会按时钟信号执行一个又一个储存器内的指令,进行既定的正常工作。一旦时钟信号不正常,单片机则不能正常控制。
要检查时钟信号,可以先观察单片机系统的时钟或其他模块(如定时器或ADC)是否存在并正常工作,以确定其逻辑正常操作。譬如TIMSP430FR2000单片机在激活模式 (Active Mode) 工作下,系统的时钟可高达24MHz。
图2,TI MSP430FR2000单片机不同工作模式比较
进行时钟信号检查,最简单的方法是先将时钟切换到相关的GPIO引脚,并使用数字示波器进行测量,看看时钟信号波形的幅度和周期。如果没有时钟信号或振荡不正常,可尝试更换晶振或检查内部时钟设定。如果仍不正常,单片机内部可能出现问题。
供电电压
常见单片机的供电电压是+5V,详情可查看单片机数据手册上的资料,或是参考Digi-Key 网站內产品页的资料。
检查单片机的供电电压,可以从单片机供电引脚看看供电电压是否正常。最好的方法是使用具有足够带宽的数字示波器,以便有效看到任何意外的电压瞬变。
若单片机发现是0V或低于正常工作电压,可以尝试先将该引脚与供电端断开。断开后,如果供电端电压恢复正常,则很大机会是单片机的电路出现问题;如果断开后,供电端电压仍不正常,则是供电的电路出现故障。
图3,通过数字示波器查看单片机供电电压
电流耗量
如果发现单片机的电流耗量相比其低功耗模式的电流消耗低很多,单片机可能处于睡眠模式而没有工作。在这种情况下,可能是由于时钟或输入相关的故障,导致某些中断无法触发。
有些时候,如果单片机的电流耗量高得惊人,可能是物理损坏,这会导致单片机异常运行或闩锁情况。在这种情况下,可以尝试利用复位信号来区分是单片机已经永久性损坏或是出现闩锁问题。
图4,检查单片机的电流耗量以确定失效原因
下图是有关TIMSP432P401单片机正常复位期间的电流消耗。
图5,TI MSP430P401单片机正常复位期间电流消耗
应用程序
在执行应用程序时,其中一个常见故障是单片机轮询问题 (Polling) 。
这是由于应用程序中的循环设计,不断要求单片机轮询某些信号或等待某些输入信号;也可能是产生了冲突,导致循环条件一直无法满足。当然,这些都是为了让单片机一直保持在我们需要运行的情况,但可能会引致莫名奇妙的死机。例如,当ADC回路仅等待来自外部传感器输入的指定信号时,由于外部传感器无法按预期输出信号,可能使单片机死机。
经验总结
要排除单片机故障,就要按单片机的特性一一排查,还需要耐心及缜密的思考设计,如此操作单片机故障应该可以一步一步解决。
更多单片机技术内容:
·使用随时可用的单板设计开发 IoT原型
·如何在任何应用中快速添加 NFC功能
·将 Arduino与开源 RISC-V架构相结合,实现低成本、高性能的嵌入式设计
·使用微控制器的 DFU模式在现场更新固件
·选择和应用适合物联网的低功耗微控制器
·MSP430FR2355LaunchPad™开发套件
·MSP430FR25x2超低功耗微控制器
喜欢Digi-Key的文章吗?立即到Digi-Key官网,或关注Digi-Key官方微信吧!
www.digikey.com.cn返回搜狐,查看更多
责任编辑: