单片机/MCU论坛
直播中

戈壁滩上的辉煌

1年用户 532经验值
擅长:测量仪表 模拟技术 控制/MCU
私信 关注
[文章]

MCU不正常工作的原因(硬件篇)

MCU死机了?      这是我们最常见的一类问题,大概率是程序有卡死的地方,那么还有哪些硬件问题会导致MCU不工作呢?
第一:复位引脚的干扰
      大部分都是板子刚打样回来上电调试的时候,MCU直接不运行的情况,大多都是复位电路中的电阻或者电容贴错了,虚焊了等等;如果是采用复位芯片的大多估计供电不足,选型有问题等等。我们一定要查看一下复位引脚的状体,可以一个复位动作就能导致程序运行异常.不过有一次遇更是遇到了频繁复位的问题,出在PCB走线上,复位电路与功率期间挨得比较近导致MCU概率性频繁复位,使用示波器能看到下拉存在,时间很短,但是依然复位了。
第二:电源问题
       对于电源问题引起的死机,在这么多年软件调试过程中,至少有碰到过10次左右,特别是一些经验不是特别丰富的软件工程师们在开发的过程中很少去质疑硬件问题,所以一言不合就从嵌入式软件开始排查,同时也有许多硬件伙计觉得软件可以优化非常多的硬件问题。电源问题一般都会出现在哪里呢?
电压
      大部分芯片都会有一个稳定运行的电压范围,过高或者过低都有可能导致运行异常,注意是可能,不是一定,甚至同一个型号,不同批次的芯片都有所差异~所电压过低会导致芯片内外供电不够,使得相应模块、外设运行异常,最终程序死机、跑飞是经常发生的.
功率及稳定性
功率的问题不明显,但是当某些外设与大功率器件在某个特定的时间重合时会出现错误动作,导致进入错误中断卡死;特别是整个系统的功率需求并不是特别稳定,且电源的设计并没有太多的余量,当出现比如动作继电器等等功耗较大的动作时,其电源就有可能出现不稳定状态,最终影响到芯片运行。当然如果你是购买的劣质或者参数虚标的电源,就要更多的去测试和监控一下电源的稳定程度了。在项目的设计评审初期,一定要注意MCU的供电源尽量与其他电源分开,保证最大功率时的供应,供电端加个大一点的电容也可以有效提供稳定,软件内部也可以做一些快速的电压保护或者故障侦测,以检测出大部分电源异常问题。
第三:晶振失效或受干扰
      晶振本身失效或者受干扰,为了更加精准,一般MCU会选择外部时钟,晶振没有正常起振或者失效受干扰都会引起MCU的异常。之前有个项目采用定时测量时间,每次测量信号的误差都是忽大忽小,后来直接把捕获的信号用IO信号翻转出来与实际信号进行对比,发现并无差异,才定位到是计时这块的频率出了问题,最终定位外部晶振电路存在干扰,导致时钟频率发生变化,最终影响测量结果,如果干扰再大一些估计就跑飞宕机了。对于当出现了一些死机或者计时不准的问题,不仅仅要看软件,也要从硬件晶振时钟这块进行排查,所以对于目前主流的一些MCU都会存在时钟频率输出的引脚,一方面是用来供外部进行内部时钟的监控,另外一个应用就是进行不同芯片之间时钟上的同步。
      最后说几句,静电也是是一个无处不在的问题,尤其是天干气燥的时候,曾经就遇到过依次,一碰芯片调试就中断,没坏也是万幸.高速信号受干扰就经常遇到了,系统中与MCU没有隔离的IO口,通信等等都要做好保护,这些对外的接口会把静电、或者是浪涌电压等引入MCU内部,使得MCU内部逻辑混乱导致死机。高速运行的MCU会受外界辐射等电磁干扰,做好一些屏蔽措施等。

更多回帖

发帖
×
20
完善资料,
赚取积分