STM32F4系列用Flash模拟Eeprom

所需积分/C币:34 2018-06-04 10:12:17 1.03MB PDF
收藏 收藏
举报

STM32F系列没有EEprom,要掉电保存数据,可以用Flash来替代。但一般的使用方法,存在磨损,用这个文档的方法,可以达到最小的磨损,达到最大限度的擦写循环次数。
AN3969 表格索引 表格索引 表1 外部 EEPROM与仿真 EEPROM之间的差异 5 表2 仿真页可能的状态和相应操作 8 表3 sTM32F40X/STM32F41 x Flash扇区. 表4. AP|定义....... 11 表5 EEPROM仿真机制的内存占用量 12 表6 系统时钟为168MHz的 EEPROM仿真时间 14 Fash编程巫数 15 表8. 应用设计. 18 表9 文档版本历史 文档022108第1版 3/20 图片索引 AN3969 图片索引 图1 在page0与page1之间切换的头状态 图2 EEPROM变量格式 图3 数据更新流程 图4 Write variable流程图. 图5 EEPROM仿真的Fash古占用情况(机制和存储) 90236 图6 四页的页交换机制(耗损均衡) 4/20 文档D022108第1版 AN3969 外部 EEPROM与仿真 EEPROM之间的主要差异 外部 EEPROM与仿真 EEPROM之间的主要差异 EEPROM是许多需要非易失性数据存储的嵌入式应用的关键组件,它在运行期问以宇节或 字为粒度。 这些系统中使用的微控制器通常是基于嵌入式Fash存储器的。为了避免使用这些组件、节 约PCB空间并降低系统成本,可使用STM32F41 X Flash代替外部 EEPOM,模拟代码和数 据的存储。 但是与 Flash同的是,外部 EEPROM在重写数据之前并不需要执行擦除操作来释放空 问。要将数据存储到嵌入式 Flash中,需要执行特殊的软件管理 这种仿真软件机制由许多因素决定,包括 EEPROM可靠性、所使用的 Flash的架构以及产 品要求等。 对于使用相同Fash技术的任何微控制器(不局限于STM32F40x/STM32F41x系列产品), 嵌入式Fash和外部串行 EEPROM之间的主要差异完全一致。表1中汇总了这些主要差异。 表1. 外部 EEPROM与仿真 EEPROM之间的差异 外部 EEPROM 特性 使用片上Fash仿真的 使用片上备份SRAM仿真的 (例如,M24c64 EEPROM EEPROM(1) 2c串行访问 EEPROM) -5ms内的随机字节写入 写时间 字绽程时间=20ms 半字编程时间:30μs到 5m内的页(32字节)写|23725ms(2 CPU速度,O等待周期 入。字编程时间=625us 擦除时间NA 扇区(大页面)擦除时间:1s到NA 3s(取决于扇区大小) 启动之后即与CPU相关。 如果写操作因软件复位而屮断, EEPROM仿真算法会停止,但是可以按字节(8位)、半字 写方法 启动之后即与CPU无关 当前的Fash写摸作不会因cPU(16位)或全字(32位)形式进 只需要正确供电 复位而中断。 行访问 可以按字节(8位)、半字软件复位会中断写荣作 16位)或全字(32位)形式进 行访问 串行:100μs 读访问 随机字:92μs 并行:(@168MH2)半字方问时CPU速度,1等待周期 间为0.68μs到251s 页:每字节225μs 每扇区(大页面)1万次循环。 写/擦陰循 环次数 100万次写循环 使用多个片上Fash页等同于增只要存在ⅤBAT,就没有限制 加写循环次数。请参见第3.4: 循环性能和页分配。 1.有关备份SRAM用法的详细信息,请参见STM32F40X41X参考手奶(RMo090)的“电氾备份域”部分 2.有关更多细信息,请参见第2.5草: EEPROM仿真的间。 文档022108第1版 外部 EEPROM与仿真 EEPROM之间的主要差异 AN3969 写访问时间上的差异 由于 Flash的写访问时间较短,所以对于一些关键参数,在仿真 EEPROM中的存储速度要 比在外部串行 EEPROM中更快,从而可以改善数据存储。 1.2 擦除时间上的差异 擦除时间方面的差异是独立 EEPROM与使用嵌入式 Flash的仿真 EEPROM之间的另一个 重大差异。与 Flash不同, EEPROM在写之前不需要执行擦除操作来释放空间。这就意味 着必须执行某种形式的软件管理,才能将数据存储到Fash中。此外,由」 Flash中的块擦 除过程需要较长时间,所以在改计 Flash管理软件时,应注意考虑可能会中断擦除过程的电 源关闭和其它一些意外事件(例如复位)。要设计强大的 Flash内存管理软件,必须透彻了 解 Flash擦除过程。 注 即使CPU复位,也不会归正在府STM32F40XSTM32F41X入式Fash执行的扇区擦除 或批量擦除作 13写方法上的相似之处 外部 EEPROM与貝有STM32F40x/STM32F41X嵌入式Fash的仿真 EEPROM之问的一个 相似之处是写方法。 独立外部 EEPROM:一旦CPU启动后,字的写操作便不能被CPU复位中断。只有供电 故障才会中断写过程,因此正确设置去耦电容的大小可以保护独立 EEPROM中的整个 写过程 使用嵌入式Fash仿真的 EEPROM:由CPU启动后,写过程可由电源故障中断。即使 CPU复位,也不会中断正在对STM32F40xSTM32F41X嵌入式Fash执行的字写入操 作。 EEPROM算法会停止,但是当前的Fash字写入操作不会因CPU复位中断。 6/20 文档D022108第1版 AN3969 实现 EEPROM仿真 实现 EEPROM仿真 2.1 原理 EEPROM仿真可以通过多种方式实现,但要注意Fash限制和产品要求。下面详述的方法 要求为非易失性数据分配至少两个相同大小的 Flash扇区:一个在开始时擦除,支持逐字编 程:另一个在需要对前一扇区执行垃圾回收时接管工作。占用每扇区前半个字(16位)的头 字段指示扇区的状态。在本文档的其余部分,将每一个扇区视为一页,这些页分别称为 Page0和Page1 头字段位于每页的基准地址上,并提供该页的状态信息 每个贞都有三个可能的状态 ERASED:页为空。 RECEIVE_DATA:页正在从另一个满页接收数据。 VALID PAGE:页中包含有效数据,并且在将所有有效数据完全传输到已擦除页之前, 此状态不会改变。 图1显示页的状态如何改变 图1 在page0与page1之间切换的头状态 Page0有效 Page1已擦除 写Page0数据 Page0口满 Page0有效 Page1接收 复制Page0数据->Page1 擦除P Page0己擦除 Page1有效 写Page1数据 Page1t满 Page0接收 Page1有效 复制Page1数据->Page0 擦除Page1 a14606 文档022108第1版 7/20 实现 EEPROM仿真 AN3969 表2 仿真页可能的状态和相应操作 PageO ERASED RECEIVE DATA VALID PAGE 无效状态 ERASED 操作:海两个页擦除并将Pag0标记为 VALID PAGE擦除wye0用作有效页并 操作:将Page1擦除并将操作:将pa page0帑式化 RECEIVE DATA|操作:擦除Page0并将 无效状态 操作:将page0用作有效页并 将上次更新的变量从page0传 Pag标记为 VALID PAGE|操作:将两个擦除并将pg0送到pa9,同时将page1标 记为有效页并擦除page0 操作:将page1用作有效页并 VALID PAGE 操作:将page用作有效将上次史新的变量从page1传 无效状态 页并擦除 pageo 送到page0,.同时将page0标/操作:将两个页擦除并将pag9g 记为有效页并擦除page1 格式化 通常,使用这种方法时,用户事先并不了解变量更新频率。 本文档所述的软件和实现方法使用两个大小为16KB的Fash扇区(扇区2和扇区3)来仿 真 EEPROM 由碗区2和婉区3的大小比STM3F40XSTM32F41 x Flash的其它扇区小,因此我们遒择这 两个扇区(表3:STM32F40XSTM32F41 x Flash扇区中个绍了STM32F40STM32F41xF|ash 的主器块划分)。根据具体应用和用户需要,可以送择更人的应区。 表3 STM32F40XSTM32F41 X Flash扇区 名称 扇区大小 扇区0到扇区3 16 KB 扇区4 64 KB 扇区5到扇区11 128KB 每个变量元素都巾一个虚拟地址和值来定义,它们将存储在Fash中,用于执行后续检索或 更新(在实施的软件中,虚拟地址和数据的长度均为16位)。如果修改了数据,与之前虚 拟地址相关联的已修改数据将会存储到新的Fash位置。数据检索会返回最新的薮据值 8/20 文档D022108第1版 AN3969 实现 EEPROM仿真 图2 EEPROM变量格式 EEPROM变量元素=32位字 变量数据(16位) 4096个元素 变量虚拟地址(16位) (16KB扇区) pageO 扇区2 扇区3 MS19562V1 22使用实例:应用示例 以下示例显示的是对具有以下虚拟地址的三个 EEPROM变量(∨ar1、∨ar2和Var3)的软 件管理 var1的虚拟地址 5555h ar2虚拟地址 6666h ∨ar3虚拟地址 7777h 文档022108第1版 9/20 实现 EEPROM仿真 AN3969 图3 数据更新流程 Page Page1 Paged Page1 FFIFFIFF FE 12 FFL FF FFFFFF FF 777 FF FF FFFFFF 2吗Ff 12451GFF 和回叫|var3lFH[EF|mvar3乙 加va17回 回|=1232[曲124hp回回|=Bcc-[[l FFFFFFFF FFFFIFFFF 555[ 阳F吧F FFFFFFI FFFFFFFFI FFFFFFFF FFFFFFFF FFFFIFFFF 活动贝=Page0 百动页=Pace0 加var2=3434h 2B2[ 12|321LH[F 2I32][64[64 FFF|64k641 17777 FF FF 7777[F[F 777【66|6 FF|EF|[6666 5454 以7FF 32[32F[F 32团7团71 F|EF|7777 BCBCIFF FF 7777FFFF 团[BD擦除回F BDI BD 22|45 64645/z 224515555 66|66|FFFF B FF 5551 FFF 活动页=Page0 活动页=Page0 活动页=Page1 活动页=Page1 ai14609 23 EEPROM仿真软件说明 本节介绍使用 STMicroelectronics提供的STM32F40X/STM32F41 X Flash驱动程序针对 EEPROM仿真而执行的驱动程序。 此外还提供了一个样本演示程序,用于使用三个变量(Var1、Var2和a3)来演示和测试 EEPROM仿真驱动程序,而这三个变量是在软件的 main. c文件所声明的 irtAddvartab 表中定义的。 此项目除了Fash库源文件之外,还包含三个源文件 eeprom.c:其中包含 EEPROM仿真固件函数: EE工nit( EE Format( EE Findvalidpage( EE Veri=yPaceFullWritevariable( EE Readvariable ( EE PageTransfer() EE Writevariable( 10/20 文档D022108第1版

...展开详情
试读 20P STM32F4系列用Flash模拟Eeprom
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
关注 私信 TA的资源
上传资源赚积分,得勋章
最新推荐
STM32F4系列用Flash模拟Eeprom 34积分/C币 立即下载
1/20
STM32F4系列用Flash模拟Eeprom第1页
STM32F4系列用Flash模拟Eeprom第2页
STM32F4系列用Flash模拟Eeprom第3页
STM32F4系列用Flash模拟Eeprom第4页

试读结束, 可继续读2页

34积分/C币 立即下载 >