EEPROM Emulation Driver for the Kinetis E Series Microcontrollers Application Note

Similar documents
Freescale Semiconductor, Inc. Document Number: AN4872 应用笔记 Rev. 0, 03/2014 使用 KE06 上的四线式 I 2 C 接口 作者 :Ben Wang 1 简介 本应用笔记将描述使用 Kinetis E 系列 KE06 上的四线式

KS22 LIN Demo 用户手册

AN4767.fm

i.MX 6SoloX产品使用寿命估算

在Kinetis上使用DMA进行脉冲计数

IBM 全 球 企 业 咨 询 服 务 部 中 国 五 矿 筑 起 人 力 资 源 信 息 大 厦 2 回 顾 篇 慎 选 巧 选 软 件 平 台 由 于 五 矿 集 团 下 属 的 很 多 公 司 是 最 近 几 年 才 加 盟 的 新 成 员 企 业, 这 些 公 司 所 应 用 的 人 力 资

Application Note Transient Voltage Suppressors (TVS) for 表 1 VISHAY 的 SM6T 系列的电特性 25 C 型号 击穿电压 器件标识码 V BR AT I T I T 测试电流 (ma) 关态电压 V RM 漏电流 I RM AT V

2 控 制 面 板 控 制 面 板 控 制 面 板 显 示 打 印 机 的 工 作 状 态, 并 控 制 打 印 机 的 基 本 操 作 图 2 ZT230 控 制 面 板 图 3 ZT220 控 制 面 板

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

加 快 审 阅 和 标 记 工 作 流 程 Acrobat X 通 过 提 供 一 种 可 靠 的 文 件 格 式 扩 展 了 Office 和 SharePoint 的 协 作 服 务, 可 以 使 用 大 多 数 桌 面 应 用 程 序 生 成 这 种 格 式 并 使 用 Acrobat 或 免

河 南 蓝 皮 书 文 化 (2008) 网 络 文 学 主 要 是 指 在 网 上 原 创 的 文 学 作 品 作 为 网 络 文 化 的 主 力 部 分, 网 络 文 学 的 发 展 在 近 年 来 势 不 可 挡 作 为 凭 借 新 兴 媒 介 兴 起 的 文 学, 网 络 文 学 与 传 统

21 flash

《將進酒》

FlexIO 外设模块的主要特性 2 FlexIO 外设模块的主要特性 FlexIO 是指灵活的输入和输出外设 具有多种功能的高度可配置模块 允许模拟标准通信接口 支持多种协议和外设, 包括 : UART I 2 C SPI I 2 S LCD RGB CMT( 载波调制发送器 ) PWM/ 波形生

ControlSafe TM ControlSafe ControlSafe CSC CPU ControlSafe CPU CPU CPU CPU CPU I/O I/O I/O I/O I/O I/O CPU CPU CSC CPU CSC CSC /ControlSafe ControlSaf

CSA SONET/SDH GR 253-CORE ITU-T G.703 ANSI T Ethernet IEEE Std ANSI X Fibre Channel Optical Fibre Channel Electrical U

D2 17/10 食 完 早 餐 去 中 山 陵 和 明 孝 陵, 灵 谷 寺 到 景 区 的 巴 士 : 游 1 游 2 游 路 ( 票 价 在 1-2 元 间 ) 三 个 地 点 中 间 凭 门 票 免 费 乘 坐 景 区 小 火 车 往 来 晚 上 有 力 气 的 话 去 夫 子


Microsoft Word - Atmel-45136A-Pick-Best-Microcontroller-Strom-Eiland-Flodell_Article_CS

Xear 3D USB CH-IN-2 SPKs 2 6 :

发行说明, 版

