找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 36304|回复: 23
收起左侧

STM单片机很容易受干扰而程序丢失-一个MCU应用异常的案例分享

  [复制链接]
ID:98618 发表于 2015-12-19 16:24 | 显示全部楼层 |阅读模式
本文作者:Miler Shao
,有个客户跟我电话,他在用STMCU开发车载产品,STM32STM8都有用。STM32芯片用在他的多路控制板上,STM8S105用在另外显示面板上。多路控制板上的STM32与显示板上的STM8S105进行UART通讯,电源由从多路控制板这边送过去,两块板之间用了根近2米的普通信号连接线作供电和UART信号传送。STM8S105 的供电电压为5V


客户反映他的产品已经生产1000多套,小批量送样出去。他的客户反映产品的STM8S105很容易受干扰而程序丢失。他拿到退货后如果重新烧录又能正常工作


因其进度紧,相约于一晚上见面继续了解情况,探讨问题原因。

见面后他进一步反映,每次STM8S105头次烧录后能正常工作,如果无外来干扰,也能保持正常状态。但如果STM8s105这端的显示板受到外来干扰,比方电源波动[其实不一定限于电源波动,只是找了这么个简单而有效的比较粗暴的办法,他们用手指在多路控制板端的电源供电线路的器件上一派乱摸,导致给显示板的供电异常波动]后,STM8S105工作异常属实。断电后再上电也不能恢复正常,即使多次掉电上电也无济于事。的确很有点像程序丢失的味道。


连上STLINK,打开STVP查看程序[客户之前没有做读保护],读出后进一步跟原始烧录文件比对,一模一样。说明程序并未丢失。既然程序没有丢,而STM8S105显示板受干扰导致功能异常后即使断电再上电都没法回归正常。难道芯片在电源波动干扰时坏了?


检测STM8S105VCAP脚电源,1.8v,内核供电稳稳的。其复位电路为10K104电容,参数没什么异常。测试RST复位脚电平,结果是2.5v,显然不正常,正常应该是5v。因为他说产品都测试过了,小批量出货。首先比较怀疑电源剧烈波动时个别器件或STM8s105出了故障,还有那根近两米的电源传输缆线让电源波动时的情况变得更为复杂。


当晚作罢,建议其第二天做电源线路的自行检查,外围器件和STM8S105芯片的更换比对测试。


第二天上午客户反馈,他把所谓的坏板的复位电路处的那个外接电阻从10K更换为110欧就正常工作了。听后一惊,觉得没道理。但人家说行,就只好先建议他多测试下,然后自己心里继续思考到底怎么回事。


到了下午客户反馈回来,说按上午的接法是比之前稳定多了,当用手摸供电模块时还是会出状况。要命的是,当他在110欧的条件下更换MCU芯片做烧录时几乎没法正常烧录。这是跟之前接10K时是不一样的新状况。说明他随手更换为110欧并不靠谱,也没理论支撑。当时他更换后感觉好些了,并非真的稳定好了。


记得前一天晚上我随便扫了几眼他的源代码,不复杂。他使用外部晶体做时钟源,UART通信和部分GPIO及显示控制。不过,经过近2天我对该客户的接触,感觉他因为太忙对整个开发没花什么心思,代码是基于ST库代码修改而来,基本没时间做太多研究。


鉴于此,想到他使用外部时钟,需要他做代码配置。突然怀疑会不会是他的时钟配置出了问题,而且如果时钟配置出了问题,比如超频了,那上面的那些奇怪现象就不难理解了。想到这里,我电话他屏蔽跟HSE时钟配置有关的所有代码,使用系统默认HSI做主时钟。


功夫不负有心人,还真是他在利用HSE进行时钟配置的地方出了问题。改用HSI后,复位线路回归正常接法。他们继续用手去触摸电源供电线路的器件会让STM8S105产生复位,但复位后能回归正常运行状态。不像之前受干扰后就回不去了。之前被怀疑因为电源异常波动可能致损的芯片都能正常工作了。


