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

STM32F2xx 微控制器中的 EEPROM 模拟

[复制链接]
STMCU小助手 发布时间:2022-7-17 17:56
前言
- X. \3 y/ m0 @EEPROM (电可擦除可编程只读存储器)通常用于工业应用领域,用于存储可更新数据。
9 v3 L' x( ^1 n5 q& PEEPROM 是一种用于复杂系统 (如计算机)和其他电子设备的永久性 (非易失的)存储系统,用于在断电时存储和保留少量数据。! _3 I0 p  _; A: E; U3 s4 b# V: {1 b
为了降低成本,外部 EEPROM 可以用 STM32F2xx 产品所具有的下述特性之一代替:
8 A$ i  B! K4 O9 R片上 4 KB 备份 SRAM
3 p7 }% I0 D% F片上 Flash,并采用专门软件算法
* u! L1 q: `* fSTM32F2xx 具有 4 KB 的备份 SRAM,当主要的 VDD 电源断电时,该 SRAM 可由 VBAT 电源供电。+ E! `5 y+ t0 P, [
当有 VBAT (通常在电池供电应用中)时该备份 SRAM 可作为内部 EEPROM (无任何额外软件)使用,并具有以 CPU 频率进行高速存取的优势。- t3 ~$ m0 r: \! r+ M
而当备份 SRAM 另作他用且 / 或该应用不用 VBAT 供电时,片上 Flash(采用专门软件算法)可以用于模拟 EEPROM 存储器使用。% I6 R" Y5 K3 l/ ~
本应用笔记对通过利用 STM32F2xx 产品的片上 Flash 模拟 EEPROM 机制来代替独立EEPROM 的软件方案进行了说明。
# m/ [5 Y4 k# M' `$ L% ?3 k至少使用两个 Flash 扇区才能实现该模拟。 EEPROM 模拟代码在两个扇区 (当它们被填充时)之间交换数据,这在某种程度上是对用户透明的。
3 ^- L3 X; s3 t" s( s4 ]本应用笔记所提供的 EEPROM 模拟驱动器满足以下要求:5 [, h* g  M& v, @3 b8 u" g" j
轻量级实现,具有一个简单的包含了三个函数 (用于初始化、读数据和写数据)的API,并减少了封装。9 {5 R+ X8 X9 O/ Q
简单易用的可更新代码模型' s: d1 z' U1 J/ F: }
清理和内部数据管理对用户透明
* c# Z4 o$ U2 N* |; [: [后台扇区擦除
! b# Y- c( R# w7 y4 Z) o7 K至少要使用两个 Flash 扇区,对于损耗均衡则需要使用更多 (Flash 扇区)模拟 EEPROM 的大小是弹性可变的,它受扇区大小的限制和约束,并需考虑最大 EEPROM空间大小。1 U/ v( V: M/ D& h* m# E. R
' \8 j" d: X$ M: M( G; T+ r

/ j# }$ O1 ~- O: @1 外部 EEPROM 和模拟 EEPROM 之间的主要区别
- ?  p& U' M8 {+ L2 I* [# r2 q. y$ l1 O+ REEPROM 是许多嵌入式应用(需要能够进行非易失性数据存储,且运行时间内以字节或字的颗粒度进行更新)的关键元件。
! a3 h& s7 z! y9 N8 f用于这些系统的微控制器通常基于嵌入式 Flash。为了减少所用元件、节省 PCB 空间、降低系统成本,可以用 STM32F2xx Flash 代替外部 EEPROM 来进行同步编码和数据存储。
7 S4 K% ]+ t1 S& q/ m与 Flash 不同,数据可被重写前,外部 EEPROM 不需要擦除操作来释放空间。需要专门的软件管理来将数据存入嵌入式 Flash。2 ]: e  @1 M3 f- ]7 X7 y+ i
仿真软件方案取决于多种因素,包括 EEPROM 可靠性、所用 Flash 结构和产品需求。8 L4 H% U8 l1 D' A
嵌入式 Flash 和外部串行 EEPROM 之间的主要区别对于任何使用同样 Flash 技术的微控制器(并非针对 STM32F2xx 系列产品)都是相同的。主要区别概括如 1+ \( X$ Q6 Z# V2 {2 |1 }2 b$ S, A

- ~' C$ k& p  Z0 f7 g- I _NRA([Y`NOPO~@)BF]4LX}W.png
$ ]# B; o! \& B
2 k' C4 h! f( h# P$ G# ] `PSWR@`)OPLHWWV@BU@%[PI.png
  P; `! g" }1 Y/ ^
' L% L! v& H" T0 i  x, T% v% c: }8 `+ {3 n' _
1.1 写访问时间的不同
0 F) `+ s- e4 V5 }& E由于 Flash 的写访问时间更短,重要参数可以更快地存入模拟 EEPROM (比外部串行EEPROM 更快),因此能够提高数据存储能力。. J2 G8 c' @3 `+ [6 e2 w
  C: n/ m& L; X, L) |8 {

1 Z0 q4 o& O0 s: b1.2 擦除时间的不同
+ r- A: {) R: P7 R* G: b擦除时间的不同是独立 EEPROM 和使用嵌入式 Flash 模拟的 EEPROM 之间的另一个重要区别。与 Flash 不同,在向其写入数据前,EEPROM 不需要擦除操作来释放空间。这意味着需要某种形式的软件管理来将数据存入 Flash。此外,由于 Flash 中的块擦除过程不需要花费很多时间,因此设计 Flash 管理软件时,应当考虑断电和其他可能中断擦除过程的伪事件 (例如复位)。
/ G: V. h3 T# X4 E: S1 _为了设计出稳健的 Flash 管理软件,有必要彻底了解 Flash 擦除过程。
/ c0 y1 f0 B, p. _0 x9 O3 J! L注: CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的扇区擦除或批量擦除操作不会被中断。
; ~0 _( u4 r$ I$ O' a5 s, O
/ a, i$ c! E$ h. G: u: E
/ i: N$ v. F, U3 J
1.3 写方式的相似之处
6 }: n& D" l; l( L: S5 Z5 G外部 EEPROM 和采用 STM32F2xx 嵌入式 Flash 模拟的 EEPROM 之间的相同点之一是其写方式。
0 K& K* U! W# A" b, v独立外部 EEPROM:由 CPU 启动时,全字写操作不会被 CPU 复位而中断。只有电源故障会中断该写过程,因此适当地按大小排列去耦电容可以保护独立 EEPROM 中的完整写过程。: j0 Z7 e. r8 m4 j2 ]5 u( C. \5 e
) R5 x# e5 E' u% p" y5 l3 }- h
利用嵌入式 Flash 模拟的 EEPROM:由 CPU 启动时,写过程可被电源故障中断。CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的全字写操作不会被中断。 EEPROM算法停止,但是当前的 Flash 全字写操作不会被 CPU 复位中断。8 u$ n8 S; g9 w) z- t
2 实现 EEPROM 模拟1 Q, M, }, R+ g% b. I; d1 o
2.1 原理
/ K6 W4 E7 O1 K6 `) s8 C3 ~2 l% {考虑到 Flash 限制和产品需求,存在多种方式实现 EEPROM 模拟。下面所描述的方式需要至少两个同样大小的 Flash 扇区 (分配给非易失性数据):一个扇区首先被擦除,并提供逐字节的编程;当前扇区需要被回收时,另一个扇区准备好接收 (该扇区)。占据了每个扇区第一个半字 (16 位)的头字段标志了该扇区状态。将每个扇区作为一个存储页,在本文档下述部分中称作 Page0 和 Page1。
3 h' {8 ~' F4 W: a头字段位于每页的基址,提供了该存储页的状态信息。5 [7 |  i( c8 z- O. l5 S* g& G
每页有三个可能状态:
/ j) ?8 P  D4 c! Z" aERASED:该页为空。
) s* `  x5 i% U8 l% z# FRECEIVE_DATA:该页正在从其他满页中接收数据。
: Y6 [$ ]6 p! w! Q: g  lVALID_PAGE:该页容纳有效数据,直到所有有效数据传输到被擦除页,这个状态才会变化。9 X5 r  E* a2 X
1 显示了页状态是如何变化的。) S, K% H+ P/ H* x
6 _! S0 [+ d  w, a
3 R, ]+ A5 R5 \5 `: S9 W$ Y- ^
UEO6BX4U``3FZ6P6{F@DLNS.png * `% g7 M( q; L9 H* u: M$ f# C$ d4 n
0 }/ y$ S8 @3 Y
YRYXRDK28DKG)}K1MS6TW@W.png 1 T5 N9 x+ \- b
. n2 G8 p2 g, V2 m, }7 B; ^4 T) P

