|
本帖最后由 FSL_TICS_Robin 于 2014-7-28 15:31 编辑
[经验分享]K系列的EEPROM备份区是否可以小于16倍的EEPROM
一, 问题描述
今天遇到一个客户,问了这个问题,所以在此和大家分享下。
关于kinetis K系列的eeprom,大家都知道,是使用flexRAM以及flexNVM分区组合模拟而成,但是在flexNVM中到底分配多少空间给eeprom作为备份区呢?当然,分配的越大对于擦写寿命越有好处。 而最小又能分配多少呢?
从我们的reference manual中flash memory章节,看到这句话:
图1
意思就是,eeprom的备份区至少为flexRAM中eeprom大小的16倍,有些客户就想,如果使用的产品的flexNVM是32K, flexRAM是2K,然后配置EEPROM的大小为2K,那么16倍的eeprom的备份区就得要32K,则整个的flexNVM就都作为了备份区,这样就没有data flash区了。能否配置小点的eeprom备份区,从而留出部分的dataflash呢?
二, 问题解答
其实,通过测试,也不一定要配置备份区为16倍的eeprom,当然,不能将备份区配置为0,这样eeprom就无法工作了。但是,如果备份区大小小于16倍的eeprom,那么相关eeprom的数据就不能直接参考datasheet了,datasheet的数据是备份区在16倍eeprom以上的。而且,擦写寿命肯定会缩短,具体缩短为多少,就没有定量了。所以,如果需要保证擦写寿命的话,建议大家还是使用16倍以上的备份区。
另外,由于模拟eeprom的技术,其实是需要每个字节至少16个字节的备份区,如果少于的话,在实际长期使用中,可能会出现写方面的问题,所以如果大家考虑到稳定性,最好还是备份16倍以上,如果读写次数不高的话,可以直接使用flash的方式读写,这样就会减低因为备份区的问题带来的风险。
三, 测试结果
本文以TWR-K20D70M开发板为测试平台,芯片为MK20DX256VLL7,测试是否可以使用小于16倍备份区的eeprom。该芯片的flexNVM为32KB, 地址为0x1000_0000 –0x1000_7FFF ,flexRAM的大小为2KB, 地址范围为:0x1400_0000 –0x1400_07FF。
配置eeprom大小(flexRAM)为2KB,配置flexNVM中的eeprom的备份区为16KB, dataflash也为16KB.
则,就需要配置FCC0B4=0x33, FCCOB5=0X02
代码功能是,在如下地址:
#define LONGWORD_COUNTER_ADDR 0x14000040
#define WORD_COUNTER_ADDR 0x14000044
#define BYTE_COUNTER_ADDR 0x14000046
#define BYTE_LAST_ADDR 0x14000700
读写数据,断电后看是否还在。
结果显示,首次分区:
图 2
重新上电:
图3
四, 附件分享
附件给出了测试代码,以及文档,并且加上一个eeprom的应用笔记,需要的网友可以拿去。
PS:本帖可从飞思卡尔版块置顶帖:飞思卡尔Kinetis资料大本营的飞思卡尔论坛支持小组【经验分享】帖汇总链接进入。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|