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

STM32F2xx 微控制器中的 EEPROM 模拟

[复制链接]
STMCU小助手 发布时间:2022-12-4 19:00
前言6 D: Y; u8 C+ s! n1 L/ {
EEPROM (电可擦除可编程只读存储器)通常用于工业应用领域,用于存储可更新数据。5 ~6 I* q) q$ G
EEPROM 是一种用于复杂系统 (如计算机)和其他电子设备的永久性 (非易失的)存储系统,用于在断电时存储和保留少量数据。0 K: d0 J8 g) l1 h, B  {
为了降低成本,外部 EEPROM 可以用 STM32F2xx 产品所具有的下述特性之一代替:
+ m, W6 ]5 G! u3 B2 |● 片上 4 KB 备份 SRAM
: O; f/ {/ [5 {9 Q& G. o● 片上 Flash,并采用专门软件算法
9 b! X  v5 A9 v! [1 G2 GSTM32F2xx 具有 4 KB 的备份 SRAM,当主要的 VDD 电源断电时,该 SRAM 可由 VBAT 电源供电。
/ P5 l) r9 j- l: ^4 p1 z当有 VBAT (通常在电池供电应用中)时该备份 SRAM 可作为内部 EEPROM (无任何额外软件)使用,并具有以 CPU 频率进行高速存取的优势。: B9 j2 ~( B: F6 u
而当备份 SRAM 另作他用且 / 或该应用不用 VBAT 供电时,片上 Flash(采用专门软件算法)可以用于模拟 EEPROM 存储器使用。* ], K% Q) j: X
本应用笔记对通过利用 STM32F2xx 产品的片上 Flash 模拟 EEPROM 机制来代替独立EEPROM 的软件方案进行了说明。
% q' Z3 Y& {; L8 E至少使用两个 Flash 扇区才能实现该模拟。 EEPROM 模拟代码在两个扇区 (当它们被填充时)之间交换数据,这在某种程度上是对用户透明的。
% a1 }( V+ t1 v8 h本应用笔记所提供的 EEPROM 模拟驱动器满足以下要求:7 Q8 m& n! k  \
● 轻量级实现,具有一个简单的包含了三个函数 (用于初始化、读数据和写数据)的API,并减少了封装。
4 M6 b+ P2 a: q/ U● 简单易用的可更新代码模型
+ H$ T# ^" w) M1 ^" U● 清理和内部数据管理对用户透明
- T" V) `, m; |: R● 后台扇区擦除
( c' r1 l% c! I+ R: X( F8 d7 T: }● 至少要使用两个 Flash 扇区,对于损耗均衡则需要使用更多 (Flash 扇区)* X" g1 |# I8 }% |3 K
模拟 EEPROM 的大小是弹性可变的,它受扇区大小的限制和约束,并需考虑最大 EEPROM空间大小。1 e9 b1 m8 l) t, u* R

( V' O4 O$ Y. h2 P- s8 s) Z% `' A1 外部 EEPROM 和模拟 EEPROM 之间的主要区别
" E  B4 S+ M: [, {3 j7 W, B: QEEPROM 是许多嵌入式应用(需要能够进行非易失性数据存储,且运行时间内以字节或字的颗粒度进行更新)的关键元件。8 a1 @5 l9 {9 l- Z( Z2 y& o
用于这些系统的微控制器通常基于嵌入式 Flash。为了减少所用元件、节省 PCB 空间、降低系统成本,可以用 STM32F2xx Flash 代替外部 EEPROM 来进行同步编码和数据存储。
! I- r! f+ h0 o  Z: c2 g( r0 w与 Flash 不同,数据可被重写前,外部 EEPROM 不需要擦除操作来释放空间。需要专门的软件管理来将数据存入嵌入式 Flash。6 H/ r3 B- j7 ^+ S  A7 |; O
仿真软件方案取决于多种因素,包括 EEPROM 可靠性、所用 Flash 结构和产品需求。嵌入式 Flash 和外部串行 EEPROM 之间的主要区别对于任何使用同样 Flash 技术的微控制器(并非针对 STM32F2xx 系列产品)都是相同的。主要区别概括如表 1。
. d! ?: }+ c# q4 e5 L8 O% G( e; R
)B@9T73CD@}2R9PP2VE_NZN.png % k* f+ k8 _- j+ l5 C+ M
2 Z' a% q% e. r. M/ ]0 i
1_J2J[QT@EU1RQUH6D7V$_H.png
0 e; A8 k5 M4 \" W7 x& Q% A3 z% l/ n9 h/ D& V& |- U5 L

8 q3 \& A! ~! [& R7 _6 C/ ]7 G1.1 写访问时间的不同/ T  T/ H: @) F& C
由于 Flash 的写访问时间更短,重要参数可以更快地存入模拟 EEPROM (比外部串行EEPROM 更快),因此能够提高数据存储能力。
- C' o( j7 a$ Q8 b  A- Z7 `% f" O& j, Q6 ^/ z# J
1.2 擦除时间的不同
2 G8 k, a5 X- z% t6 h  ~5 |* Z, X擦除时间的不同是独立 EEPROM 和使用嵌入式 Flash 模拟的 EEPROM 之间的另一个重要区别。与 Flash 不同,在向其写入数据前,EEPROM 不需要擦除操作来释放空间。这意味着需要某种形式的软件管理来将数据存入 Flash。此外,由于 Flash 中的块擦除过程不需要花费很多时间,因此设计 Flash 管理软件时,应当考虑断电和其他可能中断擦除过程的伪事件 (例如复位)。为了设计出稳健的 Flash 管理软件,有必要彻底了解 Flash 擦除过程。
5 f2 U1 I/ S/ [9 _1 _5 Q7 K注: CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的扇区擦除或批量擦除操作不会被中断。, W- z/ {  O+ h- e! O7 W

4 A0 `# B- i( \- q! ^8 y3 F
1.3 写方式的相似之处
9 X  j8 {) ~$ g# h0 {; Q! M外部 EEPROM 和采用 STM32F2xx 嵌入式 Flash 模拟的 EEPROM 之间的相同点之一是其写方式。
  o/ k  ~- I4 s' ^* g2 j# J● 独立外部 EEPROM:由 CPU 启动时,全字写操作不会被 CPU 复位而中断。只有电源故障会中断该写过程,因此适当地按大小排列去耦电容可以保护独立 EEPROM 中的完整写过程。
5 Y) S" u% [. M  O; M● 利用嵌入式 Flash 模拟的 EEPROM:由 CPU 启动时,写过程可被电源故障中断。CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的全字写操作不会被中断。 EEPROM算法停止,但是当前的 Flash 全字写操作不会被 CPU 复位中断。+ Y: S& Z6 }2 e
9 @$ Q+ U: q# }
2 实现 EEPROM 模拟
$ i5 g9 U3 F- V: h$ w2.1 原理6 N: Z/ ~6 |  P
考虑到 Flash 限制和产品需求,存在多种方式实现 EEPROM 模拟。下面所描述的方式需要至少两个同样大小的 Flash 扇区 (分配给非易失性数据):一个扇区首先被擦除,并提供逐字节的编程;当前扇区需要被回收时,另一个扇区准备好接收 (该扇区)。占据了每个扇区第一个半字 (16 位)的头字段标志了该扇区状态。将每个扇区作为一个存储页,在本文档下述部分中称作 Page0 和 Page1。
1 U. d. ?+ M8 s% C* a头字段位于每页的基址,提供了该存储页的状态信息。
* s0 ^1 k4 F. q$ W1 W8 i5 B4 i3 F每页有三个可能状态:
& s$ e5 S1 I' \2 l● ERASED:该页为空。, W& ]- [  m$ {4 U4 O
● RECEIVE_DATA:该页正在从其他满页中接收数据。
( B2 x5 ~! ]+ c$ t4 o) _● VALID_PAGE:该页容纳有效数据,直到所有有效数据传输到被擦除页,这个状态才会变化。, w3 {! j+ |8 t
图 1 显示了页状态是如何变化的。/ `# S4 E$ [3 X1 H1 t6 ]% y$ s

& J6 d  a( z/ R% Z4 P
  \1 Z' @" s% l9 W, ~; R
A50ZR{G`}J}%Y3P1LPQV({N.png
: m+ s* M4 a( |1 H, P# J- O2 l+ o1 b9 o, U! k2 [* J
WKBD6UC{_XU902{L{M181.png
: A- j% z( {: m& p/ ]  e- d$ Q: F
( \: o. V# U" n通常,使用这种方式时,用户不必提前知道变量更新频率。
% I; Y# T$ |/ i$ v# ?6 `本文档中所描述的软件和实现使用了两个 16 KB 的 Flash 扇区 (扇区 2 和扇区 3)来模拟EEPROM。
( `5 X# u/ g3 M3 A1 c6 ~. c注: 选择扇区 2 和扇区 3 是由于这两个扇区相比于 STM32F2xx Flash 的其他扇区来说空间较小(STM32F2xx Flash 的主要内存块在表 3: STM32F2xx Flash 扇区中有单独描述)。根据应用和用户需要,也可以使用大的扇区。
3 P/ c$ B1 r" r( z+ O# ^, T
( q& U' E1 V! b2 Z/ E6 X
U1()P0FJBJ5U)55XLB{%T8T.png 3 ~8 T- ?: G; l3 ~: @# a# i
" b$ Y' w1 {$ d
每个可变参数通过虚拟地址和要被存入 Flash 的值来定义,以便随后检索或更新 (在所实现的软件中虚拟地址和数据都是长 16 位)。当数据被修改时,关联到先前虚拟地址的修改数据会被存入新的 Flash 位置。数据检索返回最新的数据值。- \& a4 A# a" v# P. F$ B
% V0 `+ d  S. \. F  Y1 }' T% R

4 E% p2 ?8 @8 s( J6 U1 H& }. D8 u" f$ g {}}Y3KS}734B2GL}D2B%_KL.png 1 i& ]1 }, u  p+ R+ `, J

: I+ }  v' o2 F) G/ U  T2 b5 B2.2 用例:应用实例+ ~* W( L9 F9 V" g
下面的例子显示了三个采用如下虚拟地址的 EEPROM 变量 (Var1、 Var2 和 Var3)的软件管理:
7 H9 N' I0 D& ?3 s* D$ x6 SVar1 虚拟地址 5555h
4 S  }; B! {/ {- U- PVar2 虚拟地址 6666h
8 J* W+ n, O! @+ g% e+ @Var3 虚拟地址 7777h. I. L; Z# p" l) E5 _# E8 D

& y  Q* F( S" o" X7 w" A8 j I69IU{P[TF7ZENEEBUUGC5C.png
/ b. ~( ]7 q8 \( Y8 C$ D4 r- g3 `) |3 R/ n7 O0 |% u
完整版请查看:附件# b1 d7 B  h& i, l/ y3 w! T/ X

$ `& K( L( W  E
; V& j/ D& s. c2 g1 k

$ b7 s0 Z( s  b+ {( a; I% w4 z/ n; @: u

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

下载

288.15 KB, 下载次数: 0

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

举报

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