看到这里会有人好奇,他为什么会想到把那个RC中的电阻改为110呢?这点出乎我意料,呵呵。因为头天晚上我测试异常板的复位脚电平时发现电平才2.5V,不正常。没想到他第二天为了想把RST脚电平凑到接近VDD,他就不停减小电阻直到复位脚电平接近5V。当然凑巧的时是,此时功能还真有改善,这更加让他自信这个动作的合理性了。


当然还有个原因,后来他告诉这个问题也拖了几个月了一直没找到原因,病急乱投医也可以理解。这种情况在产品开发过程中也较普遍,在时间进度紧急时先应付了再说。


这里或许有人觉得疑惑,既然他MCU内部时钟配置错误了,为什么第一次烧录后能妥妥地的工作,还可以给客户送样,直到受到外在干扰时才出现异常呢?第一次烧录后的代码和受干扰再次上电的代码并无差别。这点我也迷惑不解,有知道的欢迎留言交流。


但可以肯定的是,他的超频时钟问题代码总归是让芯片工作在技术手册参数约定之外的不可靠无保障的状态。即使某种条件下的正常运行也不能视为真正的正常状态,就像个醉汉个别的正确言行并不代表他的言行可靠一样,因为本身就是出于一种不靠谱状态。


应该说事情并不复杂,但往往由于客户在出现状况时不够冷静淡定去找原因,往往急于片面下结论而使得自己的项目进展缓慢;或者无意地把误判信息再传达给别人而让事情复杂化或玄奥化,类似情况可谓不胜枚举。


比方说,前些天有个工程师问我,说某STM32 芯片的某管脚怎么不听使唤,奇怪纳闷,问是否有特别之处。我查看手册,该管脚跟别的绝大部分GPIO并无特性上的差异,让其继续检查。后来发现是代码在两处作了不一致的配置。再说个实例,也是几天前有个工程师反映说在SWIM烧录时,只要配置了某管脚输出时就没法烧录。咋听起来两个东西应该是不着边际,让其检查该脚控制了些什么。后来发现该脚控制了某个电源开关管,它的通断直接影响到MCU的供电。


套用一句类似评价家庭幸福的话来结尾,正常产品的结果是一致的,异常产品的症状和原因是五花八门的。

评分

参与人数 2黑币 +17 收起 理由
wj1994 + 5 很给力!
YJGG + 12 赞一个!

查看全部评分

回复

使用道具 举报

ID:58310 发表于 2016-2-27 13:18 | 显示全部楼层
受益匪浅。
我在这里也补充点,
我使用的是STM8S003F3。 在RX这块加一个上拉电阻也能消除一定的干扰。
回复

使用道具 举报

ID:150064 发表于 2016-11-25 09:53 | 显示全部楼层
受益匪浅。
我使用的是stm32f103c8t6,刚开始用几个月都没问题,最近几个月也出现程序丢失的情况,还没找到原因。谢谢楼主分享,受益良多.
回复

使用道具 举报

ID:164100 发表于 2017-2-10 09:55 | 显示全部楼层
最近几天老化测试产品时,我也发现丢失程序的问题了。用的STM8S207,生产出货大半年了。初步认为是买到散新货,IC质量差。
回复

使用道具 举报

ID:136256 发表于 2017-3-19 23:58 | 显示全部楼层
偶尔进来的,看完后,倒是满载而归,学习了!
回复

使用道具 举报

ID:176767 发表于 2017-3-21 14:03 | 显示全部楼层
学习了  有时间请教下么   PIC单片机的程序丢失也是这个原因么
回复

使用道具 举报

ID:98591 发表于 2017-3-24 02:10 | 显示全部楼层
看标题好可怕,打算8s003做电源驱动呢,看完原来是代码问题
回复

使用道具 举报

ID:66396 发表于 2017-7-11 10:43 | 显示全部楼层
我用的也是STM8。也出现上面的状况。可是我已经在了等待。HSE是24M的。数据表上显示最大24M也是可以用的啊
回复

使用道具 举报

ID:221051 发表于 2017-7-23 11:51 | 显示全部楼层
谢谢,很实在的经验分享,对我很有帮助!
回复

使用道具 举报

