历史上的今天
今天是:2025年02月16日(星期日)
2020年02月16日 | STM32片内FLASH被异常改写的问题分享
2020-02-16 来源:eefocus
某STM32客户反馈,当STM32F407V芯片频繁的正常通断电的时候,FLASH 会被非法改写,出现各种各样的异常(整片被擦除、中断向量表被改写、写保护被清除等等)。
经过与跟客户沟通了解到:
1、他们是延续之前的项目,进行的一些软硬件简单修改。之前的项目没有出现过类似的问题。
2、确认通断电的时间是足够,即断电后所有的VDD都回到0;上电的时序也正常。
3、原理图参考了ST相关开发板的参考设计。
4、测量工作电压,除了发觉上电时会有些许抖动外,其它一切正常。尝试让他们改善上电电路,去掉这一抖动。再次实验,仍然出现类似的问题。
根据现象初步判断,异常似乎跟硬件没关联了, 接着对客户代码进行删减又做了如下实验:
1,去掉APP 部分代码,仅仅留下IAP代码。做相同的实验,问题再现。
2,进一步删减程序,去掉程序中所有跟flash以及OPTION BYTE 相关的部分,做相同的实验,问题依旧。
3,没招,再删代码,或者屏蔽代码。做基于不同STM32库的代码替换。问题始终依旧。
到此问题毫无进展,只好求助ST芯片设计人员做进一步确认,看看芯片是否真的坏了。同时,又请客户的硬件工程师再次确认他们的硬件线路和原理图的一致性,我们怀疑他们的硬件是否有装错的元器件,特别是MCU周边。
后来客户工程师反馈,STM32F407的PDR_ON脚,板子上装的元件跟原理图不一致。他们把R47和R48都装了【如下图】,那么相当于在PDR_ON上是一个0.6v的电压,也就是关断了MCU内部复位。

可谓山穷水尽疑无路,柳暗花明又一村,看来问题应该跟内部复位有关。
查看STM32F407数据手册,可以看到相关信息。

从上面规格书来看,STM32F407V的内部复位电路可以选择性地开启或关闭,如果选择关闭mcu内部的复位电路,需要在外部接一个复位监测电路保证VDD达到正常工作电压之前一直使MCU处于复位状态。而这里,客户本意并不想关闭内部复位,而且外部也没有相应的电源监测复位电路。既然这样,根据手册描述,PDR_ON脚接到VDD即可。具体到这里,去掉R48这个1k欧姆的电阻。重做实验反复验证,异常消失。
对于STM32来说,这个PDR_ON引脚有的封装是被引出来了,有的封装没有被引出。如果没有引出的就默认使能内部复位功能,如果引出的话,大家也要注意有的型号是拉低使能内部复位,有的是拉高使能内部复位,设计和使用时请注意这点。
类似小细节,容易被忽视,原因在被忽视情况下去查找原因往往是件非常折腾、曲折而痛苦的事。这种情况对于工程师来说,也没法完全避免,毕竟我们是人。所以平时多留意、多积累,遇到问题时保持冷静分析、理性判断尤为重要,不要动不动就怀疑芯片质量问题而使开发调试停滞不前。
史海拾趣
|
视频监控一直是安防技术应用的热点之一,以其直观、方便、信息内容丰富而被广泛应用于军队、银行、海关、机场、高速公路、商场、医院、学校、机关、社会小区、家庭等各种场合。视频监控系统的智能化水平和集成化发展速度,也直接反映了不同阶段电子 ...… 查看全部问答> |
|
有人知道ADV7170/7171可以用VGA连接到电脑显示器上显示吗 我现在在做一个板子,输出的DA用的ADV7170,准备输出RGB信号通过VGA连接到电脑显示器上显示,同步信号通过FPGA产生 但是我了解到这个芯片输出的RGB好像是欧洲SCART的标准,就是隔行的,但是我知道电脑上的VGA都是逐行的信号吧,那这么做兼容吗? ...… 查看全部问答> |
|
我在网上投递了他们公司的嵌入式开发工程师,今天他们打电话给我说要先培训四个月,然后才能上班,并且让我交5000元的培训费,这个公司我咋感觉是骗子公司呢!~… 查看全部问答> |
|
初学LM3S9B96,现遇到问题: 1.用DK-LM3S9B96开发板自带的IDCI下载程序,报错不能下载成功,错误为“Could not find an Cortex-M device”,见贴图; 2.用JLINK下载 ...… 查看全部问答> |




