作者:xao | 来源:互联网 | 2023-05-17 10:51
我使用的是ADuc7020这款MCU,发现一个问题,当MCU被频繁地上电掉电的话,FLASH中的某一页会被自动擦除,而其他页并无影响.我在程序中看不出FLASH是被指令擦除的,在勘误表
我使用的是ADuc7020这款MCU, 发现一个问题, 当MCU被频繁地上电/掉电的话, FLASH中的某一页会被自动擦除, 而其他页并无影响.
我在程序中看不出FLASH是被指令擦除的, 在勘误表中也没有找到有这个硬件BUG.
请问各位, 一般来说, 什么原因会导致FLASH中的内容会被改变?
有人遇到过类似的问题么? 我该如何解决呢?
谢谢.
8 个解决方案
还有, 这个问题并非一定会出现, 出现的时机并没有什么规律可循, 只是偶尔会出现这种现象.
想必你程序里面一定有FLASH编程的函数了。
这可能是程序跑飞造成的,电源监控有问题。
当MCU被频繁地上电/掉电时复位电路可能没真正复位.
你按上面说的去调试了吗, 你说的我觉得就是电源监控有问题, 你使用了片外监控电路了吗? 程序里面有FLASH擦写的函数吗 ?
我们没有片外监控电路, 程序中有FLASH擦写函数, 但我认为正常的话, 上电/掉电是没有机会执行相应的FLASH擦除函数的.
既然是这样,那么你的问题就应该是我说的原因了。
很多芯片内部复位电路做的都不是很好。
如果电压在下降(掉电)到某一个值时,CPU仍没复位这时PC值就能能错掉了;同样,在上升(上电)时,如果电压没有到某个值时,CPU过早的退出复位,PC值也可能会错掉。当程序跑飞时,如果这是PC正好指向你的flash擦除函数怎么办?
我觉得你有两种方法解决这个问题: 一种时加电源监控芯片;另外,看看芯片手册,是否有启动内部电源监控的寄存器可以配置,有的芯片是有这种功能的。