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

STM32F2xx 微控制器中的 EEPROM 模拟

[复制链接]
STMCU小助手 发布时间:2022-12-4 19:00
前言
. w0 R# B$ n# }1 R3 GEEPROM (电可擦除可编程只读存储器)通常用于工业应用领域,用于存储可更新数据。' L7 Z/ N# I, F, t1 a
EEPROM 是一种用于复杂系统 (如计算机)和其他电子设备的永久性 (非易失的)存储系统,用于在断电时存储和保留少量数据。1 [5 l6 L/ T0 R! b* \# S5 v: q
为了降低成本,外部 EEPROM 可以用 STM32F2xx 产品所具有的下述特性之一代替:
0 ?# ?9 {9 Q) y- |& q● 片上 4 KB 备份 SRAM* n; t3 v; b" W; l0 M4 u9 T
● 片上 Flash,并采用专门软件算法, `% ~  T, y) k  ~, A* w1 D9 W
STM32F2xx 具有 4 KB 的备份 SRAM,当主要的 VDD 电源断电时,该 SRAM 可由 VBAT 电源供电。; P' ~- `9 v2 [' M& P
当有 VBAT (通常在电池供电应用中)时该备份 SRAM 可作为内部 EEPROM (无任何额外软件)使用,并具有以 CPU 频率进行高速存取的优势。) S5 M2 J) _% z( L- i- l
而当备份 SRAM 另作他用且 / 或该应用不用 VBAT 供电时,片上 Flash(采用专门软件算法)可以用于模拟 EEPROM 存储器使用。& Q4 u" G! a6 Z, G
本应用笔记对通过利用 STM32F2xx 产品的片上 Flash 模拟 EEPROM 机制来代替独立EEPROM 的软件方案进行了说明。
" C4 N1 @5 V1 ]8 n* M( a至少使用两个 Flash 扇区才能实现该模拟。 EEPROM 模拟代码在两个扇区 (当它们被填充时)之间交换数据,这在某种程度上是对用户透明的。
$ X& E/ s8 `  X+ I% H本应用笔记所提供的 EEPROM 模拟驱动器满足以下要求:  l+ _/ y$ ~, G
● 轻量级实现,具有一个简单的包含了三个函数 (用于初始化、读数据和写数据)的API,并减少了封装。
7 x/ m" b0 p7 Q● 简单易用的可更新代码模型
6 s* _! R( k; y8 h2 |+ v+ F6 c% M7 z# @● 清理和内部数据管理对用户透明
, j$ [& h4 o1 O! ~/ Q- ]. P: P● 后台扇区擦除
7 V" I& S7 }  S. r2 {! O; ?● 至少要使用两个 Flash 扇区,对于损耗均衡则需要使用更多 (Flash 扇区)! V- C  }5 |5 M' R, I/ j& m
模拟 EEPROM 的大小是弹性可变的,它受扇区大小的限制和约束,并需考虑最大 EEPROM空间大小。
' G7 T# ^' D  u. h
/ Q) b& U2 i6 x* g" {0 p# P/ J$ ?1 外部 EEPROM 和模拟 EEPROM 之间的主要区别: D9 i9 ]/ Q1 W$ j0 D4 q7 T
EEPROM 是许多嵌入式应用(需要能够进行非易失性数据存储,且运行时间内以字节或字的颗粒度进行更新)的关键元件。. C) O% g3 g8 M, W/ h7 r7 u* X
用于这些系统的微控制器通常基于嵌入式 Flash。为了减少所用元件、节省 PCB 空间、降低系统成本,可以用 STM32F2xx Flash 代替外部 EEPROM 来进行同步编码和数据存储。7 K) b$ B4 C6 c
与 Flash 不同,数据可被重写前,外部 EEPROM 不需要擦除操作来释放空间。需要专门的软件管理来将数据存入嵌入式 Flash。
$ }/ \% X* j. T$ Y仿真软件方案取决于多种因素,包括 EEPROM 可靠性、所用 Flash 结构和产品需求。嵌入式 Flash 和外部串行 EEPROM 之间的主要区别对于任何使用同样 Flash 技术的微控制器(并非针对 STM32F2xx 系列产品)都是相同的。主要区别概括如表 1。
4 n  R' l, z6 L: {% m" a8 G5 K8 p! M0 y5 l  h, h. @
)B@9T73CD@}2R9PP2VE_NZN.png
8 g* F. @; ^/ Z/ |* ]0 N. j9 \2 X
1_J2J[QT@EU1RQUH6D7V$_H.png 1 G1 Y  ^) @1 f- G
- p8 y- K4 R6 ]

; {! N" z, }# J1.1 写访问时间的不同
+ Y7 J4 O& P$ y$ {8 s+ U由于 Flash 的写访问时间更短,重要参数可以更快地存入模拟 EEPROM (比外部串行EEPROM 更快),因此能够提高数据存储能力。3 W& s& E2 c5 y- N& N7 r
2 Y) y: m, L) j2 |) q5 c/ C
1.2 擦除时间的不同
, f: M7 h4 U" w7 s# p擦除时间的不同是独立 EEPROM 和使用嵌入式 Flash 模拟的 EEPROM 之间的另一个重要区别。与 Flash 不同,在向其写入数据前,EEPROM 不需要擦除操作来释放空间。这意味着需要某种形式的软件管理来将数据存入 Flash。此外,由于 Flash 中的块擦除过程不需要花费很多时间,因此设计 Flash 管理软件时,应当考虑断电和其他可能中断擦除过程的伪事件 (例如复位)。为了设计出稳健的 Flash 管理软件,有必要彻底了解 Flash 擦除过程。
( y' q' T& r# I/ `- X2 U2 @# s( n注: CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的扇区擦除或批量擦除操作不会被中断。
* W3 `  T- l& Q, ]8 ^! Q/ r* J) ?$ @
1.3 写方式的相似之处
, i% y( V5 D, [4 _' f: o' {外部 EEPROM 和采用 STM32F2xx 嵌入式 Flash 模拟的 EEPROM 之间的相同点之一是其写方式。3 Z- R' e$ R1 j4 n) v+ l
● 独立外部 EEPROM:由 CPU 启动时,全字写操作不会被 CPU 复位而中断。只有电源故障会中断该写过程,因此适当地按大小排列去耦电容可以保护独立 EEPROM 中的完整写过程。* R1 h! w  E5 `- M
● 利用嵌入式 Flash 模拟的 EEPROM:由 CPU 启动时,写过程可被电源故障中断。CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的全字写操作不会被中断。 EEPROM算法停止,但是当前的 Flash 全字写操作不会被 CPU 复位中断。; |! l/ M" q6 f4 m
1 E4 f4 _- B4 r6 G  w: A6 a
2 实现 EEPROM 模拟* t' U# q! `7 G( T# V
2.1 原理
" o, ~( s3 {  [8 ~考虑到 Flash 限制和产品需求,存在多种方式实现 EEPROM 模拟。下面所描述的方式需要至少两个同样大小的 Flash 扇区 (分配给非易失性数据):一个扇区首先被擦除,并提供逐字节的编程;当前扇区需要被回收时,另一个扇区准备好接收 (该扇区)。占据了每个扇区第一个半字 (16 位)的头字段标志了该扇区状态。将每个扇区作为一个存储页,在本文档下述部分中称作 Page0 和 Page1。
4 _: X( J: t9 e) x% I# c$ k头字段位于每页的基址,提供了该存储页的状态信息。
4 Z1 i+ ?* Z/ c1 F2 |- v每页有三个可能状态:  A; D8 K8 ?4 o* C3 D
● ERASED:该页为空。
+ Q) s! u) _0 Z2 w, A& e# k● RECEIVE_DATA:该页正在从其他满页中接收数据。$ W3 t2 {2 s9 ?: l0 Y* ?  Y
● VALID_PAGE:该页容纳有效数据,直到所有有效数据传输到被擦除页,这个状态才会变化。
# V# p: n. y: A& I( w/ s图 1 显示了页状态是如何变化的。+ n% A  ~" X; }+ l3 q% l% b

