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

STM32F2xx 微控制器中的 EEPROM 模拟

[复制链接]
STMCU小助手 发布时间:2022-7-17 17:56
前言' \0 {/ q7 s/ t  O+ n, u
EEPROM (电可擦除可编程只读存储器)通常用于工业应用领域,用于存储可更新数据。
, V) b; W0 R: f# s# C4 `8 i9 bEEPROM 是一种用于复杂系统 (如计算机)和其他电子设备的永久性 (非易失的)存储系统,用于在断电时存储和保留少量数据。3 z- L' T# e0 n, e0 B3 |9 T
为了降低成本,外部 EEPROM 可以用 STM32F2xx 产品所具有的下述特性之一代替:
) I' M( w3 O! J# M2 g% A片上 4 KB 备份 SRAM 5 R% R+ {6 l7 y1 {
片上 Flash,并采用专门软件算法+ T9 T& C  p7 T1 I
STM32F2xx 具有 4 KB 的备份 SRAM,当主要的 VDD 电源断电时,该 SRAM 可由 VBAT 电源供电。2 m. R2 [& g6 T
当有 VBAT (通常在电池供电应用中)时该备份 SRAM 可作为内部 EEPROM (无任何额外软件)使用,并具有以 CPU 频率进行高速存取的优势。
* o9 q9 v- M; b% V) v* c而当备份 SRAM 另作他用且 / 或该应用不用 VBAT 供电时,片上 Flash(采用专门软件算法)可以用于模拟 EEPROM 存储器使用。
, U  E+ E; o3 ~- W5 l' j5 F本应用笔记对通过利用 STM32F2xx 产品的片上 Flash 模拟 EEPROM 机制来代替独立EEPROM 的软件方案进行了说明。& o6 n" g# y3 `; j) ?
至少使用两个 Flash 扇区才能实现该模拟。 EEPROM 模拟代码在两个扇区 (当它们被填充时)之间交换数据,这在某种程度上是对用户透明的。& _9 F0 L1 s: K$ l& u! a% b
本应用笔记所提供的 EEPROM 模拟驱动器满足以下要求:
# v* e+ u. b6 l( X$ I0 ~轻量级实现,具有一个简单的包含了三个函数 (用于初始化、读数据和写数据)的API,并减少了封装。
: ^1 f* u. c5 V5 a- V  D简单易用的可更新代码模型
  M, r7 L( Q" N/ n# y1 B- X0 P# v/ w清理和内部数据管理对用户透明
) n& H6 U, Z4 V; c4 }, N  S后台扇区擦除
# o' x' m7 W# v! x至少要使用两个 Flash 扇区,对于损耗均衡则需要使用更多 (Flash 扇区)模拟 EEPROM 的大小是弹性可变的,它受扇区大小的限制和约束,并需考虑最大 EEPROM空间大小。
1 {. T: L: `. H, ]/ r
% n! @" b5 C  j. M
' _' E7 I; S, M5 @+ ?4 @
1 外部 EEPROM 和模拟 EEPROM 之间的主要区别* l! a/ _2 P, ?# H& J$ f6 u
EEPROM 是许多嵌入式应用(需要能够进行非易失性数据存储,且运行时间内以字节或字的颗粒度进行更新)的关键元件。
: b! T" |* y0 N/ t- J用于这些系统的微控制器通常基于嵌入式 Flash。为了减少所用元件、节省 PCB 空间、降低系统成本,可以用 STM32F2xx Flash 代替外部 EEPROM 来进行同步编码和数据存储。
- g- o8 g9 R# s$ y与 Flash 不同,数据可被重写前,外部 EEPROM 不需要擦除操作来释放空间。需要专门的软件管理来将数据存入嵌入式 Flash。
" j( u! l* J7 L# E9 \7 d: {! @仿真软件方案取决于多种因素,包括 EEPROM 可靠性、所用 Flash 结构和产品需求。
3 Y+ \$ Q" c9 D  a: L6 t' N嵌入式 Flash 和外部串行 EEPROM 之间的主要区别对于任何使用同样 Flash 技术的微控制器(并非针对 STM32F2xx 系列产品)都是相同的。主要区别概括如 1
  P- [3 y* o. }1 P

" Z7 A; J) I7 A _NRA([Y`NOPO~@)BF]4LX}W.png 0 Q: Y. A; g) e: o, H  ]
4 |( y8 A6 H3 E$ z; Q2 i: d  g
`PSWR@`)OPLHWWV@BU@%[PI.png ' {# O$ S7 F4 z& c

9 Y# J% [& z$ m1 B+ W
; M# K. d1 o4 W+ A& @1.1 写访问时间的不同
6 R& a) z5 R5 K( P' Y8 T: s由于 Flash 的写访问时间更短,重要参数可以更快地存入模拟 EEPROM (比外部串行EEPROM 更快),因此能够提高数据存储能力。
6 ?! U* e+ w. W$ N& n. ?% a6 Z) ]" ~4 k" f/ Y, b% @0 Y

