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

STM32F2xx 微控制器中的 EEPROM 模拟

[复制链接]
STMCU小助手 发布时间:2022-12-4 19:00
前言3 s, F. m# O, J7 f! ?- }: u5 l
EEPROM (电可擦除可编程只读存储器)通常用于工业应用领域,用于存储可更新数据。' F4 N: E2 a+ n( B4 u) q
EEPROM 是一种用于复杂系统 (如计算机)和其他电子设备的永久性 (非易失的)存储系统,用于在断电时存储和保留少量数据。
( |# M. q: i3 J% N$ {为了降低成本,外部 EEPROM 可以用 STM32F2xx 产品所具有的下述特性之一代替:& m3 l# ?" x, [. Q  `# V, Z
● 片上 4 KB 备份 SRAM* J; F9 c3 b% I4 ?# b. i
● 片上 Flash,并采用专门软件算法
+ ?; {& K8 B( {* u0 NSTM32F2xx 具有 4 KB 的备份 SRAM,当主要的 VDD 电源断电时,该 SRAM 可由 VBAT 电源供电。
3 w) _8 }; i, S2 X, f* N当有 VBAT (通常在电池供电应用中)时该备份 SRAM 可作为内部 EEPROM (无任何额外软件)使用,并具有以 CPU 频率进行高速存取的优势。4 x( @' C- @. H. q; |, N; e
而当备份 SRAM 另作他用且 / 或该应用不用 VBAT 供电时,片上 Flash(采用专门软件算法)可以用于模拟 EEPROM 存储器使用。
  s1 ?$ `  C& M: ^本应用笔记对通过利用 STM32F2xx 产品的片上 Flash 模拟 EEPROM 机制来代替独立EEPROM 的软件方案进行了说明。! N5 `% R3 g1 e. @, Z1 @0 Y
至少使用两个 Flash 扇区才能实现该模拟。 EEPROM 模拟代码在两个扇区 (当它们被填充时)之间交换数据,这在某种程度上是对用户透明的。
5 V  E: a- @# {8 Y; [: H5 V. v5 V& `本应用笔记所提供的 EEPROM 模拟驱动器满足以下要求:
, [  T" {6 ~1 J) B! @) b* h8 x4 }● 轻量级实现,具有一个简单的包含了三个函数 (用于初始化、读数据和写数据)的API,并减少了封装。5 z/ U' x, D1 C% e
● 简单易用的可更新代码模型- P8 ^( j, P& V4 I
● 清理和内部数据管理对用户透明
( d. l  ~2 Z: Z9 Y$ X9 p/ N● 后台扇区擦除6 O* d; y( M7 H) T
● 至少要使用两个 Flash 扇区,对于损耗均衡则需要使用更多 (Flash 扇区)
# k! ^4 C* G0 _+ G$ [' w3 s* u模拟 EEPROM 的大小是弹性可变的,它受扇区大小的限制和约束,并需考虑最大 EEPROM空间大小。- J; W/ h  C# ?& g- }$ n8 w
/ g9 Q1 M, q5 u( M" s" @
1 外部 EEPROM 和模拟 EEPROM 之间的主要区别
& L  ]4 R6 B# v5 T8 b5 vEEPROM 是许多嵌入式应用(需要能够进行非易失性数据存储,且运行时间内以字节或字的颗粒度进行更新)的关键元件。
/ a7 c" O  ~, q0 x1 a用于这些系统的微控制器通常基于嵌入式 Flash。为了减少所用元件、节省 PCB 空间、降低系统成本,可以用 STM32F2xx Flash 代替外部 EEPROM 来进行同步编码和数据存储。2 c9 F5 b+ d8 q1 {  f9 x
与 Flash 不同,数据可被重写前,外部 EEPROM 不需要擦除操作来释放空间。需要专门的软件管理来将数据存入嵌入式 Flash。
6 M8 W2 r1 u# v: l! t0 K仿真软件方案取决于多种因素,包括 EEPROM 可靠性、所用 Flash 结构和产品需求。嵌入式 Flash 和外部串行 EEPROM 之间的主要区别对于任何使用同样 Flash 技术的微控制器(并非针对 STM32F2xx 系列产品)都是相同的。主要区别概括如表 1。$ e! G# P- ~5 {2 [" Q" Y) V

; a& K3 C! D  ^. \$ x$ \/ k )B@9T73CD@}2R9PP2VE_NZN.png
. m9 r( b& v# X
8 K' P! R( @. @: J% H  Q$ {6 ^ 1_J2J[QT@EU1RQUH6D7V$_H.png / ]: m. g! c: {4 o) \+ a' z
: ~% ^8 q4 \& e5 z* j

, k0 z0 }' L' T# y* t1.1 写访问时间的不同& n" D" |3 p2 n" k" s9 W6 ?- f
由于 Flash 的写访问时间更短,重要参数可以更快地存入模拟 EEPROM (比外部串行EEPROM 更快),因此能够提高数据存储能力。
4 h0 `1 N1 G( ^* U3 M, ]  a3 b$ W- Q
1.2 擦除时间的不同
. Z2 `6 r- i  \( A6 f擦除时间的不同是独立 EEPROM 和使用嵌入式 Flash 模拟的 EEPROM 之间的另一个重要区别。与 Flash 不同,在向其写入数据前,EEPROM 不需要擦除操作来释放空间。这意味着需要某种形式的软件管理来将数据存入 Flash。此外,由于 Flash 中的块擦除过程不需要花费很多时间,因此设计 Flash 管理软件时,应当考虑断电和其他可能中断擦除过程的伪事件 (例如复位)。为了设计出稳健的 Flash 管理软件,有必要彻底了解 Flash 擦除过程。( b/ c) Z; n$ j4 @) i9 u7 E$ E) j
注: CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的扇区擦除或批量擦除操作不会被中断。6 i, Z/ |9 t! b: C; k) |9 s- d0 H

1 [5 }( V+ ~& b) L6 u+ |6 F: u
1.3 写方式的相似之处$ y$ |7 H; Q7 M  |" g. b
外部 EEPROM 和采用 STM32F2xx 嵌入式 Flash 模拟的 EEPROM 之间的相同点之一是其写方式。, C6 ~* \3 m- ^  w& u1 D
● 独立外部 EEPROM:由 CPU 启动时,全字写操作不会被 CPU 复位而中断。只有电源故障会中断该写过程,因此适当地按大小排列去耦电容可以保护独立 EEPROM 中的完整写过程。, I* {  G' b3 C* X) q* G: V
● 利用嵌入式 Flash 模拟的 EEPROM:由 CPU 启动时,写过程可被电源故障中断。CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的全字写操作不会被中断。 EEPROM算法停止,但是当前的 Flash 全字写操作不会被 CPU 复位中断。
5 n$ z6 X+ d/ l1 n" x3 F5 A, {! T6 G5 G9 X* j, V
2 实现 EEPROM 模拟; ?/ [# g& T( r# _
2.1 原理" P2 C) o/ t& w; |/ o) J
考虑到 Flash 限制和产品需求,存在多种方式实现 EEPROM 模拟。下面所描述的方式需要至少两个同样大小的 Flash 扇区 (分配给非易失性数据):一个扇区首先被擦除,并提供逐字节的编程;当前扇区需要被回收时,另一个扇区准备好接收 (该扇区)。占据了每个扇区第一个半字 (16 位)的头字段标志了该扇区状态。将每个扇区作为一个存储页,在本文档下述部分中称作 Page0 和 Page1。. E6 G3 @! C# Y# _
头字段位于每页的基址,提供了该存储页的状态信息。2 V: G! ?4 b8 Z4 \
每页有三个可能状态:
  {5 p/ n; V( b' F- v● ERASED:该页为空。
; E* D, J5 w8 h4 I● RECEIVE_DATA:该页正在从其他满页中接收数据。  n+ y4 c# ^2 A6 }
● VALID_PAGE:该页容纳有效数据,直到所有有效数据传输到被擦除页,这个状态才会变化。7 I8 t5 t; g9 w# S. L3 s* @# h6 A
图 1 显示了页状态是如何变化的。
( D& O% T' J. r6 k9 b
1 ?" x' E5 C5 w/ ^: u5 t! X7 o

, q" X* `4 G8 c6 U& N) P A50ZR{G`}J}%Y3P1LPQV({N.png   h% B; F, e4 N6 q2 Y

" V! R' {5 o* Z$ N  V WKBD6UC{_XU902{L{M181.png
' J7 I" G/ x7 v$ t8 g
* U. x3 P# i( e& f' N: h通常,使用这种方式时,用户不必提前知道变量更新频率。" e9 Q# a. `: ?" g! m7 \) F0 g' P
本文档中所描述的软件和实现使用了两个 16 KB 的 Flash 扇区 (扇区 2 和扇区 3)来模拟EEPROM。
9 y: X' W: D& W/ ?% u5 x: r注: 选择扇区 2 和扇区 3 是由于这两个扇区相比于 STM32F2xx Flash 的其他扇区来说空间较小(STM32F2xx Flash 的主要内存块在表 3: STM32F2xx Flash 扇区中有单独描述)。根据应用和用户需要,也可以使用大的扇区。
, u* K6 S6 l0 S& @: p; v: ^- c( ^0 o" a( {9 W
U1()P0FJBJ5U)55XLB{%T8T.png
5 U2 V# Q( @$ m" K$ R8 E$ v+ f0 }

$ b' j  D2 ~2 F1 r4 s每个可变参数通过虚拟地址和要被存入 Flash 的值来定义,以便随后检索或更新 (在所实现的软件中虚拟地址和数据都是长 16 位)。当数据被修改时,关联到先前虚拟地址的修改数据会被存入新的 Flash 位置。数据检索返回最新的数据值。1 A  t0 S+ a; R

+ A& u& g* v! L6 s8 L( g3 G

4 L- [$ _$ R# h {}}Y3KS}734B2GL}D2B%_KL.png 8 A4 _5 |2 I$ [# F5 U
5 o! p# ^4 ]) D, ^
2.2 用例:应用实例% p7 n% D0 L& Z: W* s
下面的例子显示了三个采用如下虚拟地址的 EEPROM 变量 (Var1、 Var2 和 Var3)的软件管理:9 u' [1 w/ e, N2 Q. L9 G5 m$ g8 L
Var1 虚拟地址 5555h
; w/ \% A3 }6 L; N6 S+ p: F$ gVar2 虚拟地址 6666h
2 @0 w: L/ W' fVar3 虚拟地址 7777h" Q/ m: [% V, l1 X; r

. y5 t  |. K( Y1 H& | I69IU{P[TF7ZENEEBUUGC5C.png / F+ M# \& S2 j. {) u! v
4 E' y2 O. }" j& r5 n/ k
完整版请查看:附件
# F1 s) i! L* }" R& }6 Q0 \. X# F& _! K

' ~/ h+ q- l& {% _

6 |. R/ g& }/ v" r
7 n6 X* F2 }9 T) v/ u- T( L

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

下载

288.15 KB, 下载次数: 1

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

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版