# F4 J0 x8 J$ G" a

( @) C8 p% B4 h* e A50ZR{G`}J}%Y3P1LPQV({N.png
1 j5 \' k% ]; S, P2 j3 u
& N8 B9 n( A% S; \$ E WKBD6UC{_XU902{L{M181.png & T' D" r- Z+ `1 b; M7 _" b1 X- |
* z% ^+ _/ A0 |! j
通常,使用这种方式时,用户不必提前知道变量更新频率。
- O# \8 R" ^1 V3 u本文档中所描述的软件和实现使用了两个 16 KB 的 Flash 扇区 (扇区 2 和扇区 3)来模拟EEPROM。0 ]$ |9 Z: G  T/ U) ]8 g
注: 选择扇区 2 和扇区 3 是由于这两个扇区相比于 STM32F2xx Flash 的其他扇区来说空间较小(STM32F2xx Flash 的主要内存块在表 3: STM32F2xx Flash 扇区中有单独描述)。根据应用和用户需要,也可以使用大的扇区。
* m+ N) W4 m7 x2 B* J& T! k1 f/ M. `4 y
U1()P0FJBJ5U)55XLB{%T8T.png
( @2 I; k' Y/ }+ Q

3 g% L' e& `/ ~/ }/ y4 O每个可变参数通过虚拟地址和要被存入 Flash 的值来定义,以便随后检索或更新 (在所实现的软件中虚拟地址和数据都是长 16 位)。当数据被修改时,关联到先前虚拟地址的修改数据会被存入新的 Flash 位置。数据检索返回最新的数据值。
8 @& m& d$ u! o4 U9 s; h8 E* u! a1 p  ]

2 v- @, ?9 L# s) o! e3 h {}}Y3KS}734B2GL}D2B%_KL.png
3 L+ [, m0 x5 s! c9 |4 i3 J
; K. k0 D9 ]' ^4 `2.2 用例:应用实例$ d# ~' N6 G) l1 }/ f% b
下面的例子显示了三个采用如下虚拟地址的 EEPROM 变量 (Var1、 Var2 和 Var3)的软件管理:
7 j% d. r8 O$ d" k+ }. B8 Z/ t& D9 {, n4 qVar1 虚拟地址 5555h
6 T" {) A, ]$ A8 S  i9 FVar2 虚拟地址 6666h
/ f. P* F! y4 ]1 oVar3 虚拟地址 7777h
0 v# N  \9 v, l
! D* H# L2 V. B* i2 Q I69IU{P[TF7ZENEEBUUGC5C.png
4 c% f7 |7 V$ @2 \2 F
/ D1 J3 t. g% ~0 E; c" G& ]$ L完整版请查看:附件
: w4 Z  E, w8 I' ]7 X; k4 G6 X* ]2 v- P
, W* L0 I* C. g# o9 E+ n+ ^3 {0 Y  P

- \. }  g0 b* ]- A+ W% G) d, N% n0 }

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

下载

288.15 KB, 下载次数: 1

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

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版