Kinetis K系列Flexmemory模拟EEPROM_exmaple
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
飞思卡尔Flexmemory例程指南
例程功能
飞思卡尔Kinetis 100MHz Silicon1.x 产品flexmem_demo例程实现使用FlexRAM以及FlexNVM相互结合模拟出EEPROM的功能,其中划分FlexRAM的部分区域作为EEPROM的实际存储区域,划分FlexNVM的部分区域作为EEPROM的备份区。模拟出EEPROM存储器后,采用PIT定时15秒写读EEPROM区域,并通过波特率为115200bps的串口打印方式记录。
运行平台
✓TWR-K40X256
✓TWR-SER (可选)
✓TWR-ELEV(可选)
✓CodeWarrior V10.x/IAR ARM IDE
FLASH内存模块简介
飞思卡尔FLASH内存模块包括以下几个内存区域:
∙编程flash-非易失性flash内存,用于存储编程代码与数据
∙FlexNVM-非易失性flash内存,用于存储编程代码,数据以及EEPROM的备份数据∙FlexRAM内存-可字节写RAM内存,用于传统RAM功能或者EEPROM的存储
K40芯片的内存大小及地址情况如下:
TWR-K40X256使用的芯片是K40X256VMD100和K40DX256ZVMD10的内存大小一样,即Pflash为256KB,FlexNVM为256KB,FlexRAM为4KB。
要采用FlexRAM以及FlexNVM实现EEPROM,首先需要划分FlexRAM以及FlexNVM的相关区域,FTFL模块有专门的EEPROM的分区指令如下:
其中,FCCOB4的值有两部分组成,即FCCOB4[EEESPLIT]和FCCOB4[EEESIZE]。这两部的组合值决定了EEPROM两块内存(Subsystem A, Subsystem B)的比例以及大小,具体查看用户手册的表28-70. Valid EEPROM Data Set Size Codes.这部分内存来自FlexRAM。FCCOB5的值即FCCOB5[DEPART],是用于划分FlexNVM区域,将此分为数据flash区域以及EEPROM备份区域两部分。FlexNVM的总大小为256K。
具体的分区情况如下图所示,其中红色数据是本例程的分配值。
模拟出的EEPROM寿命的计算公式为:
其中,
Endurance: 每个FlexRAM区域平均最小的写次数。
E-flash:FlexNVM中每个Subsystem中用于EEPROM的备份区域大小。EEESPLIT: subsystem的分配因子,值有1/8,1/4,1/2。
EEESIZE: 总的EEPROM的大小。
Record Efficiency: 写32bit与16bit为0.5;写8bit为0.25。
Baseline Endureance: 正常的flash寿命,10k次
本例程的
运行例程(CodeWarrior)
1)使用USB cable连接TWR-K40X256开发板Min-B USB连接器(J16);
2)加载Flexmem_demo工程:
∙选择菜单【File】->【Import】->【Existing Projects into
Workspace】
∙选择项目所在路径,并指定所要加载项目,点击完成:
3)选择【MK40X256VMD100_INTERNAL_RAM】,点击进行编译;
4)编译成功后,点击调试器箭头,选择【Debug Configurations】进入调试器配置
界面;
5)选择【k40-flexmem_demo_MK40X256VMD100_INTERNAL_RAM_PnE OSJTAG】,点
击【Debug】进入调试界面;
6)进入调试界面后,点击运行例程。
运行例程(IAR)
1)使用USB cable连接TWR-K40X256开发板Min-B USB连接器(J16);
2)加载Flexmem_demo工程后,选择【RAM_128KB】,点击进行编译;
3)编译成功后,点击进入调试界面;
4)进入调试界面后,点击运行例程。
串口配置
选择串口调试工具,使用下图配置信息;
注:其中端口号为实际硬件的串口号,查看【我的电脑】->【设备管理器】->【端口】。代码说明
主程序代码说明,在文件flexmem_demo.c中
Main函数代码说明,在文件flexmem_demo.c中
Partition_flash()函数代码说明,在文件flexmem_demo.c中
PIT中断服务函数代码说明,在文件flexmem_demo.c中
Flexmem_d emo 例程主函数流程图
运行效果(通过串口助手查看)第一次,需要分区:
第二次,不需要分区:
参考资料
TWR-K40X256开发板用户手册:
/files/32bit/doc/ref_manual/TWR-K40X256-
UM.pdf?fpsp=1&WT_TYPE=Users
Guides&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT_ASSET=Documentation Kinetis K系列快速指南:
/files/32bit/doc/quick_ref_guide/KQRUG.pdf?fp sp=1&WT_TYPE=Quick Reference
Guides&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT_ASSET=Documentation
K40 100MHz Silicon1.x开发手册:
/files/32bit/doc/ref_manual/K40P144M100SF2RM. pdf?fpsp=1
K40 0M33Z勘误表:
/files/microcontrollers/doc/errata/KINETIS_0M 33Z.pdf?fpsp=1&WT_TYPE=Errata&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT _ASSET=Documentation