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

STM32F2xx 微控制器中的 EEPROM 模拟

[复制链接]
STMCU小助手 发布时间:2022-12-4 19:00
前言
1 l( e5 W5 w! ?' XEEPROM (电可擦除可编程只读存储器)通常用于工业应用领域,用于存储可更新数据。
; F# N  {& X8 b6 G+ ?EEPROM 是一种用于复杂系统 (如计算机)和其他电子设备的永久性 (非易失的)存储系统,用于在断电时存储和保留少量数据。, W3 V( Q7 Z& _3 z
为了降低成本,外部 EEPROM 可以用 STM32F2xx 产品所具有的下述特性之一代替:
7 @1 }+ U3 n& P0 [( v% D  {) q) L● 片上 4 KB 备份 SRAM) p) @6 S; }1 a0 ~
● 片上 Flash,并采用专门软件算法
1 p% i; V5 n% ^+ v" h  v# |STM32F2xx 具有 4 KB 的备份 SRAM,当主要的 VDD 电源断电时,该 SRAM 可由 VBAT 电源供电。! N3 ]! W' [8 s) q" r
当有 VBAT (通常在电池供电应用中)时该备份 SRAM 可作为内部 EEPROM (无任何额外软件)使用,并具有以 CPU 频率进行高速存取的优势。% q3 R& h+ y+ c% o- {
而当备份 SRAM 另作他用且 / 或该应用不用 VBAT 供电时,片上 Flash(采用专门软件算法)可以用于模拟 EEPROM 存储器使用。& T, ]: ]( h# S
本应用笔记对通过利用 STM32F2xx 产品的片上 Flash 模拟 EEPROM 机制来代替独立EEPROM 的软件方案进行了说明。
1 F+ ?$ f5 `" P至少使用两个 Flash 扇区才能实现该模拟。 EEPROM 模拟代码在两个扇区 (当它们被填充时)之间交换数据,这在某种程度上是对用户透明的。+ v0 }7 D! u; g4 D
本应用笔记所提供的 EEPROM 模拟驱动器满足以下要求:
; `9 ^5 o& l* i- w. g● 轻量级实现,具有一个简单的包含了三个函数 (用于初始化、读数据和写数据)的API,并减少了封装。
  W1 G( P# j. z3 e4 @/ }) `● 简单易用的可更新代码模型
9 Y+ D0 _- o& u3 w● 清理和内部数据管理对用户透明  x5 x  n8 ^7 f0 x
● 后台扇区擦除; f- Y1 _) q9 Y! L) n- |  ^, r$ n2 R
● 至少要使用两个 Flash 扇区,对于损耗均衡则需要使用更多 (Flash 扇区)+ ^; {$ l4 `( {( W# \
模拟 EEPROM 的大小是弹性可变的,它受扇区大小的限制和约束,并需考虑最大 EEPROM空间大小。
; G* Z) Y; m" v4 m* F" B4 `2 Z  ]3 T! I5 l9 H
1 外部 EEPROM 和模拟 EEPROM 之间的主要区别
. z! U. r0 A6 b, D9 qEEPROM 是许多嵌入式应用(需要能够进行非易失性数据存储,且运行时间内以字节或字的颗粒度进行更新)的关键元件。
1 H8 A" s$ F5 k: }( \. _" U用于这些系统的微控制器通常基于嵌入式 Flash。为了减少所用元件、节省 PCB 空间、降低系统成本,可以用 STM32F2xx Flash 代替外部 EEPROM 来进行同步编码和数据存储。
' O7 v. {; f2 [9 u# h与 Flash 不同,数据可被重写前,外部 EEPROM 不需要擦除操作来释放空间。需要专门的软件管理来将数据存入嵌入式 Flash。9 z, h6 D+ E4 p4 h7 t( H% A
仿真软件方案取决于多种因素,包括 EEPROM 可靠性、所用 Flash 结构和产品需求。嵌入式 Flash 和外部串行 EEPROM 之间的主要区别对于任何使用同样 Flash 技术的微控制器(并非针对 STM32F2xx 系列产品)都是相同的。主要区别概括如表 1。' g; @+ H! Q' G5 r" C- ]

