你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F2xx 微控制器中的 EEPROM 模拟

[复制链接]
STMCU小助手 发布时间:2022-12-4 19:00
前言$ [" h# k3 v" k+ Z- s5 J* m+ z
EEPROM (电可擦除可编程只读存储器)通常用于工业应用领域,用于存储可更新数据。
8 @, K+ ]! k0 z2 o& ^EEPROM 是一种用于复杂系统 (如计算机)和其他电子设备的永久性 (非易失的)存储系统,用于在断电时存储和保留少量数据。+ m4 ~/ _  x( h8 U2 o. W0 x
为了降低成本,外部 EEPROM 可以用 STM32F2xx 产品所具有的下述特性之一代替:
' M/ {9 W' p7 z* Y$ o, u$ A; f● 片上 4 KB 备份 SRAM! `! ~, b1 f9 i. p: }  t& A9 p
● 片上 Flash,并采用专门软件算法, `* c  V+ [9 Q: ?- ?
STM32F2xx 具有 4 KB 的备份 SRAM,当主要的 VDD 电源断电时,该 SRAM 可由 VBAT 电源供电。/ S. @* _+ U; X3 ~, h
当有 VBAT (通常在电池供电应用中)时该备份 SRAM 可作为内部 EEPROM (无任何额外软件)使用,并具有以 CPU 频率进行高速存取的优势。3 C5 s1 [; F$ A8 H9 D
而当备份 SRAM 另作他用且 / 或该应用不用 VBAT 供电时,片上 Flash(采用专门软件算法)可以用于模拟 EEPROM 存储器使用。5 g$ C# E" M2 F2 U
本应用笔记对通过利用 STM32F2xx 产品的片上 Flash 模拟 EEPROM 机制来代替独立EEPROM 的软件方案进行了说明。
7 @, X: o, S( Q2 I/ Z  Y+ p8 N3 o5 v至少使用两个 Flash 扇区才能实现该模拟。 EEPROM 模拟代码在两个扇区 (当它们被填充时)之间交换数据,这在某种程度上是对用户透明的。) }: _5 n6 `5 R7 L1 n: ~
本应用笔记所提供的 EEPROM 模拟驱动器满足以下要求:" c1 J) r4 e( `
● 轻量级实现,具有一个简单的包含了三个函数 (用于初始化、读数据和写数据)的API,并减少了封装。9 J& _: R* N- ^
● 简单易用的可更新代码模型+ s7 `3 ?8 h: b5 O' ^
● 清理和内部数据管理对用户透明
9 @& k, P% Z$ C● 后台扇区擦除
& x3 i8 e& q0 E7 I● 至少要使用两个 Flash 扇区,对于损耗均衡则需要使用更多 (Flash 扇区)
% D3 n! F: A' w# z模拟 EEPROM 的大小是弹性可变的,它受扇区大小的限制和约束,并需考虑最大 EEPROM空间大小。
2 j( Q3 Y) z7 D; I2 t- b8 l
7 b* p8 O2 s8 G, ~9 @4 a8 H: `1 外部 EEPROM 和模拟 EEPROM 之间的主要区别
% j! S1 K6 B- p; \; [EEPROM 是许多嵌入式应用(需要能够进行非易失性数据存储,且运行时间内以字节或字的颗粒度进行更新)的关键元件。+ c$ Z% \7 c$ s- a8 C5 x
用于这些系统的微控制器通常基于嵌入式 Flash。为了减少所用元件、节省 PCB 空间、降低系统成本,可以用 STM32F2xx Flash 代替外部 EEPROM 来进行同步编码和数据存储。* C# u2 ^3 h  h* }
与 Flash 不同,数据可被重写前,外部 EEPROM 不需要擦除操作来释放空间。需要专门的软件管理来将数据存入嵌入式 Flash。
6 c% g/ d' Q1 T( j; k仿真软件方案取决于多种因素,包括 EEPROM 可靠性、所用 Flash 结构和产品需求。嵌入式 Flash 和外部串行 EEPROM 之间的主要区别对于任何使用同样 Flash 技术的微控制器(并非针对 STM32F2xx 系列产品)都是相同的。主要区别概括如表 1。
( }& K! v& c, g0 g% |7 z5 \4 J3 i2 ?, {/ V9 M+ w
)B@9T73CD@}2R9PP2VE_NZN.png
) |# z/ G8 J, F) |4 r  m+ }
' a5 l) g& ^4 ^2 V, f* {+ j/ A6 o 1_J2J[QT@EU1RQUH6D7V$_H.png , y$ G3 E0 a; M% t% z. L1 k

0 I9 t, k& z: V3 D4 n
$ a: M) v# ]* q1.1 写访问时间的不同
0 s9 p# _( X6 G' W, y由于 Flash 的写访问时间更短,重要参数可以更快地存入模拟 EEPROM (比外部串行EEPROM 更快),因此能够提高数据存储能力。
2 Q+ j* o, S$ |/ q& X( P. Z$ |, \5 \' K
1.2 擦除时间的不同
! I9 H8 k4 k, q. u2 Z擦除时间的不同是独立 EEPROM 和使用嵌入式 Flash 模拟的 EEPROM 之间的另一个重要区别。与 Flash 不同,在向其写入数据前,EEPROM 不需要擦除操作来释放空间。这意味着需要某种形式的软件管理来将数据存入 Flash。此外,由于 Flash 中的块擦除过程不需要花费很多时间,因此设计 Flash 管理软件时,应当考虑断电和其他可能中断擦除过程的伪事件 (例如复位)。为了设计出稳健的 Flash 管理软件,有必要彻底了解 Flash 擦除过程。$ Q+ u1 c. m2 `
注: CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的扇区擦除或批量擦除操作不会被中断。" C* a: L0 c8 n% x

$ g. z3 m( [" M! j; G, U
1.3 写方式的相似之处7 b1 A2 r6 P: Z3 i7 e# s' e% ~
外部 EEPROM 和采用 STM32F2xx 嵌入式 Flash 模拟的 EEPROM 之间的相同点之一是其写方式。
$ o6 e8 L3 W% J# R( O: N● 独立外部 EEPROM:由 CPU 启动时,全字写操作不会被 CPU 复位而中断。只有电源故障会中断该写过程,因此适当地按大小排列去耦电容可以保护独立 EEPROM 中的完整写过程。5 {/ i( G0 D0 a- v: o6 U! W. p
● 利用嵌入式 Flash 模拟的 EEPROM:由 CPU 启动时,写过程可被电源故障中断。CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的全字写操作不会被中断。 EEPROM算法停止,但是当前的 Flash 全字写操作不会被 CPU 复位中断。# q6 N4 U7 n, p  f' s5 ]
) V( d& _  Z4 b2 @+ ~/ K
2 实现 EEPROM 模拟
( j8 d4 \6 W8 F$ b2.1 原理
9 i" \2 V. F  J考虑到 Flash 限制和产品需求,存在多种方式实现 EEPROM 模拟。下面所描述的方式需要至少两个同样大小的 Flash 扇区 (分配给非易失性数据):一个扇区首先被擦除,并提供逐字节的编程;当前扇区需要被回收时,另一个扇区准备好接收 (该扇区)。占据了每个扇区第一个半字 (16 位)的头字段标志了该扇区状态。将每个扇区作为一个存储页,在本文档下述部分中称作 Page0 和 Page1。0 f( C0 z9 v0 D; c
头字段位于每页的基址,提供了该存储页的状态信息。3 i/ g5 l' U, `5 ?
每页有三个可能状态:' U, r- H. O0 o$ d1 E
● ERASED:该页为空。
) t3 T& J( E. Z● RECEIVE_DATA:该页正在从其他满页中接收数据。: w3 a$ s/ e; l  [! U0 w3 q# H
● VALID_PAGE:该页容纳有效数据,直到所有有效数据传输到被擦除页,这个状态才会变化。, m: s/ F% G+ r, h0 u- R0 z7 V, z# C
图 1 显示了页状态是如何变化的。0 o3 c7 S7 z/ N" l8 t5 s  D9 f
. ?; t& j- a+ \6 C+ H% x3 @
, S$ Z1 Q# j2 D' F2 w
A50ZR{G`}J}%Y3P1LPQV({N.png
+ a/ M! n0 W7 m/ z. h
# e4 I4 J8 n0 j WKBD6UC{_XU902{L{M181.png
/ ?5 Y. D# Q8 `* s
- ]$ Z+ @  n3 o! R* o- U- l通常,使用这种方式时,用户不必提前知道变量更新频率。" r' ~5 n) F4 Q, u
本文档中所描述的软件和实现使用了两个 16 KB 的 Flash 扇区 (扇区 2 和扇区 3)来模拟EEPROM。
  J. |+ F3 a7 \7 u+ m, d  E7 L注: 选择扇区 2 和扇区 3 是由于这两个扇区相比于 STM32F2xx Flash 的其他扇区来说空间较小(STM32F2xx Flash 的主要内存块在表 3: STM32F2xx Flash 扇区中有单独描述)。根据应用和用户需要,也可以使用大的扇区。1 I5 Z/ U# d, Y7 E0 j  W
0 M& Y& H1 d$ W$ j0 d, g
U1()P0FJBJ5U)55XLB{%T8T.png 8 K7 x7 f1 P5 p% K7 Z

. Y; x2 o) A- s5 m; @0 Y每个可变参数通过虚拟地址和要被存入 Flash 的值来定义,以便随后检索或更新 (在所实现的软件中虚拟地址和数据都是长 16 位)。当数据被修改时,关联到先前虚拟地址的修改数据会被存入新的 Flash 位置。数据检索返回最新的数据值。$ F9 q2 ~/ {2 [3 M, p9 J4 c! Z

! d: b! i- }) m& [; c
# S' S& h  ^$ k5 j5 ?
{}}Y3KS}734B2GL}D2B%_KL.png
- z( D4 L! a+ ]# [! }+ r' @: V3 Z& H8 @( v! c
2.2 用例:应用实例
) g9 S6 A' |, N下面的例子显示了三个采用如下虚拟地址的 EEPROM 变量 (Var1、 Var2 和 Var3)的软件管理:
! F6 ~" W  V! r, F; NVar1 虚拟地址 5555h% U2 Y$ X3 V  J& D, a1 D
Var2 虚拟地址 6666h- s2 `  ~1 S* ?) H
Var3 虚拟地址 7777h0 X0 w1 u: _0 M
3 o* K+ x* A, G. U% }# S. O9 D
I69IU{P[TF7ZENEEBUUGC5C.png ! C' ?& a" X" ~5 C& }; x

' g9 [# D. w' _+ m. ?" X完整版请查看:附件
2 X3 d8 C( `, s* T6 K7 L0 A% N/ F- J4 L; x+ R

6 P/ u# V6 C4 M0 f" t1 n: v
) S; b$ t, }& m: M" |1 c' O

7 x  X: X9 Y% s: P

STM32F2xx 微控制器中的 EEPROM 模拟.pdf

下载

288.15 KB, 下载次数: 0

收藏 评论0 发布时间:2022-12-4 19:00

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版