STM32F40x/STM32F41x 微控制器中的 EEPROM 仿真) J; u( X4 R0 \ / g) V. |6 w# z) N% m, k' ? 简介 3 a1 e. V8 A2 x8 } Y) s . G/ g5 f f7 l6 F# h) @1 c 在工业应用中经常使用 EEPROM(电可擦除可编程只读存储器)来存储可更新的数据。EEPROM 是用在复杂系统(例如计算机)和其它电子器件中的一种永久(非易失)存储器存储系统,它可以在电源故障时存储和保留少量数据。 & N/ H% T9 D0 N% f) w 为降低成本,外部 EEPROM 可以用 STM32F40x/STM32F41x 的以下功能之一替代: ● 片内 4 KB 备份 SRAM ● 片内 Flash,具有特定软件算法 3 P) e% A: i! F) o4 q& F% A3 ^ STM32F40x/STM32F41x 具有 4 KB 备份 SRAM,当主 VDD 电源断电时,可通过 VBAT 电源为该 SRAM 供电。 借助 CPU 频率下的高速访问(通常在用电池供电的应用中)优势,只要 VBAT 存在,此备份SRAM 就可以用作内部 EEPROM(不带任何附加软件)。 但是,当备份 SRAM 用于其它目的并且/或者应用不使用 VBAT 电源时,片内 Flash(具有特定软件算法)可以用于仿真 EEPROM 存储器。 2 A' `2 q ~2 _* k ( j: G0 L+ ]& |" j6 s 本应用笔记介绍了使用 STM32F40x/STM32F41x 器件的片上 Flash 通过仿真 EEPROM 机制来取代独立 EEPROM 的软件解决方案。 2 |. t! R& _' u* l) _ ; R7 U* G1 x0 L o9 ^1 l' E- ` 要实现这种仿真,至少要使用 Flash 中的两个扇区。EEPROM 仿真代码会在扇区填满后,以对用户透明的方式交换数据。 5 ~2 H0 g( M# n1 m+ z8 b3 X 此应用笔记随附的 EEPROM 仿真驱动程序满足以下要求: ● 提供简单 API 的轻量级实现,这种 API 由初始化、读写数据和降低存储器占用量三种功能构成。 ● 简单且可轻松更新的代码模型 5 B& I7 ~' m7 m" q ● 对用户透明的清除和内部数据管理 ● 后台扇区擦除 ● 至少使用两个 Flash 扇区,如果需要进行耗损均衡,则需要更多 要仿真的 EEPROM 大小可在扇区大小的限制范围内随意调整,并允许 EEPROM 使用扇区的最大空间。/ `# J7 `1 V' ?9 h2 e0 D" _7 K 1 外部 EEPROM 与仿真 EEPROM 之间的主要差异 o/ z" o( H2 S$ \ EEPROM 是许多需要非易失性数据存储的嵌入式应用的关键组件,它在运行期间以字节或字为粒度。 ( J9 U* i. _9 T" `# s 4 G8 d6 j5 L3 O; ? 这些系统中使用的微控制器通常是基于嵌入式 Flash 存储器的。为了避免使用这些组件、节约 PCB 空间并降低系统成本,可使用 STM32F41x Flash 代替外部 EEPOM,模拟代码和数据的存储。 9 b3 b% R4 F3 T 但是与 Flash 不同的是,外部 EEPROM 在重写数据之前并不需要执行擦除操作来释放空间。要将数据存储到嵌入式 Flash 中,需要执行特殊的软件管理。 这种仿真软件机制由许多因素决定,包括 EEPROM 可靠性、所使用的 Flash 的架构以及产品要求等。 6 u q& s# \2 T' J$ t( d5 K 对于使用相同 Flash 技术的任何微控制器(不局限于 STM32F40x/STM32F41x 系列产品),嵌入式 Flash 和外部串行 EEPROM 之间的主要差异完全一致。表 1 中汇总了这些主要差异。/ Z% G2 U8 U: y S' y; G( U6 N9 u ( W3 S" P( Q2 @) `7 E' u# K 1.1 写访问时间上的差异 . ]5 C, k1 |( C7 N2 z" q: x由于 Flash 的写访问时间较短,所以对于一些关键参数,在仿真 EEPROM 中的存储速度要比在外部串行 EEPROM 中更快,从而可以改善数据存储。 $ ]6 ~) W$ x7 v$ k2 s1.2 擦除时间上的差异 ( d" ?/ W& |" a; c, o擦除时间方面的差异是独立 EEPROM 与使用嵌入式 Flash 的仿真 EEPROM 之间的另一个重大差异。与 Flash 不同,EEPROM 在写之前不需要执行擦除操作来释放空间。这就意味着必须执行某种形式的软件管理,才能将数据存储到 Flash 中。此外,由于 Flash 中的块擦除过程需要较长时间,所以在设计 Flash 管理软件时,应注意考虑可能会中断擦除过程的电源关闭和其它一些意外事件(例如复位)。要设计强大的 Flash 内存管理软件,必须透彻了解 Flash 擦除过程。 注: 即使 CPU 复位,也不会中断正在对 STM32F40x/STM32F41x 嵌入式 Flash 执行的扇区擦除或批量擦除操作。 & r" M2 g( v+ r& t9 }7 B0 Y' L3 q1.3 写方法上的相似之处 外部 EEPROM 与具有 STM32F40x/STM32F41x 嵌入式 Flash 的仿真 EEPROM 之间的一个相似之处是写方法。 % Z+ |3 Q2 y5 j% f● 独立外部 EEPROM:一旦 CPU 启动后,字的写操作便不能被 CPU 复位中断。只有供电故障才会中断写过程,因此正确设置去耦电容的大小可以保护独立 EEPROM 中的整个写过程。 & v0 G/ @+ x; E, J5 E, g● 使用嵌入式 Flash 仿真的 EEPROM:由 CPU 启动后,写过程可由电源故障中断。即使CPU 复位,也不会中断正在对 STM32F40x/STM32F41x 嵌入式 Flash 执行的字写入操作。EEPROM 算法会停止,但是当前的 Flash 字写入操作不会因 CPU 复位中断。 : y" l& k6 l. u& w" Fu# N7 t8 p" e9 |- ], E! D |
谢谢图图分享 |
STM32固件库分享,超全系列整理
【中文文档】AN3965_STM32F40x和STM32F41x基于串口的IAP
STM32F4-DISC 实现USB主机(U盘)和USB设备(虚拟串口)自动切换
【银杏科技ARM+FPGA双核心应用】STM32H7系列10——ADC
STM32F4中文用户手册
【银杏科技ARM+FPGA双核心应用】STM32H7系列57——MDK_FLM
【STM32图书分享之九】—《STM32F 32位ARM微控制器应用设计与实践》
基于STM32F407的FreeRTOS阶段性的总结(13)
STM32F400、STM32F402 Cortex-M4超值单片机
基于STM32F407的FreeRTOS获取各任务运行时间及占用情况(4)