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

STM32F2xx 微控制器中的 EEPROM 模拟

[复制链接]
STMCU小助手 发布时间:2022-7-17 17:56
前言
; P! L; G7 L- V! }$ @EEPROM (电可擦除可编程只读存储器)通常用于工业应用领域,用于存储可更新数据。
$ b$ h$ ~/ `# i$ ~3 V* s. n  W) VEEPROM 是一种用于复杂系统 (如计算机)和其他电子设备的永久性 (非易失的)存储系统,用于在断电时存储和保留少量数据。3 B* @# J0 ]1 g# z" j8 o
为了降低成本,外部 EEPROM 可以用 STM32F2xx 产品所具有的下述特性之一代替:4 X: m" G5 K8 g5 k- \) o5 `# M9 ?
片上 4 KB 备份 SRAM 3 S2 E' h. a! Y6 Y$ c* V
片上 Flash,并采用专门软件算法
2 W( A' y4 \- h6 @& p( n2 _STM32F2xx 具有 4 KB 的备份 SRAM,当主要的 VDD 电源断电时,该 SRAM 可由 VBAT 电源供电。8 K' E  a, f/ K& _, x
当有 VBAT (通常在电池供电应用中)时该备份 SRAM 可作为内部 EEPROM (无任何额外软件)使用,并具有以 CPU 频率进行高速存取的优势。
( c9 r5 G6 i' ]而当备份 SRAM 另作他用且 / 或该应用不用 VBAT 供电时,片上 Flash(采用专门软件算法)可以用于模拟 EEPROM 存储器使用。& q: m! r  q% |9 c, j
本应用笔记对通过利用 STM32F2xx 产品的片上 Flash 模拟 EEPROM 机制来代替独立EEPROM 的软件方案进行了说明。
- z8 y* U8 e0 y! {& h: n' b  \' |至少使用两个 Flash 扇区才能实现该模拟。 EEPROM 模拟代码在两个扇区 (当它们被填充时)之间交换数据,这在某种程度上是对用户透明的。% m: G/ r, B& @( E' t" C6 C/ A
本应用笔记所提供的 EEPROM 模拟驱动器满足以下要求:2 [* G9 {$ [! S( V9 u# H
轻量级实现,具有一个简单的包含了三个函数 (用于初始化、读数据和写数据)的API,并减少了封装。
5 v$ @. Z, P. a/ X简单易用的可更新代码模型! j1 y" E/ p/ P! T" E6 I, k4 K" k9 y
清理和内部数据管理对用户透明
! O" x+ t7 F" f后台扇区擦除4 y4 @& J3 b% E8 |  p
至少要使用两个 Flash 扇区,对于损耗均衡则需要使用更多 (Flash 扇区)模拟 EEPROM 的大小是弹性可变的,它受扇区大小的限制和约束,并需考虑最大 EEPROM空间大小。4 z( T7 d; I5 X3 t) S
, H; Q7 c# Q7 w0 ~( v% r1 g

0 F" h: y- x1 l: D( h$ P3 b4 f1 外部 EEPROM 和模拟 EEPROM 之间的主要区别
& I; l5 v4 t' [" r# WEEPROM 是许多嵌入式应用(需要能够进行非易失性数据存储,且运行时间内以字节或字的颗粒度进行更新)的关键元件。
( }* a/ n6 m7 l  A/ W3 ]" K! C: X用于这些系统的微控制器通常基于嵌入式 Flash。为了减少所用元件、节省 PCB 空间、降低系统成本,可以用 STM32F2xx Flash 代替外部 EEPROM 来进行同步编码和数据存储。
% C4 D$ n; t: u$ b5 M4 O( {8 _与 Flash 不同,数据可被重写前,外部 EEPROM 不需要擦除操作来释放空间。需要专门的软件管理来将数据存入嵌入式 Flash。
: |- K) W+ @4 V- d仿真软件方案取决于多种因素,包括 EEPROM 可靠性、所用 Flash 结构和产品需求。
6 c& \! M/ _" R7 ~* l9 Z嵌入式 Flash 和外部串行 EEPROM 之间的主要区别对于任何使用同样 Flash 技术的微控制器(并非针对 STM32F2xx 系列产品)都是相同的。主要区别概括如 15 ?% m2 t8 Q7 A3 A
" z8 D, w- n5 R
_NRA([Y`NOPO~@)BF]4LX}W.png : L5 F% X8 W% x7 J& p! B
8 C' k$ C$ x$ i+ N8 F" W3 M
`PSWR@`)OPLHWWV@BU@%[PI.png + A, E! a# O2 D) N9 e

7 ]' x" h/ j8 V* p
2 N1 j9 U% q; ?' w4 b4 Y0 y6 J1.1 写访问时间的不同
( i9 Z. M& U: b" u( p* h由于 Flash 的写访问时间更短,重要参数可以更快地存入模拟 EEPROM (比外部串行EEPROM 更快),因此能够提高数据存储能力。
7 p5 \; e0 m  o  o6 `+ X. C, @9 q* @) J) X

0 h7 I* P0 O0 o0 {  O7 G/ p1.2 擦除时间的不同% P; c+ m' x7 u" Z7 q9 U
擦除时间的不同是独立 EEPROM 和使用嵌入式 Flash 模拟的 EEPROM 之间的另一个重要区别。与 Flash 不同,在向其写入数据前,EEPROM 不需要擦除操作来释放空间。这意味着需要某种形式的软件管理来将数据存入 Flash。此外,由于 Flash 中的块擦除过程不需要花费很多时间,因此设计 Flash 管理软件时,应当考虑断电和其他可能中断擦除过程的伪事件 (例如复位)。
8 d$ ^9 e: j& B% u为了设计出稳健的 Flash 管理软件,有必要彻底了解 Flash 擦除过程。+ X3 J0 ^: f4 L% p! s$ x
注: CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的扇区擦除或批量擦除操作不会被中断。
5 e" h& C1 b& e) |6 F7 D& v; ^4 ]
# H! m0 F) Y4 C6 b
5 Y& _/ Y* x- }' @) E1 A
1.3 写方式的相似之处8 D( R* k4 B( e2 k/ h" f7 X1 T
外部 EEPROM 和采用 STM32F2xx 嵌入式 Flash 模拟的 EEPROM 之间的相同点之一是其写方式。& @7 Q2 ]1 [" c3 B
独立外部 EEPROM:由 CPU 启动时,全字写操作不会被 CPU 复位而中断。只有电源故障会中断该写过程,因此适当地按大小排列去耦电容可以保护独立 EEPROM 中的完整写过程。4 N# g' h' J/ ~, n. {4 ]4 z
. W! u4 u& j) f
利用嵌入式 Flash 模拟的 EEPROM:由 CPU 启动时,写过程可被电源故障中断。CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的全字写操作不会被中断。 EEPROM算法停止,但是当前的 Flash 全字写操作不会被 CPU 复位中断。
, E$ x* A7 [! I  M2 实现 EEPROM 模拟
& y) }( C8 `' F) d, t( K& S- C2.1 原理: B4 t) a# O2 `- D* c/ q: A
考虑到 Flash 限制和产品需求,存在多种方式实现 EEPROM 模拟。下面所描述的方式需要至少两个同样大小的 Flash 扇区 (分配给非易失性数据):一个扇区首先被擦除,并提供逐字节的编程;当前扇区需要被回收时,另一个扇区准备好接收 (该扇区)。占据了每个扇区第一个半字 (16 位)的头字段标志了该扇区状态。将每个扇区作为一个存储页,在本文档下述部分中称作 Page0 和 Page1。3 T, O" ~/ X' O: f
头字段位于每页的基址,提供了该存储页的状态信息。1 t/ R# V" ?# g  _; ~
每页有三个可能状态:9 S+ Y! H' z; A+ b6 v/ [8 {
ERASED:该页为空。
9 |! c! O; ~) ~# J* Y/ IRECEIVE_DATA:该页正在从其他满页中接收数据。
5 {9 ]& ?8 j: z5 K: g4 uVALID_PAGE:该页容纳有效数据,直到所有有效数据传输到被擦除页,这个状态才会变化。
  R( p+ k2 T. [9 X1 显示了页状态是如何变化的。
9 _% b+ h  M9 q& M0 }2 S8 u
% F) _; ~' A/ D( u3 \1 |

8 m' C5 q! W+ |5 P4 a UEO6BX4U``3FZ6P6{F@DLNS.png
$ W6 M+ z+ W8 r$ e
# D' l0 N) l0 @% D- V YRYXRDK28DKG)}K1MS6TW@W.png
, F! O( U" u0 ]  s% S% a7 g) k
7 N. ?& l* t8 i) w8 O- X, G 5 W/ z+ B; s/ _2 k! h
通常,使用这种方式时,用户不必提前知道变量更新频率。& P, c/ w4 o: ~+ B* H6 ]
本文档中所描述的软件和实现使用了两个 16 KB 的 Flash 扇区 (扇区 2 和扇区 3)来模拟EEPROM。6 g" E6 b/ f: t9 y6 t, n$ R
注: 选择扇区 2 和扇区 3 是由于这两个扇区相比于 STM32F2xx Flash 的其他扇区来说空间较小STM32F2xx Flash 的主要内存块在3: STM32F2xx Flash 扇区中有单独描述)。根据应用和用户需要,也可以使用大的扇区。
. j. ~* Y( |2 ?! U7 F
5 D, u: X3 |0 {* ^! @& f: D JS8}{J(HO9J[7AH2]L953FA.png 1 G) H# ]* J9 a: L2 B4 n* Y6 O
每个可变参数通过虚拟地址和要被存入 Flash 的值来定义,以便随后检索或更新 (在所实现的软件中虚拟地址和数据都是长 16 位)。当数据被修改时,关联到先前虚拟地址的修改数据会被存入新的 Flash 位置。数据检索返回最新的数据值。
& G% ]9 y+ w, M4 L6 k
; ~" E/ c/ Q& f! |

0 b% Q) z4 F  E+ X8 h5 t BB0FS`9X8$N5KE[[VAX]7.png
( S2 a2 z  ]) q# A# b# e
' E7 S9 s4 C8 u5 e

3 L, s) l8 L9 g1 |! _0 ~, h完整版请查看:附件
* Q% i2 y+ |( N. T1 I
- U2 i2 m! v% U" M0 p( t
: D4 n4 U: b5 e% N- A* b

DM00026574_ZHV2.1.pdf

下载

284.45 KB, 下载次数: 1

收藏 评论0 发布时间:2022-7-17 17:56

举报

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