飞思的AC16单片机,使用FLASH模拟EEPROM时,数据被改(已解决)

2020-02-20 20:36发布

本帖最后由 FSL_TICS_ZP 于 2014-10-8 16:34 编辑

曾经批量使用飞思卡尔的AC16系列单片机,一直使用FLASH模拟eeprom,一直没有什么问题,直到用于一个风机控制系统,发现数据被大面积改写,均被改写为FF,开始怀疑是上电或下电过程中的不稳定造成,在公司进行频繁的上下电实验,发现确实会导致数据被改写,于是将复位芯片的复位电压值提高到4.3V,发现问题依旧。后又增加了很多抗干扰电路,依然无果。后因为项目紧急,采用了现场固定数据的方式应付过去。

不是各位是否遇到类似的情况,可能的原因有哪些?如何防范?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
36条回答
wangyu_2011
1楼-- · 2020-02-23 09:01
程序里有擦除的函数吗?如果有考虑没有可能被误进入,我遇见过FSL的芯片应该跳转的指令不跳转,太概率很小。查看一下ASM,看看是否主循环后面就是擦除函数。
1 修改程序顺序,
2 将FLASH执行代码以加密方式存在FLASH,用时再解密使用
3 在FLASH操作前增加条码判断。防止误执行影响。
4 改进硬件
newuseruser
2楼-- · 2020-02-23 11:36
wangyu_2011 发表于 2014-9-9 21:25
程序里有擦除的函数吗?如果有考虑没有可能被误进入,我遇见过FSL的芯片应该跳转的指令不跳转,太概率很小 ...

程序里有擦出函数,因为只要写FLASH,就必须整页擦除。按照你的思路,去掉擦除函数,试一下还会不会出问题,如果是这个问题,你提的方法应该都能解决。

只是这个问题在那个项目中出现概率极大,但我觉得擦除函数被误调用的概率应该很小。我一直觉得可能是干扰触发了芯片的某些擦除功能,导致没保护的数据被擦除。
wangyu_2011
3楼-- · 2020-02-23 16:02
芯片干扰触发擦除会有不确定性,可以试着把未使用空间全部放满数据,测试后通过分析数据情况,说不定能找出一些蛛丝马迹。
newuseruser
4楼-- · 2020-02-23 21:50
本帖最后由 newuseruser 于 2014-9-9 21:55 编辑
wangyu_2011 发表于 2014-9-9 21:42
芯片干扰触发擦除会有不确定性,可以试着把未使用空间全部放满数据,测试后通过分析数据情况,说不定能找出 ...


先试试去掉擦除函数的。

暂时不想太费功夫了,基于开发环境等一些原因,已经不在新项目中使用freescale的芯片了。旧项目的新版本也全部外挂了eeprom。
fengyunyu
5楼-- · 2020-02-24 00:42
 精彩回答 2  元偷偷看……
arm_m0
6楼-- · 2020-02-24 00:54
内部模拟的使用起来确实要小心点, 主要是集中在电源的稳定。

读出来都是0XFF,估计是在改写数据时,擦除命令执行成功,而要写数据时,电源不正常,所以无法正常写入。

还有在程序上电初始化时,一定要不要只读FLASH字节值来做作为数据初始化的标志,如果一次保存数据量越多,出错的机会越大

一周热门 更多>