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

STM32F2xx 微控制器中的 EEPROM 模拟

[复制链接]
STMCU小助手 发布时间:2022-7-17 17:56
前言
1 }, E& N* f- b$ g0 ^7 sEEPROM (电可擦除可编程只读存储器)通常用于工业应用领域,用于存储可更新数据。5 U& a$ f4 v) \3 F
EEPROM 是一种用于复杂系统 (如计算机)和其他电子设备的永久性 (非易失的)存储系统,用于在断电时存储和保留少量数据。# E$ m9 h* H3 j6 x) I0 G
为了降低成本,外部 EEPROM 可以用 STM32F2xx 产品所具有的下述特性之一代替:) T2 a; E" C8 h5 D' [7 v
片上 4 KB 备份 SRAM
6 ]) u/ q" Q9 K4 I. l9 D; m3 p* m片上 Flash,并采用专门软件算法
4 v/ L* Z4 ^* g! u. R) J& S' K  uSTM32F2xx 具有 4 KB 的备份 SRAM,当主要的 VDD 电源断电时,该 SRAM 可由 VBAT 电源供电。+ e% [& n# P7 D9 u
当有 VBAT (通常在电池供电应用中)时该备份 SRAM 可作为内部 EEPROM (无任何额外软件)使用,并具有以 CPU 频率进行高速存取的优势。
4 C5 O4 F/ G9 }而当备份 SRAM 另作他用且 / 或该应用不用 VBAT 供电时,片上 Flash(采用专门软件算法)可以用于模拟 EEPROM 存储器使用。$ o) `( X7 d$ X6 i8 X% K
本应用笔记对通过利用 STM32F2xx 产品的片上 Flash 模拟 EEPROM 机制来代替独立EEPROM 的软件方案进行了说明。
3 P9 I6 s( i- \8 [至少使用两个 Flash 扇区才能实现该模拟。 EEPROM 模拟代码在两个扇区 (当它们被填充时)之间交换数据,这在某种程度上是对用户透明的。
$ e0 ?: x8 I; g2 F; a1 Y本应用笔记所提供的 EEPROM 模拟驱动器满足以下要求:
4 Q  O2 ~2 S6 B& I- T' U$ U轻量级实现,具有一个简单的包含了三个函数 (用于初始化、读数据和写数据)的API,并减少了封装。- X) A3 ?- Q8 I' S5 N1 u: e+ C
简单易用的可更新代码模型3 ]7 A. G& j1 @! Z, }8 e
清理和内部数据管理对用户透明2 V  A" |+ z( j: b
后台扇区擦除9 W. k, G" }& H- I
至少要使用两个 Flash 扇区,对于损耗均衡则需要使用更多 (Flash 扇区)模拟 EEPROM 的大小是弹性可变的,它受扇区大小的限制和约束,并需考虑最大 EEPROM空间大小。6 E/ m% Y/ S  d

9 ^6 d: y8 g) }% U' n6 v
7 T8 i5 L) E  z
1 外部 EEPROM 和模拟 EEPROM 之间的主要区别2 c8 v# h  c6 t4 j, n
EEPROM 是许多嵌入式应用(需要能够进行非易失性数据存储,且运行时间内以字节或字的颗粒度进行更新)的关键元件。
) z+ W7 [3 |- S0 T: ~( q! c用于这些系统的微控制器通常基于嵌入式 Flash。为了减少所用元件、节省 PCB 空间、降低系统成本,可以用 STM32F2xx Flash 代替外部 EEPROM 来进行同步编码和数据存储。; g: _( E# Z( [% @. R. g8 `
与 Flash 不同,数据可被重写前,外部 EEPROM 不需要擦除操作来释放空间。需要专门的软件管理来将数据存入嵌入式 Flash。: A: D, O  ~; ^
仿真软件方案取决于多种因素,包括 EEPROM 可靠性、所用 Flash 结构和产品需求。+ O% P# t! L) ]+ m7 S( b
嵌入式 Flash 和外部串行 EEPROM 之间的主要区别对于任何使用同样 Flash 技术的微控制器(并非针对 STM32F2xx 系列产品)都是相同的。主要区别概括如 1
5 k3 X2 Z2 }- U9 O
9 X5 ~2 }4 R' \3 _/ c! I# q
_NRA([Y`NOPO~@)BF]4LX}W.png & q. b! c, \0 k5 k4 b9 p& e& U! g4 Z

$ Y* T% w8 E+ h; X" W `PSWR@`)OPLHWWV@BU@%[PI.png + O  D9 M, I+ P: c) T$ u- w
! z  m/ B3 I; c5 S9 S5 ]
% C* t* u7 W8 b3 V
1.1 写访问时间的不同
- Z; V8 l& e; G$ }4 O" r7 B由于 Flash 的写访问时间更短,重要参数可以更快地存入模拟 EEPROM (比外部串行EEPROM 更快),因此能够提高数据存储能力。& x+ [+ U$ R0 b% m3 }/ L* R
6 V* K/ h: e8 V' }% d8 R
( H7 k& @( o. `5 B" X# f
1.2 擦除时间的不同
& g3 x+ S& L) O- a擦除时间的不同是独立 EEPROM 和使用嵌入式 Flash 模拟的 EEPROM 之间的另一个重要区别。与 Flash 不同,在向其写入数据前,EEPROM 不需要擦除操作来释放空间。这意味着需要某种形式的软件管理来将数据存入 Flash。此外,由于 Flash 中的块擦除过程不需要花费很多时间,因此设计 Flash 管理软件时,应当考虑断电和其他可能中断擦除过程的伪事件 (例如复位)。
8 q% `5 X' g4 U为了设计出稳健的 Flash 管理软件,有必要彻底了解 Flash 擦除过程。
1 G7 U8 f- i  T6 T; c& ~$ ]1 K注: CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的扇区擦除或批量擦除操作不会被中断。
8 ^1 {2 B) V. o* `# O% Q, n7 K7 h1 r+ M3 y' o$ ?/ Y
2 u) ~: ^+ r' t2 |& X+ r
1.3 写方式的相似之处
: E$ ]  G/ P: F6 }% O: {9 c外部 EEPROM 和采用 STM32F2xx 嵌入式 Flash 模拟的 EEPROM 之间的相同点之一是其写方式。
6 G% v1 Q  q# U% W2 R独立外部 EEPROM:由 CPU 启动时,全字写操作不会被 CPU 复位而中断。只有电源故障会中断该写过程,因此适当地按大小排列去耦电容可以保护独立 EEPROM 中的完整写过程。
2 U" U, i' N' q- p8 i, f8 M4 q$ o  \+ b; }1 D" f" ?  y! @
利用嵌入式 Flash 模拟的 EEPROM:由 CPU 启动时,写过程可被电源故障中断。CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的全字写操作不会被中断。 EEPROM算法停止,但是当前的 Flash 全字写操作不会被 CPU 复位中断。
6 @3 j" o  q. h5 N( J) m! s. ?; q+ c2 实现 EEPROM 模拟
2 v5 `0 \1 A; X0 P# _- C9 h5 H4 A2.1 原理9 t8 \3 Q& F9 h6 J% p" ~
考虑到 Flash 限制和产品需求,存在多种方式实现 EEPROM 模拟。下面所描述的方式需要至少两个同样大小的 Flash 扇区 (分配给非易失性数据):一个扇区首先被擦除,并提供逐字节的编程;当前扇区需要被回收时,另一个扇区准备好接收 (该扇区)。占据了每个扇区第一个半字 (16 位)的头字段标志了该扇区状态。将每个扇区作为一个存储页,在本文档下述部分中称作 Page0 和 Page1。! F: P" {0 V# Z$ w
头字段位于每页的基址,提供了该存储页的状态信息。  J4 T% E) v% Z; {) B6 r
每页有三个可能状态:  S" e$ U" H9 f# o* r
ERASED:该页为空。. P! M. ]2 v0 G
RECEIVE_DATA:该页正在从其他满页中接收数据。/ \" q5 L* C5 \. ?
VALID_PAGE:该页容纳有效数据,直到所有有效数据传输到被擦除页,这个状态才会变化。# e- V, j# }* o4 N
1 显示了页状态是如何变化的。! J# V' ^& Q7 j

8 V  r% u- T/ k* [% y& J

1 \9 |" g; U& L# Y5 \2 P' J UEO6BX4U``3FZ6P6{F@DLNS.png
. |1 k! g) d. A6 f4 G1 T) h# M6 ~7 q# |
YRYXRDK28DKG)}K1MS6TW@W.png
' \* b' V' j9 j9 K9 B/ x! ^+ J' b( B4 I: ~  T1 ~

& X! @) B, @8 a; y- f" H/ }通常,使用这种方式时,用户不必提前知道变量更新频率。( B* b, b, s: g, O6 v2 o: M
本文档中所描述的软件和实现使用了两个 16 KB 的 Flash 扇区 (扇区 2 和扇区 3)来模拟EEPROM。( [: Q) o' _5 d! _7 W* r: T2 W
注: 选择扇区 2 和扇区 3 是由于这两个扇区相比于 STM32F2xx Flash 的其他扇区来说空间较小STM32F2xx Flash 的主要内存块在3: STM32F2xx Flash 扇区中有单独描述)。根据应用和用户需要,也可以使用大的扇区。$ B+ L; e7 q8 |
& ~- h6 O# ?# s2 q% }
JS8}{J(HO9J[7AH2]L953FA.png # U$ m+ C8 F7 \$ u" F# I
每个可变参数通过虚拟地址和要被存入 Flash 的值来定义,以便随后检索或更新 (在所实现的软件中虚拟地址和数据都是长 16 位)。当数据被修改时,关联到先前虚拟地址的修改数据会被存入新的 Flash 位置。数据检索返回最新的数据值。# n$ ~/ G" ^0 |, J( ^/ N* z

, A' r% q% X6 o& R; D' U0 M

0 @/ o( y6 u+ M4 w& ~ BB0FS`9X8$N5KE[[VAX]7.png
8 @! @1 W4 M& a, y' D6 R/ Z0 F0 N: S& T  A, X; G9 [" |
  C& y/ `# ?% `( W; [1 u" y
完整版请查看:附件

9 {* B3 @; U- r4 A4 H' z2 v& _* x: G$ p* r

+ i3 U0 o; Z" D! u

DM00026574_ZHV2.1.pdf

下载

284.45 KB, 下载次数: 1

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

举报

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