% X0 q& M# e3 k )B@9T73CD@}2R9PP2VE_NZN.png , O! b$ Q; D. _3 a7 O4 `3 l
! K0 [- y$ e+ I
1_J2J[QT@EU1RQUH6D7V$_H.png % D; S8 X$ ~5 \8 Y) w

8 {, `6 L* p5 V5 J6 D( y! v* ~0 c+ G2 ?6 T
1.1 写访问时间的不同* L; M  H- J0 U) z
由于 Flash 的写访问时间更短,重要参数可以更快地存入模拟 EEPROM (比外部串行EEPROM 更快),因此能够提高数据存储能力。
4 I- \$ p8 x; h& B
! l; y( w$ E+ s' |/ t8 r$ f( Q
1.2 擦除时间的不同
+ W4 z6 N* Q, L; `! M7 y  Q; I$ w擦除时间的不同是独立 EEPROM 和使用嵌入式 Flash 模拟的 EEPROM 之间的另一个重要区别。与 Flash 不同,在向其写入数据前,EEPROM 不需要擦除操作来释放空间。这意味着需要某种形式的软件管理来将数据存入 Flash。此外,由于 Flash 中的块擦除过程不需要花费很多时间,因此设计 Flash 管理软件时,应当考虑断电和其他可能中断擦除过程的伪事件 (例如复位)。为了设计出稳健的 Flash 管理软件,有必要彻底了解 Flash 擦除过程。. Y( j( z: d6 S
注: CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的扇区擦除或批量擦除操作不会被中断。
: s  s: c' L7 v# U+ V* Y
  {% B6 i7 o' w
1.3 写方式的相似之处
$ q4 v4 e( h" j4 w外部 EEPROM 和采用 STM32F2xx 嵌入式 Flash 模拟的 EEPROM 之间的相同点之一是其写方式。
* a# `( f' y5 k  k● 独立外部 EEPROM:由 CPU 启动时,全字写操作不会被 CPU 复位而中断。只有电源故障会中断该写过程,因此适当地按大小排列去耦电容可以保护独立 EEPROM 中的完整写过程。
$ Q6 O. N4 ]6 F4 k* i$ i" }% ~● 利用嵌入式 Flash 模拟的 EEPROM:由 CPU 启动时,写过程可被电源故障中断。CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的全字写操作不会被中断。 EEPROM算法停止,但是当前的 Flash 全字写操作不会被 CPU 复位中断。" t. D  Q4 i% |" T$ Z' h, Y0 o! d
3 X" [# K2 o0 [8 a& c
2 实现 EEPROM 模拟
4 _# ^$ ~" v* l! o2.1 原理8 T$ Z/ r: p7 F
考虑到 Flash 限制和产品需求,存在多种方式实现 EEPROM 模拟。下面所描述的方式需要至少两个同样大小的 Flash 扇区 (分配给非易失性数据):一个扇区首先被擦除,并提供逐字节的编程;当前扇区需要被回收时,另一个扇区准备好接收 (该扇区)。占据了每个扇区第一个半字 (16 位)的头字段标志了该扇区状态。将每个扇区作为一个存储页,在本文档下述部分中称作 Page0 和 Page1。1 d) b" t; r+ `: e, C
头字段位于每页的基址,提供了该存储页的状态信息。
$ \' r7 Y0 O2 h! \0 I, p" Q* r* z每页有三个可能状态:/ c% Z5 X, V1 P% ~
● ERASED:该页为空。$ ^' k( S* @! C& W8 @. }& Z. g4 O
● RECEIVE_DATA:该页正在从其他满页中接收数据。
' Z% Z7 Q& `$ _- T# \0 y# Y● VALID_PAGE:该页容纳有效数据,直到所有有效数据传输到被擦除页,这个状态才会变化。
  C* G! ]4 h, \" ]% ?% Y0 a图 1 显示了页状态是如何变化的。1 h; F- [- N0 U6 u. e
, P  L9 F$ d$ ]: R# H3 O

( I9 j7 |& a" {8 D! S A50ZR{G`}J}%Y3P1LPQV({N.png
* G$ C5 w5 R) \! d( F3 p- N- a4 ~0 P7 K! ]- y% m- }& x
WKBD6UC{_XU902{L{M181.png
- x5 V0 q, x: w+ D& J; G! D: ^
+ }* a6 V1 h% }2 s通常,使用这种方式时,用户不必提前知道变量更新频率。. n" f2 n* o3 {  F8 E: p6 ]* {
本文档中所描述的软件和实现使用了两个 16 KB 的 Flash 扇区 (扇区 2 和扇区 3)来模拟EEPROM。
% e  y) h" M8 p1 t; R! w( B' C注: 选择扇区 2 和扇区 3 是由于这两个扇区相比于 STM32F2xx Flash 的其他扇区来说空间较小(STM32F2xx Flash 的主要内存块在表 3: STM32F2xx Flash 扇区中有单独描述)。根据应用和用户需要,也可以使用大的扇区。
: j7 d( Q3 T1 I( S3 Y
6 |4 M/ V4 h2 x3 M7 b
U1()P0FJBJ5U)55XLB{%T8T.png : `; e0 ^6 q: K, n( Z! V
3 }3 f0 u& W9 i. E0 M# ]: t
每个可变参数通过虚拟地址和要被存入 Flash 的值来定义,以便随后检索或更新 (在所实现的软件中虚拟地址和数据都是长 16 位)。当数据被修改时,关联到先前虚拟地址的修改数据会被存入新的 Flash 位置。数据检索返回最新的数据值。
9 j5 r( n( I6 c4 ]- f% B4 ^. g! ?  c5 B1 e7 w; X" x/ S! i" X* A

  V6 K4 n, B! B6 v  o) w {}}Y3KS}734B2GL}D2B%_KL.png 3 J, g* V5 |& t  S! {/ b
* M6 A7 s5 p& n+ o; t
2.2 用例:应用实例- X- t8 Y5 H) i
下面的例子显示了三个采用如下虚拟地址的 EEPROM 变量 (Var1、 Var2 和 Var3)的软件管理:/ i' |# u) C" m2 I  q8 q0 C
Var1 虚拟地址 5555h+ M. C; o+ _" |1 e0 m
Var2 虚拟地址 6666h
$ l/ B+ t7 z2 c1 jVar3 虚拟地址 7777h* m) }9 |7 W$ J4 o6 @

- L7 p% ?* C6 j I69IU{P[TF7ZENEEBUUGC5C.png
2 g+ N7 u' k+ ^' B, }  S4 K! K4 o0 e1 w0 l0 |1 y" t
完整版请查看:附件
# X# H7 z8 @3 k. q" j/ E2 m3 }' `: z, m0 O4 n
( o) V! p' R1 h/ ?8 g8 e2 I; A

$ L3 P( I& w1 X( d( Y  m$ u& p4 _# u

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 手机版