Kinetis K系列Flexmemory模拟EEPROM_exmaple

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档