ID:283221 发表于 2018-2-9 00:26 | 显示全部楼层
我也遇到过这样的情况,有一款用STM8S003F3做的车载仪表,部分三包品不开机,重新烧一下程序就OK了。但是这个板子用的是内部时钟,可以确定的是肯定与干扰有关,具体原因没有查到。
回复

使用道具 举报

ID:650619 发表于 2019-11-27 10:43 | 显示全部楼层
您好,请问用散新芯片会引起程序丢失吗?
回复

使用道具 举报

ID:650619 发表于 2019-11-27 11:15 | 显示全部楼层
散新的芯片会引起程序丢失吗?
回复

使用道具 举报

ID:646188 发表于 2020-12-31 17:54 | 显示全部楼层
谢谢分享,这种问题很难发现。病急乱投医是不可取的,做一些没有道理的骚操作要能成功那就怪了。
回复

使用道具 举报

ID:830831 发表于 2021-1-1 10:43 | 显示全部楼层
分析的真详细,谢谢楼主的分享,受益
回复

使用道具 举报

ID:851416 发表于 2021-1-1 10:54 | 显示全部楼层
受益匪浅,多多学习!
回复

使用道具 举报

ID:519089 发表于 2021-7-14 22:05 | 显示全部楼层
肯定是代码问题,不用多说,最后也没给出超频还能工作的原因分析,,有点不靠谱
回复

使用道具 举报

ID:977059 发表于 2021-11-12 14:29 | 显示全部楼层
很使用的解决问题办法
回复

使用道具 举报

ID:989726 发表于 2021-12-8 18:25 来自手机 | 显示全部楼层
我们用S105S4,也遇到这个问题,一定比例客户开机就单片机不能正常启动了,刷程序也没用,后面网上找到个类似案例,说是配置字节不正常,重新写下就行了。后来折腾了几个月,研发改了程序就不会再有了。具体原因不清楚,但好像是某种特殊情况(比如上电瞬间电压不稳定时)程序无意中改写了配置字节,导致单片机不能正常复位,一直在反复复位,用示波器能看到复位脚一直有锯齿波。
回复

使用道具 举报

ID:92231 发表于 2021-12-9 08:17 来自手机 | 显示全部楼层
我是菜鸟,学习来的
回复

使用道具 举报

ID:369365 发表于 2022-7-11 13:15 | 显示全部楼层
liyuan0607 发表于 2021-12-8 18:25
我们用S105S4,也遇到这个问题,一定比例客户开机就单片机不能正常启动了,刷程序也没用,后面网上找到个类 ...
类似情况搞了大半年
https://blog.csdn.net/weixin_44407238/article/details/125621935
回复

使用道具 举报

ID:93667 发表于 2022-7-14 17:05 | 显示全部楼层
学习了!!!!!STM32经常有小项目,有不稳定的问题!!!!!!!!!!
回复

使用道具 举报

ID:387591 发表于 2022-9-2 16:10 | 显示全部楼层
我的经验是如果发现程序丢失,这是不可以接受的,不论是超频,还是干扰,还是其他原因。只要程序或者数据丢失,我的解决方法就是换片子,不用这个型号的芯片了。因为你只能改善,而无法杜绝这类情况,说直白点, 你真的无法找到彻底解决问题的办法,我有个产品,不丢程序,但是丢片内数据,最后会白屏,不用烧程序,重新把数据输入又好了。想了无数方法,怀疑电源,用电池供电,还是会丢,干扰会从传感器,通讯线进来。给芯片加单独电源,完全隔离,还是会丢,我反反复复搞了10年,都没有解决。最后下决心换片子,重新设计,这个问题就没有了,当时想得很好,一个芯片把AD,DA,EPROM都放在里面,减少了原件,故障点就少,产品维修就少,事实却不是那样,片子抗干扰弱,你绕不开,而且一个系列,改一堆产品,很是头大。我现在的原则就是,只要发现丢程序这种故障,肯定换芯片,哪怕我重新开始学一种全新的芯片,我也不在哪上面花时间,因为你真的可能无法最后把这个产品做稳定,这是心脏病
回复

使用道具 举报

ID:1042652 发表于 2022-9-8 10:13 | 显示全部楼层
暂未遇到类似问题,不过收益匪浅,为以后问题处理多了一份经验,感谢楼主的分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表