2 \6 S4 H. r1 j; R2 P$ y通常,使用这种方式时,用户不必提前知道变量更新频率。
( `4 q5 I+ a3 P2 e* c  a本文档中所描述的软件和实现使用了两个 16 KB 的 Flash 扇区 (扇区 2 和扇区 3)来模拟EEPROM。
" M7 U: w$ L/ d! W* I7 ^8 x  z注: 选择扇区 2 和扇区 3 是由于这两个扇区相比于 STM32F2xx Flash 的其他扇区来说空间较小STM32F2xx Flash 的主要内存块在3: STM32F2xx Flash 扇区中有单独描述)。根据应用和用户需要,也可以使用大的扇区。2 z+ e* C8 R6 }( C" [
; ]' _) `2 m7 w; g+ P0 m
JS8}{J(HO9J[7AH2]L953FA.png
5 P4 Q$ f+ Q) {8 M7 N7 }" S, c" d* @每个可变参数通过虚拟地址和要被存入 Flash 的值来定义,以便随后检索或更新 (在所实现的软件中虚拟地址和数据都是长 16 位)。当数据被修改时,关联到先前虚拟地址的修改数据会被存入新的 Flash 位置。数据检索返回最新的数据值。
6 n# b5 \* y* O) M/ ^2 t( U8 z) p- }0 r/ D  O
5 w# k) u) T$ s) m
BB0FS`9X8$N5KE[[VAX]7.png
) f$ I) O/ \( @; x
& R, o7 Q- e( c+ v2 T. D6 g8 H

  X1 M" s; h! H6 x, }+ B完整版请查看:附件
8 n8 C0 m) Z- P4 N- w
! i' C+ g% D* I( H! v. D) x; V
0 I, R' I) ~$ |9 C8 Z

DM00026574_ZHV2.1.pdf

下载

284.45 KB, 下载次数: 1

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

举报

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