我在程序中看不出FLASH是被指令擦除的, 在勘误表中也没有找到有这个硬件BUG.
请问各位, 一般来说, 什么原因会导致FLASH中的内容会被改变?
有人遇到过类似的问题么? 我该如何解决呢?
谢谢.
8 个解决方案
#1
还有, 这个问题并非一定会出现, 出现的时机并没有什么规律可循, 只是偶尔会出现这种现象.
#2
想必你程序里面一定有FLASH编程的函数了。
这可能是程序跑飞造成的,电源监控有问题。
这可能是程序跑飞造成的,电源监控有问题。
#3
用示波器看看电压和复位信号的关系是否满足要求。
#4
当MCU被频繁地上电/掉电时复位电路可能没真正复位.
#5
问题没能解决, 顶一下吧.
#6
你按上面说的去调试了吗, 你说的我觉得就是电源监控有问题, 你使用了片外监控电路了吗? 程序里面有FLASH擦写的函数吗 ?
#7
我们没有片外监控电路, 程序中有FLASH擦写函数, 但我认为正常的话, 上电/掉电是没有机会执行相应的FLASH擦除函数的.
#8
既然是这样,那么你的问题就应该是我说的原因了。
很多芯片内部复位电路做的都不是很好。
如果电压在下降(掉电)到某一个值时,CPU仍没复位这时PC值就能能错掉了;同样,在上升(上电)时,如果电压没有到某个值时,CPU过早的退出复位,PC值也可能会错掉。当程序跑飞时,如果这是PC正好指向你的flash擦除函数怎么办?
我觉得你有两种方法解决这个问题: 一种时加电源监控芯片;另外,看看芯片手册,是否有启动内部电源监控的寄存器可以配置,有的芯片是有这种功能的。
很多芯片内部复位电路做的都不是很好。
如果电压在下降(掉电)到某一个值时,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擦除函数怎么办?
我觉得你有两种方法解决这个问题: 一种时加电源监控芯片;另外,看看芯片手册,是否有启动内部电源监控的寄存器可以配置,有的芯片是有这种功能的。
很多芯片内部复位电路做的都不是很好。
如果电压在下降(掉电)到某一个值时,CPU仍没复位这时PC值就能能错掉了;同样,在上升(上电)时,如果电压没有到某个值时,CPU过早的退出复位,PC值也可能会错掉。当程序跑飞时,如果这是PC正好指向你的flash擦除函数怎么办?
我觉得你有两种方法解决这个问题: 一种时加电源监控芯片;另外,看看芯片手册,是否有启动内部电源监控的寄存器可以配置,有的芯片是有这种功能的。