第 十 一 期 2015 年 2 月 关 于 车 辆 购 置 税 征 收 管 理 有 关 问 题 的 公 告 ( 点 击 跳 转 至 全 文 ) 国 家 税 务 总 局 公 告 2015 年 第 4 号 关 于 电 池 涂 料 消 费 税 征 收 管 理 有 关 问 题 的 公 告 ( 点 击 跳

恒生银行 ( 中国 ) 银行结构性投资产品表现报告 步步稳 系列部分保本投资产品 产品编号 起始日 到期日 当前观察期是否发生下档触发事件 挂钩标的 最初价格 * 最新价格 累积回报 OTZR 年 5 月 5 日 2018 年 5 月 7 日 3 否 728 HK Equity 3.7

基于中断和阻塞机制的MQX I2C驱动程序


HD ( ) 18 HD ( ) 18 PC 19 PC 19 PC 20 Leica MC170 HD Leica MC190 HD 22 Leica MC170 HD Leica MC190 HD Leica MC170 HD

Guava学习之Resources

技 术 文 件

Freescale Semiconductor Document Number: AN4985 应用笔记 Rev. 0,09/2014 使用 Kinetis K22F 和 KV31F MCU 的高速运行模式 本应用笔记针对最新一代 Kinetis K22F 和 KV31F 系列微控制器撰写, 旨在解

Microsoft Word - AN3521_ColdFire MCF521x 微控制器的Flash模块的使用.doc

Logitech Wireless Combo MK45 English

SA-CPCB81TRA-CN (Panduit INdustrial Automation Solutions).indd

xueshu004.doc

Page 2 of 12

秘密大乘佛法(下)

國立臺東高級中學102學年度第一學期第二次期中考高一國文科試題

!! :!!??!!?!??!!!... :... :'?'?! :' ' :'?' :'?' :'!' : :? Page 2

<D2B0D0C4D3C5D1C52DC8CED6BEC7BF202D20BCC7CAC2B1BE>

Microsoft Word - Sunday

鎶ョ焊0


帝国CMS下在PHP文件中调用数据库类执行SQL语句实例



00E-1~15郭通读.doc

CANVIO_AEROCAST_CS_EN.indd

DataNet_Solution2.ai


Applied Biosystems StepOne™ Real-Time PCR System Quick Reference Card for Installation

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

使用FlexIO模块模拟I2S总线主机

FPGAs in Next Generation Wireless Networks WPChinese

PowerPoint 簡報

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

Autodesk Product Design Suite Standard 系统统需求 典型用户户和工作流 Autodesk Product Design Suite Standard 版本为为负责创建非凡凡产品的设计师师和工程师提供供基本方案设计和和制图工具, 以获得令人惊叹叹的产品

华夏沪深三百 EFZR 年 9 月 14 日 2018 年 9 月 14 日 1 否 H 股指数上市基金 不适用 华夏沪深三百 EFZR 年 9 月 14 日 2018 年 9 月 14 日 1

目 錄 使 用 者 介 面... 3 檔 案 頁 籤... 3 配 置... 4 狀 態 列... 4 功 能 區... 5 說 明... 5 文 件... 7 修 訂 雲 形... 7 標 註... 8 文 字... 9 幾 何 中 心 點 的 物 件 鎖 點 等 角 製 圖 格 線.

Moto Z

Avigilon Control Center 6 ACC High Definition Stream Management (HDSM) ACC 6 ( Avigilon Appearance Search ) Avigilon Appearance Search ACC NVR HD Vide

OTZR 年 12 月 13 日 2017 年 12 月 13 日 2 否 中国电信 不适用 中国移动 华能国际 EFZR 年 2 月 13 日 2018 年 2 月 13 日 1 否 盈富基金

B _02_ch.indd

STM32™ I²C

模量 100, 通用型 气相法硅橡胶 ( 续 ) RBB-70 系列 RBB-2100 系列 RBB 硅橡胶 RBB 硅橡胶 RBB 硅橡胶 RBB 硅橡胶 RBB 硅橡胶 RBB 硅橡胶 RBB 硅橡胶 R

nb.PDF

untitled

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

減災扶貧計劃

STM32F2xx EEPROM

运用多媒体提升实验教学有效性的研究.doc

苏州科技学院

User’s Manual

目 录 一 基 本 信 息... 3 二 主 要 指 标... 9 三 实 际 资 本 四 最 低 资 本 五 风 险 综 合 评 级 六 风 险 管 理 状 况 七 流 动 性 风 险... 13

使用 Adobe® Extension Manager CS4

How to Run the MQX™ RTOS on Various RAM Memories for i.MX 6SoloX

《手机维修原理及维修实例详解》目录

PowerPoint 演示文稿

EMC® VNX® Series VNX8000™ Block 安装指南

1. 請 先 檢 查 包 裝 內 容 物 AC750 多 模 式 無 線 分 享 器 安 裝 指 南 安 裝 指 南 CD 光 碟 BR-6208AC 電 源 供 應 器 網 路 線 2. 將 設 備 接 上 電 源, 即 可 使 用 智 慧 型 無 線 裝 置 進 行 設 定 A. 接 上 電 源

! "#$% & ())*! ++, +- +.)! ++ ())* / 0!!""#!

Kinetis SDK K64 Users Guide

Office Office Office Microsoft Word Office Office Azure Office One Drive 2 app 3 : [5] 3, :, [6]; [5], ; [8], [1], ICTCLAS(Institute of Computing Tech

目 录 引 言... 1 一 信 息 编 码 标 准 应 遵 循 的 基 本 原 则... 1 二 数 据 标 准 体 系... 2 三 标 准 制 定 部 门 职 责... 2 四 标 准 制 定 发 布 使 用 基 本 原 则... 3 附 件 1: 数 据 标 准 权 威 制 定 部 门...

以前三星手机自带游戏三星e258游戏 三星e258手机报价 诺基亚手机大全

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

bingdian001.com

幻灯片 1

C 1

手册 doc

焦 阳 微 根 尖 手 术 薛 芃 常 蓓 11 折 页 类 桂 林 医 学 院 廖 远 峰 增 强 牙 齿 健 康, 增 进 身 体 健 康 12 折 页 类 浙 江 中 医 药 大 学 口 腔 医 学 院 洪 骋 远 爱 牙 专 刊 13 折 页 类 南 京 医 科 大 学 附 属 口 腔 医

使用 Adobe® Extension Manager CS4

<4D F736F F D20D5E3BDADC3F1D5FEB5DA39C6DA2E646F63>

深圳市太光电信股份有限公司章程

N79A8211系列单片机内部NVM

ARIS Design Platform

LTB G4H6-A3 - Mag.Layers Scientific Technics Co., Ltd. - Iiic.Cc

2012年全国大学生“西门子杯”工业自动化挑战赛


Kinetis KL1x – 通用超低功耗MCU

DVK530/531扩展板

C110 H320 H510 R510 R ac Wave ac Wave ac Wave 2 MU-MIMO BeamFlex+ MU-MIMO BeamFlex+ DOCSIS /100MbE BeamFlex+ BeamFlex+ G

Transcription:

Freescale Semiconductor 应用笔记 Document Number: AN4903 Rev. 0, 03/2014 面向 Kinetis E 系列微控制器的 EEPROM 仿真驱动器 作者 : 王鹏 可字节编程或字编程且可擦除的电可擦可编程只读存储器 (EEPROM) 在汽车电子控制单元 (ECU) 中经常使用 编程和擦除操作的灵活性使得它适合用于断电时必须保留的以及在运行时需要单独更新的应用变量的数据存储 对于不带 EEPROM 存储器的设备, 可以通过 EEPROM 仿真软件, 使用页面可擦除的 Flash 存储器来仿真 EEPROM 该演示代码显示了如何在 Flash 中仿真 EEPROM 内容 1. 简介...................................... 1 2. 软件架构.................................. 2 3. EEPROM 仿真驱动器示例................... 7 4. 结语...................................... 7 5. 参考...................................... 8 6. 术语表.................................... 8 7. 修订历史记录.............................. 8 1 简介 Kinetis E 系列微控制器 (KE02 除外 ) 没有片上 EEPROM, 但是, 这些器件可以使用本应用笔记中所述的软件在片上 Flash 存储器中存储非易失性数据, 因此, 节省了购置外部 EEPROM 的成本 一个可擦除 Flash 单元相当于一个扇区 由于 Flash 编程只能在已擦除的地址中进行, 因此, 在编程之前必须擦除 Flash 存储器 不使用软件算法直接在 Flash 中编程数据会导致频繁擦除 Flash, 频繁的擦除会缩短 Flash 的寿命, 增加数据写入的时间 面向 Kinetis E 系列的 EEPROM 仿真驱动器在 Flash 上实施固定长度的数据记录方案, 并具有以下功能 : 组织数据项 初始化 EEPROM 检查 EEPROM 状态 读取 写入和删除数据项包含一种用于保存数据的算法, 可避免直接和频繁写入 Flash 2014 Freescale Semiconductor, Inc. 保留所有权利

软件架构 2 软件架构 图 1 演示了一个简单的 API 函数, 供客户从 Flash 存储器中实施 EEPROM 仿真驱动器 下面列出了 API 函数 : 图 1. 时序图元素 uint8_t EE_Init(uint32_t *pcurrentaddress,uint32_t u32busclock); uint8_t EE_Write(EE_ItemInfoPtr pwriteminfo,uint32_t *p32currentaddress); uint8_t EE_Read(EE_ItemInfoPtr prditeminfo,uint32_t u32currentaddress); uint8_t EE_SearchIndex(uint32_t *pcurrentaddress); EEPROM 驱动器中定义了四种状态 在下面的内容以及整个文档中, 每种状态称为项 : #define EE_ITEM_INFO_NULL0xff #define EE_ITEM_INFO_PROCESSING0xe7 #define EE_ITEM_INFO_VALID0xa5 #define EE_ITEM_INFO_INVALID0x00 下面逐个描述了四种状态 使用此信息来实施状态机, 以识别有效信息 EE_ITEM_INFO_NULL 表示当前数据项为 NULL 该数据项有效, 并且可对其编程, 以便将新数据写入当前地址 EE_ITEM_INFO_PROCESSING 表示当前数据项正在处理中 过程可以是 : 正在写入当前项 当前项不完整不适合整个更新的序列 向 Flash 写入当前项时断电 EE_ITEM_INFO_VALID 表示当前数据项有效 在此状态下, 可以正常使用该数据项 EE_ITEM_INFO_INVALID 表示当前数据项无效 数据项已变旧, 并且已被替换 2 Freescale Semiconductor

软件架构 2.1 存储器映射 此 EEPROM 仿真算法保存数据项 用户还可以定义每个数据项的长度 有关编程说明, 请参考文件 ee_emulation.h 中的以下宏定义 /* 这里确保长度能被 4 整除, 使 Flash 操作遵循 4 字节对齐原则 */ #define EE_ITEM_INFO_LENGTH16 #if ((EE_ITEM_INFO_LENGTH%4)!= 0 ) #error "please ensure EE information length is align with 4 bytes" #endif 为了节省 Flash 存储空间并简化代码, 定义的长度必须能被 4 整除 一个数据项包含一个结构体, 如下所示 : typedef struct { uint8_t u8flag; // 表示项状态 uint8_t u8infobuff[ee_item_info_length - 1]; // 数据项缓冲区 }EE_ItemInfoType,*EE_ItemInfoPtr; 此处的 u8flag 表示项的状态 图 2 演示了以典型方式为非易失性数据存储分配资源的 Kinetis E 系列的默认存储器映射 图 2. Flash 中的存储分配 2.2 EEPROM 寿命期优化 用户必须指定 EEPROM 仿真驱动器的起始地址和结束地址 还必须为 EEPROM 仿真驱动器 EEPROM 大小和每个数据项的长度保留足够的空间 #define EE_START_ADDRESS0xC000// 起始地址 #define FLASH_PAGE_SIZE512// 每个页面或扇区的字节数 #define EE_PAGE_NUMBER2// EEPROM 的保留页面数 #define EE_END_ADDRESSEE_START_ADDRESS +FLASH_PAGE_SIZE*EE_PAGE_NUMBER-1 上面的宏定义了起始地址 用于 EEPROM 的页面数 每个页面 ( 即扇区 ) 的字节数, 以及用于 EEPROM 仿真驱动器的扇区和结束地址 Freescale Semiconductor 3

软件架构 最佳 EEPROM 寿命期是使用公式 1 中的公式估算的 其中 : Fc 表示闪存编程周期 对于 Kinetis E 系列, 典型的周期数为 100K EE 的大小 表示为 EEPROM 保留的 Flash 空间 项的长度 表示每个项的数据长度 2.3 EEPROM 初始化 寿命期 = Fc EE 的大小 / 项的长度公式 1 要使用 EEPROM 仿真驱动器, 需要调用 EE_Init 函数来完成 EEPROM 初始化 此函数将执行 Flash 初始化, 并搜索有效的 Flash 地址 它会搜索分配给 EEPROM 的整个 Flash 空间, 查找并返回有效数据项的地址, 如果找不到有效的数据项, 则返回 NULL 数据项地址 对于 Kinetis E 系列微控制器, 需要初始化 Flash 以将 Flash 时钟配置为大约 1MHz, 否则将发生 Flash 操作错误 初始化 Flash 时钟后, 可以擦除或编程 Flash 调用初始化函数后, 可以通过 EE_Read 通知找到了有效数据项, 并可以将新数据项写入 Flash 图 3 提供了详细的初始化流程图 图 3. 初始化流程图 4 Freescale Semiconductor

软件架构 2.4 将数据写入 EEPROM 要使用 EEPROM 仿真驱动器更新新的数据项, 请调用 EE_Write 函数 该写入函数会将新数据更新到下一个数据项的地址, 然后将当前数据项的标志更改为无效 这可以防止在 Flash 写入过程中, 由于意外的原因 ( 例如断电 ) 而导致新数据项损坏 使用状态机提供的算法可以还原数据信息, 即旧的有效信息 图 4 演示了如何将数据写入 EEPROM 仿真驱动器 图 4. 写入 EEPROM 流程图 EEPROM 仿真驱动器首先会检查当前数据项的状态, 然后确定如何将新数据项更新到下一个地址 : 如果当前状态为 NULL, 则它会直接更新下一个数据项的地址 如果当前状态为 VALID, 则它会确定下一个数据项的状态, 如果该状态为 NULL, 则将新数据项保存到下一个地址, 然后将当前数据项的标志更改为 INVALID 将数据项更新到 Flash 中后, 它首先会将标志 EE_ITEM_INFO_PROCESSING 写入新的数据项 数据项更新完成后, 它将该标志更改为 EE_ITEM_INFO_VALID 如果在 EE_ITEM_INFO_PROCESSING 更新过程中断电, 当前数据项的标志将更新为 EE_ITEM_INFO_INVALID 电源恢复后, 前一数据项的标志将先显示为 EE_ITEM_INFO_VALID, 然后还原到新地址 该驱动器使用 EE_Init() 将已用数据项的地址更改为 EE_ITEM_INFO_INVALID 图 5 演示了如何在更新出错后还原数据项的信息 Freescale Semiconductor 5

软件架构 图 5. 从旧数据项中还原数据 2.5 从 EEPROM 中读取数据 此 API 函数可以从 Flash 中读取当前数据项, 并将其复制到用户指定的 RAM 地址 uint8_t EE_Read(EE_ItemInfoPtr prditeminfo,uint32_t u32currentaddress) { if( prditeminfo->u8flag == EE_ITEM_INFO_INVALID ) { return FALSE; } memcpy((void *)prditeminfo, (uint8_t *)u32currentaddress,sizeof(ee_iteminfotype)); return TRUE; } 6 Freescale Semiconductor

EEPROM 仿真驱动器示例 3 EEPROM 仿真驱动器示例 图 6 显示了如何在此项目中添加文件, 以使用 EEPROM 仿真驱动器 图 6. EEPROM 驱动器 必须同时使用 EEPROM 仿真驱动器和非易失性存储器驱动器 Flash 操作 ( 包括初始化 编程和擦除 ) 需要使用以下 API 函数 uint16_t FLASH_Init(uint32_t BusClock); uint16_t FLASH_Program(uint32_t wnvmtargetaddress, uint8_t *pdata, uint16_t sizebytes); uint16_t EEPROM_EraseSector(uint32_t wnvmtargetaddress); 图 7 演示了 EEPROM 仿真驱动器的基本使用流程 图 7. EEPROM 仿真驱动器的使用流程图 随附的 AN4903SW 中提供了一个软件演示, 其中介绍了如何在 Kinetis KE06 上使用 EEPROM 仿真驱动器 软件驱动器在 FRDM-KE06Z 板上运行 该演示展示了一个用于向 EEPROM 写入新数据的简单应用 4 结语 本文档介绍了在 Flash 中实施 EEPROM 的方法 使用此方法, 用户可以在 Kinetis E 系列微控制器上快速实施 EEPROM 功能, 以及集成软件算法以提高存取速度并优化非易失性存储器的寿命 本文档还介绍了在执行更新操作期间发生断电等意外状况时还原机器的功能 总而言之, 客户可以方便地使用 EEPROM 并将它迁移到不同的平台 Freescale Semiconductor 7

参考 5 参考 面向 Kinetis E 系列微控制器软件的 EEPROM 仿真驱动器 (document number:an4903sw) KE04 子系列参考手册 (document number:mke04p24m48sf0rm) KE06 子系列参考手册 (document number:mke06p80m48sf0rm) KE04 子系列数据手册 (document number:mke04p24m48sf0) KE06 子系列数据手册 (document number:mke06p80m48sf0) 面向 MC9S12C32 的 AN2302 EEPROM 仿真 面向 M68HC908 微控制器的 AN3040 EEPROM 仿真驱动器 6 术语表 NVM EEPROM FCCOB WDOG MCG 非易失性存储器 电可擦除可编程只读存储器 Flash 通用命令对象 看门狗 多用途时钟发生器 7 修订历史记录 修订版 0 为本文档的初始版本 8 Freescale Semiconductor

修订历史记录 Freescale Semiconductor 9

How to Reach Us: Home Page: freescale.com Web Support: freescale.com/support 本文档中的信息仅供系统和软件实施方使用飞思卡尔产品 本文并未明示或者暗示授予利用本文档信息进行设计或者加工集成电路的版权许可 飞思卡尔保留对此处任何产品进行更改的权利, 恕不另行通知 飞思卡尔对其产品在任何特定用途方面的适用性不做任何担保 表示或保证, 也不承担因为应用程序或者使用产品或电路所产生的任何责任, 明确拒绝承担包括但不局限于后果性的或附带性的损害在内的所有责任 飞思卡尔数据表和 / 或技术规格中可能提供了 典型 参数, 这些参数在不同应用中可能并且确实不同, 实际性能也可能会随时间变化 所有操作参数, 包括 典型值 在内, 必须由客户的技术专家根据每个客户应用进行验证 飞思卡尔未转让与其专利权及其他权利相关的许可 飞思卡尔销售产品时遵循以下网址中包含的标准销售条款和条件 :freescale.com/salestermsandconditions Freescale, the Freescale logo, and Kinetis are trademarks of Freescale Semiconductor, Inc., Reg. U.S. Pat. & Tm. Off. All other product or service names are the property of their respective owners.arm and and the ARM Power logo are the registered trademarks of ARM Limited. 2014 Freescale Semiconductor, Inc. Document Number: AN4903 Rev. 0 03/2014