打印
[牛人杂谈]

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

[复制链接]
615|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
麻花油条|  楼主 | 2023-3-21 14:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MCU死机了?      这是我们最常见的一类问题,大概率是程序有卡死的地方,那么还有哪些硬件问题会导致MCU不工作呢?
第一:复位引脚的干扰
      大部分都是板子刚打样回来上电调试的时候,MCU直接不运行的情况,大多都是复位电路中的电阻或者电容贴错了,虚焊了等等;如果是采用复位芯片的大多估计供电不足,选型有问题等等。我们一定要查看一下复位引脚的状体,可以一个复位动作就能导致程序运行异常.不过有一次遇更是遇到了频繁复位的问题,出在PCB走线上,复位电路与功率期间挨得比较近导致MCU概率性频繁复位,使用示波器能看到下拉存在,时间很短,但是依然复位了。

使用特权

评论回复
沙发
麻花油条|  楼主 | 2023-3-21 14:56 | 只看该作者
第二:电源问题
       对于电源问题引起的死机,在这么多年软件调试过程中,至少有碰到过10次左右,特别是一些经验不是特别丰富的软件工程师们在开发的过程中很少去质疑硬件问题,所以一言不合就从嵌入式软件开始排查,同时也有许多硬件伙计觉得软件可以优化非常多的硬件问题。电源问题一般都会出现在哪里呢?
电压
      大部分芯片都会有一个稳定运行的电压范围,过高或者过低都有可能导致运行异常,注意是可能,不是一定,甚至同一个型号,不同批次的芯片都有所差异~所电压过低会导致芯片内外供电不够,使得相应模块、外设运行异常,最终程序死机、跑飞是经常发生的.

使用特权

评论回复
板凳
麻花油条|  楼主 | 2023-3-21 14:56 | 只看该作者
功率及稳定性
功率的问题不明显,但是当某些外设与大功率器件在某个特定的时间重合时会出现错误动作,导致进入错误中断卡死;特别是整个系统的功率需求并不是特别稳定,且电源的设计并没有太多的余量,当出现比如动作继电器等等功耗较大的动作时,其电源就有可能出现不稳定状态,最终影响到芯片运行。当然如果你是购买的劣质或者参数虚标的电源,就要更多的去测试和监控一下电源的稳定程度了。在项目的设计评审初期,一定要注意MCU的供电源尽量与其他电源分开,保证最大功率时的供应,供电端加个大一点的电容也可以有效提供稳定,软件内部也可以做一些快速的电压保护或者故障侦测,以检测出大部分电源异常问题。
第三:晶振失效或受干扰
      晶振本身失效或者受干扰,为了更加精准,一般MCU会选择外部时钟,晶振没有正常起振或者失效受干扰都会引起MCU的异常。之前有个项目采用定时测量时间,每次测量信号的误差都是忽大忽小,后来直接把捕获的信号用IO信号翻转出来与实际信号进行对比,发现并无差异,才定位到是计时这块的频率出了问题,最终定位外部晶振电路存在干扰,导致时钟频率发生变化,最终影响测量结果,如果干扰再大一些估计就跑飞宕机了。对于当出现了一些死机或者计时不准的问题,不仅仅要看软件,也要从硬件晶振时钟这块进行排查,所以对于目前主流的一些MCU都会存在时钟频率输出的引脚,一方面是用来供外部进行内部时钟的监控,另外一个应用就是进行不同芯片之间时钟上的同步。

使用特权

评论回复
地板
麻花油条|  楼主 | 2023-3-21 14:56 | 只看该作者
最后说几句,静电也是是一个无处不在的问题,尤其是天干气燥的时候,曾经就遇到过依次,一碰芯片调试就中断,没坏也是万幸.高速信号受干扰就经常遇到了,系统中与MCU没有隔离的IO口,通信等等都要做好保护,这些对外的接口会把静电、或者是浪涌电压等引入MCU内部,使得MCU内部逻辑混乱导致死机。高速运行的MCU会受外界辐射等电磁干扰,做好一些屏蔽措施等。

使用特权

评论回复
5
V853| | 2023-3-21 16:01 | 只看该作者
一般出现MCU不正常,大多数是硬件的原因。

使用特权

评论回复
6
chenqianqian| | 2023-3-21 20:21 | 只看该作者
程序跑飞了

使用特权

评论回复
7
豌豆爹| | 2023-3-22 15:33 | 只看该作者
做好抗静电也是保证单片机正常工作的重要因素

使用特权

评论回复
8
mmbs| | 2023-4-16 22:55 | 只看该作者
确认是否有死循环,并检查循环条件是否正确。

使用特权

评论回复
9
七毛钱| | 2023-4-17 11:24 | 只看该作者
MCU不正常工作首先就要想到芯片是不是坏了

使用特权

评论回复
10
saservice| | 2023-4-18 12:08 | 只看该作者
如果芯片损坏或者内部元件老化,也会导致MCU不正常工作。

使用特权

评论回复
11
modesty3jonah| | 2023-4-18 15:31 | 只看该作者
检查中断处理程序,确保它们能够正确地响应中断并及时完成任务。

使用特权

评论回复
12
adolphcocker| | 2023-4-18 15:53 | 只看该作者
MCU需要稳定、可靠的电源,如果供电不足或者不稳定,会导致MCU不正常工作。例如,电源电压过低、电容缺失等。

使用特权

评论回复
13
claretttt| | 2023-4-18 18:11 | 只看该作者
检查系统资源的使用情况,包括堆栈和内存,并确保它们不会导致程序卡死。

使用特权

评论回复
14
jimmhu| | 2023-4-18 18:33 | 只看该作者
在调试时,如果操作不当或者调试工具出现问题,也会导致MCU不正常工作。

使用特权

评论回复
15
eefas| | 2023-4-18 18:46 | 只看该作者
死循环:程序陷入无限循环,导致程序无法向下执行。
中断问题:错误的中断处理程序或中断优先级设置不当可能导致程序卡死。
系统资源不足:例如栈溢出或堆内存分配错误等,可能导致程序无法继续执行。
外设异常:与外部设备通信时可能会发生异常情况,如果这些异常没有被正确处理,可能会导致程序卡死。

使用特权

评论回复
16
maqianqu| | 2023-4-18 19:02 | 只看该作者
在实际应用中,需要根据情况进行详细分析和判断,并针对性地采取相应的解决方法。

使用特权

评论回复
17
abotomson| | 2023-4-18 20:05 | 只看该作者
MCU和外设之间的连接可能存在问题,如接口连接错误、信号线接触不良等。这会影响MCU与外设的通信,从而导致MCU不能正常控制外设。

使用特权

评论回复
18
kmzuaz| | 2023-4-18 21:16 | 只看该作者
常见的原因包括静电击中、高温过度、使用寿命到期等。

使用特权

评论回复
19
Jacquetry| | 2023-4-18 22:58 | 只看该作者
检查程序是不是被卡住了

使用特权

评论回复
20
updownq| | 2023-4-18 22:59 | 只看该作者
程序出现错误也会导致MCU不正常工作,例如死循环、指针未初始化、数组越界等。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

279

主题

1448

帖子

2

粉丝