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

STM32F2xx 微控制器中的 EEPROM 模拟

[复制链接]
STMCU小助手 发布时间:2022-12-4 19:00
前言8 W  R+ O: F% w
EEPROM (电可擦除可编程只读存储器)通常用于工业应用领域,用于存储可更新数据。
4 a7 r  d; T& n" K1 s1 o( R2 \9 O! w+ _EEPROM 是一种用于复杂系统 (如计算机)和其他电子设备的永久性 (非易失的)存储系统,用于在断电时存储和保留少量数据。3 Z9 m9 y; y/ U
为了降低成本,外部 EEPROM 可以用 STM32F2xx 产品所具有的下述特性之一代替:( R7 a9 ?8 O: X: U2 A2 i3 Q* q
● 片上 4 KB 备份 SRAM3 _0 T/ Z; ^6 S, q( k3 u. }! a- t
● 片上 Flash,并采用专门软件算法9 _4 f( M9 n/ \0 M  ~
STM32F2xx 具有 4 KB 的备份 SRAM,当主要的 VDD 电源断电时,该 SRAM 可由 VBAT 电源供电。$ p' u3 n4 f- K: q$ m4 L4 a) _
当有 VBAT (通常在电池供电应用中)时该备份 SRAM 可作为内部 EEPROM (无任何额外软件)使用,并具有以 CPU 频率进行高速存取的优势。
( {' ]) M* \- k* x6 {5 L- q- I而当备份 SRAM 另作他用且 / 或该应用不用 VBAT 供电时,片上 Flash(采用专门软件算法)可以用于模拟 EEPROM 存储器使用。
. V" @* E* Q0 ^, w3 g/ x本应用笔记对通过利用 STM32F2xx 产品的片上 Flash 模拟 EEPROM 机制来代替独立EEPROM 的软件方案进行了说明。& x2 Y# [/ m1 c4 O6 x  ?! ]; c  h
至少使用两个 Flash 扇区才能实现该模拟。 EEPROM 模拟代码在两个扇区 (当它们被填充时)之间交换数据,这在某种程度上是对用户透明的。! G) s$ g+ z9 c* L+ k& `. n
本应用笔记所提供的 EEPROM 模拟驱动器满足以下要求:3 B# G" a0 a/ V* S/ L4 x
● 轻量级实现,具有一个简单的包含了三个函数 (用于初始化、读数据和写数据)的API,并减少了封装。
9 B: U0 @8 t- `& s  E● 简单易用的可更新代码模型% M: a5 y; g# \7 d
● 清理和内部数据管理对用户透明4 l+ O2 C9 G' k- t
● 后台扇区擦除
! ]. x1 `' ]* f1 f● 至少要使用两个 Flash 扇区,对于损耗均衡则需要使用更多 (Flash 扇区)
5 y' F& O! P& w) Q, l" O模拟 EEPROM 的大小是弹性可变的,它受扇区大小的限制和约束,并需考虑最大 EEPROM空间大小。' p8 H5 G0 Y7 {: r  e: V1 C4 ^
# y9 j- S, N( u1 L3 d
1 外部 EEPROM 和模拟 EEPROM 之间的主要区别8 p  @1 S, [3 L2 ?$ P
EEPROM 是许多嵌入式应用(需要能够进行非易失性数据存储,且运行时间内以字节或字的颗粒度进行更新)的关键元件。
  {  z# W/ N4 }3 q! e2 m( D用于这些系统的微控制器通常基于嵌入式 Flash。为了减少所用元件、节省 PCB 空间、降低系统成本,可以用 STM32F2xx Flash 代替外部 EEPROM 来进行同步编码和数据存储。
0 |3 P) ^; F, X6 G与 Flash 不同,数据可被重写前,外部 EEPROM 不需要擦除操作来释放空间。需要专门的软件管理来将数据存入嵌入式 Flash。- ?0 S/ m( F& X  e8 T- @- c
仿真软件方案取决于多种因素,包括 EEPROM 可靠性、所用 Flash 结构和产品需求。嵌入式 Flash 和外部串行 EEPROM 之间的主要区别对于任何使用同样 Flash 技术的微控制器(并非针对 STM32F2xx 系列产品)都是相同的。主要区别概括如表 1。  c; ~# n+ A% z4 P: i/ E
9 i& v, F, q1 K
)B@9T73CD@}2R9PP2VE_NZN.png
9 z0 X. P: e* W$ _9 d- |3 S
$ x5 z' p, [' F7 L" t$ M8 t! U/ F8 c 1_J2J[QT@EU1RQUH6D7V$_H.png
7 s7 k, X# M# p8 F/ l- ]' }4 P2 N; |7 q; G# c
2 h0 c9 H' o* }6 Z& P8 |- o
1.1 写访问时间的不同
4 ^! J2 }$ p& D5 G由于 Flash 的写访问时间更短,重要参数可以更快地存入模拟 EEPROM (比外部串行EEPROM 更快),因此能够提高数据存储能力。: o1 E/ d8 v: z+ _
7 j* x; @; T: G) F
1.2 擦除时间的不同
1 q' b" c$ x6 u+ P- l擦除时间的不同是独立 EEPROM 和使用嵌入式 Flash 模拟的 EEPROM 之间的另一个重要区别。与 Flash 不同,在向其写入数据前,EEPROM 不需要擦除操作来释放空间。这意味着需要某种形式的软件管理来将数据存入 Flash。此外,由于 Flash 中的块擦除过程不需要花费很多时间,因此设计 Flash 管理软件时,应当考虑断电和其他可能中断擦除过程的伪事件 (例如复位)。为了设计出稳健的 Flash 管理软件,有必要彻底了解 Flash 擦除过程。, H8 w' n; j: K, G$ y4 P
注: CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的扇区擦除或批量擦除操作不会被中断。/ C$ v% j6 u+ ]6 b8 X3 d" }

: {  w* W- ]3 T! C
1.3 写方式的相似之处0 `7 K6 N3 m7 z2 V
外部 EEPROM 和采用 STM32F2xx 嵌入式 Flash 模拟的 EEPROM 之间的相同点之一是其写方式。" C7 {/ `4 T& K) e
● 独立外部 EEPROM:由 CPU 启动时,全字写操作不会被 CPU 复位而中断。只有电源故障会中断该写过程,因此适当地按大小排列去耦电容可以保护独立 EEPROM 中的完整写过程。! Y2 i5 R3 Y0 ]# c
● 利用嵌入式 Flash 模拟的 EEPROM:由 CPU 启动时,写过程可被电源故障中断。CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的全字写操作不会被中断。 EEPROM算法停止,但是当前的 Flash 全字写操作不会被 CPU 复位中断。* M% w0 c( Y+ f4 I" u4 \
5 B9 n8 j9 U* A8 j$ }8 j8 l! G4 x
2 实现 EEPROM 模拟1 V) _. f1 c( t: d- }% D
2.1 原理& _9 e9 R- k/ i- Z6 E
考虑到 Flash 限制和产品需求,存在多种方式实现 EEPROM 模拟。下面所描述的方式需要至少两个同样大小的 Flash 扇区 (分配给非易失性数据):一个扇区首先被擦除,并提供逐字节的编程;当前扇区需要被回收时,另一个扇区准备好接收 (该扇区)。占据了每个扇区第一个半字 (16 位)的头字段标志了该扇区状态。将每个扇区作为一个存储页,在本文档下述部分中称作 Page0 和 Page1。, `  f, D0 N, o1 G2 m2 y& ]
头字段位于每页的基址,提供了该存储页的状态信息。. i1 Y5 ^  T; f- h; ^4 w  u
每页有三个可能状态:
: g3 A, y5 E; p) U● ERASED:该页为空。
3 }0 K+ j% {% D6 A+ w9 T+ G● RECEIVE_DATA:该页正在从其他满页中接收数据。
5 ~: O' L* p. i) x● VALID_PAGE:该页容纳有效数据,直到所有有效数据传输到被擦除页,这个状态才会变化。7 D5 [6 P$ b1 O
图 1 显示了页状态是如何变化的。
' b! C/ s6 ]. {2 J% U$ |  C# k* `4 H+ _+ q+ z, K
  ~! Y7 H/ s4 A* T! K7 h; q  q% A
A50ZR{G`}J}%Y3P1LPQV({N.png 5 {7 ?- Z* T  G8 D9 `% \5 O* ?2 q3 l

. T- a+ ^; N" | WKBD6UC{_XU902{L{M181.png 2 G& B* \7 P" \/ _% h& T
( ]2 g+ [/ u  @& k: ?
通常,使用这种方式时,用户不必提前知道变量更新频率。
. w; z% ?4 g- e% T& a+ L- r+ d. E本文档中所描述的软件和实现使用了两个 16 KB 的 Flash 扇区 (扇区 2 和扇区 3)来模拟EEPROM。( P4 X+ L  y* l
注: 选择扇区 2 和扇区 3 是由于这两个扇区相比于 STM32F2xx Flash 的其他扇区来说空间较小(STM32F2xx Flash 的主要内存块在表 3: STM32F2xx Flash 扇区中有单独描述)。根据应用和用户需要,也可以使用大的扇区。
+ r6 ~- l6 u" P; k% a6 X" ?- P( d9 @. \
U1()P0FJBJ5U)55XLB{%T8T.png
2 ?8 b! p. j* S# H. g
! Q5 q! {" P/ o6 ^8 p, W. W! i
每个可变参数通过虚拟地址和要被存入 Flash 的值来定义,以便随后检索或更新 (在所实现的软件中虚拟地址和数据都是长 16 位)。当数据被修改时,关联到先前虚拟地址的修改数据会被存入新的 Flash 位置。数据检索返回最新的数据值。. Z1 T5 `; }! i/ _# d

* H5 g4 s4 P/ d$ C+ T% J

7 h2 H4 f$ b5 M9 n. c {}}Y3KS}734B2GL}D2B%_KL.png ( N: L! X% }( j* o
+ `; |* X. A; ^. i- D
2.2 用例:应用实例6 r# c: |8 N+ Q. ^0 k# j$ a& D+ @
下面的例子显示了三个采用如下虚拟地址的 EEPROM 变量 (Var1、 Var2 和 Var3)的软件管理:2 v5 O! Y& G' B
Var1 虚拟地址 5555h
/ U) w* w8 x3 H* BVar2 虚拟地址 6666h
, b( r9 [( ~. s& z+ I/ nVar3 虚拟地址 7777h; {: G; I/ ~: @7 r( V
4 |8 u) `+ K2 _. V( L$ t: Q+ i. d. x
I69IU{P[TF7ZENEEBUUGC5C.png 7 K' m, q9 l- s0 w
# e* Y& A( ]* U: Y. I/ L; u8 Z0 {7 p( C
完整版请查看:附件$ G4 L# w: u2 l- i
3 d; Y7 K$ n+ w* v
! q  }' X2 A5 f; w; u5 f

& s. a9 D% E! u, i  ^0 A1 A* J+ G- u# a! @3 j

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

下载

288.15 KB, 下载次数: 1

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

举报

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