MSP430F2xxx系列FLASH数据丢失解决办法

偶然的一次机会发现做的MSP430F2xxx板子,在上电时会出现information memory的款被未知原因擦除了,后来对多个板子进行测试,发现有一部分板子在连续上电断电后information memory四个块会存在数据丢失,即这些存储区数据全部变为0xFF,有时候B区数据回复默认,有时候视C区或者D区,A区倒是没怎么注意到,不过有时候会出现程序无法运行的情况,据观察是0xFFFF这个地址的值被改变了,导致程序无法运行。

有哪位兄弟曾见过这样的情况?焊接会不会导致芯片出现这样的现象?
然后我看全新芯片未下载过程序,观察到D区始终有55AA 3FFF ABCD 55AA 1234这样的数据,理论上来说FLASH初始化值应该都是FF啊

还请各位高手能指点一二  
 
里面就是两段程序,一个是启动程序,可根据一个标志位判断是进入升级模式还是进入应用程序,启动程序里面有IAP操作,但是应用程序里面没有。

但是我这样频繁上电又没有调用过函数擦除FLASH,为什么会有这样的情况呢?

请稍详细说明,感谢,而且大部分芯片这样频繁上电并未出现异常,只有一部分,而且这部分只要连续上10几次后就会导致FLASH数据复原。更换芯片后又可以了

----------------------------------解决方案----------------------------------

恭喜你,是你程序跑飞了!

这个是电源监控及复位的问题。正常情况下,在上电启动过程中,需要芯片电压超过某一阈值才释放复位,进入工作状态,如果提前复位完成,此时系统状态不完全确定,程序跑飞,如果正好飞到flash擦除的代码,那就是楼主看到的现象了;同样,在下电的过程中,如果当电压掉到不能正常工作的阈值是仍未复位,也会跑飞。

这个在芯片手册中关于复位的地方一定讲到了。楼主可以采用外加电源监控芯片的方法解决;有的芯片内部也有电源监控电路,但默认的不一定启动了。祝你好运! 

----------------------------------解决方案----------------------------------

在上电时会出现information memory的款被未知原因擦除了,

IAR下程序的时候有一项设置是:擦不擦这个的

不知道是不是这个原因? 

----------------------------------解决方案----------------------------------

写flash是要保证一定时间的,有些写片器为了缩短写时间对这个时间进行了‘优化’,结果可能flash浮栅上的电荷不够会出现数据不稳和丢失,换一个写片的试试,同时要排除芯片是水货。 

----------------------------------解决方案----------------------------------

像flash那样的存储器,在线写时要保证电源不掉,即需要一个掉电检测电路,在交流220掉电时,提前通知CPU,同时5V还应该可以再使用20ms左右。

以前我也遇到数据掉的情况(SRAM+电池),现在直接用FRAM(铁电存储器),还没发现掉数据情况(掉电保护还要) 

----------------------------------解决方案----------------------------------

我觉得有两种可能,一种是由于硬件原因引起的,原因前面我已经说过。另外一种可能就是软件本身导致程序跑飞,比如内存越界等原因造成。

程序跑飞,不是说是不是在运行某段程序,而是某段程序不该执行而执行了。比如说如果你的第二段程序有擦除flash的例程,第一段程序在运行中跑飞就可能执行第二段的代码;也可能执行第一段中的第其他代码。一般情况下,flash控制器本身是不允许擦写正在运行的代码所在扇区的。

永不止步步 发表于01-04 10:26 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363741个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号