本帖最后由 FSL_TICS_ZP 于 2014-10-8 16:34 编辑
曾经批量使用飞思卡尔的AC16系列单片机,一直使用FLASH模拟eeprom,一直没有什么问题,直到用于一个风机控制系统,发现数据被大面积改写,均被改写为FF,开始怀疑是上电或下电过程中的不稳定造成,在公司进行频繁的上下电实验,发现确实会导致数据被改写,于是将复位芯片的复位电压值提高到4.3V,发现问题依旧。后又增加了很多抗干扰电路,依然无果。后因为项目紧急,采用了现场固定数据的方式应付过去。
不是各位是否遇到类似的情况,可能的原因有哪些?如何防范?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1 修改程序顺序,
2 将FLASH执行代码以加密方式存在FLASH,用时再解密使用
3 在FLASH操作前增加条码判断。防止误执行影响。
4 改进硬件
程序里有擦出函数,因为只要写FLASH,就必须整页擦除。按照你的思路,去掉擦除函数,试一下还会不会出问题,如果是这个问题,你提的方法应该都能解决。
只是这个问题在那个项目中出现概率极大,但我觉得擦除函数被误调用的概率应该很小。我一直觉得可能是干扰触发了芯片的某些擦除功能,导致没保护的数据被擦除。
先试试去掉擦除函数的。
暂时不想太费功夫了,基于开发环境等一些原因,已经不在新项目中使用freescale的芯片了。旧项目的新版本也全部外挂了eeprom。
读出来都是0XFF,估计是在改写数据时,擦除命令执行成功,而要写数据时,电源不正常,所以无法正常写入。
还有在程序上电初始化时,一定要不要只读FLASH字节值来做作为数据初始化的标志,如果一次保存数据量越多,出错的机会越大
一周热门 更多>