4 |# p& r; {- ~+ ^6 {; ^1 F1.2 擦除时间的不同
9 m0 U4 F3 t1 z2 p擦除时间的不同是独立 EEPROM 和使用嵌入式 Flash 模拟的 EEPROM 之间的另一个重要区别。与 Flash 不同,在向其写入数据前,EEPROM 不需要擦除操作来释放空间。这意味着需要某种形式的软件管理来将数据存入 Flash。此外,由于 Flash 中的块擦除过程不需要花费很多时间,因此设计 Flash 管理软件时,应当考虑断电和其他可能中断擦除过程的伪事件 (例如复位)。" C' L: W1 j; x* D1 Q' n
为了设计出稳健的 Flash 管理软件,有必要彻底了解 Flash 擦除过程。
: a7 A3 r) K( R0 z9 N注: CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的扇区擦除或批量擦除操作不会被中断。6 I- O9 u8 T% q% N1 Q6 w3 ?
  |7 H0 b7 D/ N- E, \) f% M( @9 I2 C
/ k1 B* `4 |( B1 H' P0 ]) T0 e3 R
1.3 写方式的相似之处4 h# m: k; Q! O: _( H
外部 EEPROM 和采用 STM32F2xx 嵌入式 Flash 模拟的 EEPROM 之间的相同点之一是其写方式。7 ^* h$ O) u) |
独立外部 EEPROM:由 CPU 启动时,全字写操作不会被 CPU 复位而中断。只有电源故障会中断该写过程,因此适当地按大小排列去耦电容可以保护独立 EEPROM 中的完整写过程。
& ?* j3 R9 l$ J9 [& N/ `) [4 }! @) t# z* W0 @- {
利用嵌入式 Flash 模拟的 EEPROM:由 CPU 启动时,写过程可被电源故障中断。CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的全字写操作不会被中断。 EEPROM算法停止,但是当前的 Flash 全字写操作不会被 CPU 复位中断。% P3 x6 f/ I7 o, `8 z- k6 l8 l) D
2 实现 EEPROM 模拟
& E! ~; C" K5 y0 c2.1 原理" @7 K; N% p# H# ^$ F$ z7 ~
考虑到 Flash 限制和产品需求,存在多种方式实现 EEPROM 模拟。下面所描述的方式需要至少两个同样大小的 Flash 扇区 (分配给非易失性数据):一个扇区首先被擦除,并提供逐字节的编程;当前扇区需要被回收时,另一个扇区准备好接收 (该扇区)。占据了每个扇区第一个半字 (16 位)的头字段标志了该扇区状态。将每个扇区作为一个存储页,在本文档下述部分中称作 Page0 和 Page1。
/ ]3 ]) m* D8 u! C( l- {" P. D8 ]头字段位于每页的基址,提供了该存储页的状态信息。0 P: R4 t3 l' l4 x; x
每页有三个可能状态:2 I9 S5 b  f/ s1 E0 J
ERASED:该页为空。8 h/ n1 ~2 A  d" a0 E8 ^3 ]* O8 J) J
RECEIVE_DATA:该页正在从其他满页中接收数据。
4 y9 T- l- b% Z/ G& I1 j. Z, tVALID_PAGE:该页容纳有效数据,直到所有有效数据传输到被擦除页,这个状态才会变化。% R* v7 I/ @; i9 q' I7 `. ~8 ?' Z
1 显示了页状态是如何变化的。7 |! ~0 t1 ?/ s6 K$ G

( g& Z: E( @5 o7 X; ^2 ~/ F

9 s- k2 B* s4 y' z- w UEO6BX4U``3FZ6P6{F@DLNS.png , A( t1 _" m  z# P3 d

; x) [# b$ z, _0 M& }6 {, j YRYXRDK28DKG)}K1MS6TW@W.png
2 v4 @- \- o! f1 E1 J
/ G) f: Z' d1 F ' h1 g3 Q% M; x. S% I
通常,使用这种方式时,用户不必提前知道变量更新频率。
8 O" d. {0 X2 `0 p" ?$ i6 w1 W  C本文档中所描述的软件和实现使用了两个 16 KB 的 Flash 扇区 (扇区 2 和扇区 3)来模拟EEPROM。
7 i( {6 S- R, k  ~注: 选择扇区 2 和扇区 3 是由于这两个扇区相比于 STM32F2xx Flash 的其他扇区来说空间较小STM32F2xx Flash 的主要内存块在3: STM32F2xx Flash 扇区中有单独描述)。根据应用和用户需要,也可以使用大的扇区。
' O0 g: C. L) X8 h' f4 Z6 {+ x- [; u1 {# O$ D8 ~4 V. v9 ]
JS8}{J(HO9J[7AH2]L953FA.png 6 c$ T7 z" h. r/ v
每个可变参数通过虚拟地址和要被存入 Flash 的值来定义,以便随后检索或更新 (在所实现的软件中虚拟地址和数据都是长 16 位)。当数据被修改时,关联到先前虚拟地址的修改数据会被存入新的 Flash 位置。数据检索返回最新的数据值。
: u( Q+ n% J7 w% I3 ?5 s3 x+ z5 t& d+ j
& v& y- ~4 v, v. X0 d2 p5 u) h- q
BB0FS`9X8$N5KE[[VAX]7.png
8 u9 e2 u4 J6 b# [+ Q) H
( b' d% N3 C+ e) \, y
0 ?, k  V0 K8 R# _7 x- ?8 e! K( y
完整版请查看:附件
# Y5 h8 O! h' }( O! N0 n

7 P- w1 @/ O- z: @+ S  ~* `
$ M4 U" `: x% e. R7 g  f

DM00026574_ZHV2.1.pdf

下载

284.45 KB, 下载次数: 1

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

举报

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