FLASH会被自动擦除, 有人遇到过类似的问题么?

时间:2021-10-15 23:31:09
我使用的是ADuc7020这款MCU, 发现一个问题, 当MCU被频繁地上电/掉电的话, FLASH中的某一页会被自动擦除, 而其他页并无影响.
我在程序中看不出FLASH是被指令擦除的, 在勘误表中也没有找到有这个硬件BUG.
请问各位, 一般来说, 什么原因会导致FLASH中的内容会被改变?
有人遇到过类似的问题么? 我该如何解决呢?
谢谢.

8 个解决方案

#1


还有, 这个问题并非一定会出现, 出现的时机并没有什么规律可循, 只是偶尔会出现这种现象.

#2


想必你程序里面一定有FLASH编程的函数了。
这可能是程序跑飞造成的,电源监控有问题。

#3


用示波器看看电压和复位信号的关系是否满足要求。

#4


当MCU被频繁地上电/掉电时复位电路可能没真正复位.

#5


问题没能解决, 顶一下吧.

#6


你按上面说的去调试了吗, 你说的我觉得就是电源监控有问题, 你使用了片外监控电路了吗? 程序里面有FLASH擦写的函数吗 ? 
 

#7


我们没有片外监控电路, 程序中有FLASH擦写函数, 但我认为正常的话, 上电/掉电是没有机会执行相应的FLASH擦除函数的.

#8


既然是这样,那么你的问题就应该是我说的原因了。 
很多芯片内部复位电路做的都不是很好。

如果电压在下降(掉电)到某一个值时,CPU仍没复位这时PC值就能能错掉了;同样,在上升(上电)时,如果电压没有到某个值时,CPU过早的退出复位,PC值也可能会错掉。当程序跑飞时,如果这是PC正好指向你的flash擦除函数怎么办? 

我觉得你有两种方法解决这个问题: 一种时加电源监控芯片;另外,看看芯片手册,是否有启动内部电源监控的寄存器可以配置,有的芯片是有这种功能的。

#1


还有, 这个问题并非一定会出现, 出现的时机并没有什么规律可循, 只是偶尔会出现这种现象.

#2


想必你程序里面一定有FLASH编程的函数了。
这可能是程序跑飞造成的,电源监控有问题。

#3


用示波器看看电压和复位信号的关系是否满足要求。

#4


当MCU被频繁地上电/掉电时复位电路可能没真正复位.

#5


问题没能解决, 顶一下吧.

#6


你按上面说的去调试了吗, 你说的我觉得就是电源监控有问题, 你使用了片外监控电路了吗? 程序里面有FLASH擦写的函数吗 ? 
 

#7


我们没有片外监控电路, 程序中有FLASH擦写函数, 但我认为正常的话, 上电/掉电是没有机会执行相应的FLASH擦除函数的.

#8


既然是这样,那么你的问题就应该是我说的原因了。 
很多芯片内部复位电路做的都不是很好。

如果电压在下降(掉电)到某一个值时,CPU仍没复位这时PC值就能能错掉了;同样,在上升(上电)时,如果电压没有到某个值时,CPU过早的退出复位,PC值也可能会错掉。当程序跑飞时,如果这是PC正好指向你的flash擦除函数怎么办? 

我觉得你有两种方法解决这个问题: 一种时加电源监控芯片;另外,看看芯片手册,是否有启动内部电源监控的寄存器可以配置,有的芯片是有这种功能的。