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

STM32F2xx 微控制器中的 EEPROM 模拟

[复制链接]
STMCU小助手 发布时间:2022-7-17 17:56
前言
( x! b4 j* Q7 \: p6 `1 n! ^" o# QEEPROM (电可擦除可编程只读存储器)通常用于工业应用领域,用于存储可更新数据。7 u# C) u# y  w/ z
EEPROM 是一种用于复杂系统 (如计算机)和其他电子设备的永久性 (非易失的)存储系统,用于在断电时存储和保留少量数据。
4 g3 }3 z% M; T$ ]- m为了降低成本,外部 EEPROM 可以用 STM32F2xx 产品所具有的下述特性之一代替:4 c) k4 h. ~* r- f4 p, j) j* _
片上 4 KB 备份 SRAM , x( s% ^/ u0 t( T* y( U* l; ]
片上 Flash,并采用专门软件算法( `- @6 k! u3 n' p
STM32F2xx 具有 4 KB 的备份 SRAM,当主要的 VDD 电源断电时,该 SRAM 可由 VBAT 电源供电。& U  t% t# x1 \+ [0 J
当有 VBAT (通常在电池供电应用中)时该备份 SRAM 可作为内部 EEPROM (无任何额外软件)使用,并具有以 CPU 频率进行高速存取的优势。# }2 V% v/ q0 K
而当备份 SRAM 另作他用且 / 或该应用不用 VBAT 供电时,片上 Flash(采用专门软件算法)可以用于模拟 EEPROM 存储器使用。
4 d4 ?6 o/ a% v+ d& Y4 L" z" W本应用笔记对通过利用 STM32F2xx 产品的片上 Flash 模拟 EEPROM 机制来代替独立EEPROM 的软件方案进行了说明。7 H- d8 l3 a. n5 r' ~( f' M
至少使用两个 Flash 扇区才能实现该模拟。 EEPROM 模拟代码在两个扇区 (当它们被填充时)之间交换数据,这在某种程度上是对用户透明的。3 y* Z: _9 X" Q1 j1 `) x7 l8 k
本应用笔记所提供的 EEPROM 模拟驱动器满足以下要求:/ f- P9 R, D& j0 N( A& T3 y
轻量级实现,具有一个简单的包含了三个函数 (用于初始化、读数据和写数据)的API,并减少了封装。
- l7 S( B, {% A$ ^$ i5 d/ ]" I简单易用的可更新代码模型2 ]7 {! N& U7 \4 R$ z
清理和内部数据管理对用户透明1 e9 i3 C( s$ U% f
后台扇区擦除( U8 {1 T5 V2 V4 ~
至少要使用两个 Flash 扇区,对于损耗均衡则需要使用更多 (Flash 扇区)模拟 EEPROM 的大小是弹性可变的,它受扇区大小的限制和约束,并需考虑最大 EEPROM空间大小。
( a- ?3 ^8 H( Z( K4 }7 ^; z6 `& s
) T' @+ z4 ?: X

" a. p' r/ Y* U* `% P3 g" ~1 外部 EEPROM 和模拟 EEPROM 之间的主要区别
4 |9 s- n! R7 s+ F- ]3 v+ oEEPROM 是许多嵌入式应用(需要能够进行非易失性数据存储,且运行时间内以字节或字的颗粒度进行更新)的关键元件。" D% A6 m# U6 E6 L( Z
用于这些系统的微控制器通常基于嵌入式 Flash。为了减少所用元件、节省 PCB 空间、降低系统成本,可以用 STM32F2xx Flash 代替外部 EEPROM 来进行同步编码和数据存储。( r2 h$ r5 E' W
与 Flash 不同,数据可被重写前,外部 EEPROM 不需要擦除操作来释放空间。需要专门的软件管理来将数据存入嵌入式 Flash。
7 e) V: {* A% {% A. d( A仿真软件方案取决于多种因素,包括 EEPROM 可靠性、所用 Flash 结构和产品需求。
& }# x$ q; d% _) O1 m' Z嵌入式 Flash 和外部串行 EEPROM 之间的主要区别对于任何使用同样 Flash 技术的微控制器(并非针对 STM32F2xx 系列产品)都是相同的。主要区别概括如 10 }& j3 s6 [$ t. o

" F' @  M: q- ]  \' j' x5 O+ r _NRA([Y`NOPO~@)BF]4LX}W.png " [2 L5 p. n$ V1 a# S7 S

! x" Z, s1 W8 E/ z& F+ A `PSWR@`)OPLHWWV@BU@%[PI.png / u9 i# b. _, }/ U
; {' R& c$ l" F" ]" O

8 N: t8 \# o9 i& I. p$ u7 q9 t1.1 写访问时间的不同! x; Y! S+ N/ J0 |
由于 Flash 的写访问时间更短,重要参数可以更快地存入模拟 EEPROM (比外部串行EEPROM 更快),因此能够提高数据存储能力。- I, f& a8 }% c

  e* q) j6 F% d4 h/ j5 e0 `
( Q% l: s0 y( W4 H- e
1.2 擦除时间的不同
5 K5 G/ ~0 N" c$ M; O擦除时间的不同是独立 EEPROM 和使用嵌入式 Flash 模拟的 EEPROM 之间的另一个重要区别。与 Flash 不同,在向其写入数据前,EEPROM 不需要擦除操作来释放空间。这意味着需要某种形式的软件管理来将数据存入 Flash。此外,由于 Flash 中的块擦除过程不需要花费很多时间,因此设计 Flash 管理软件时,应当考虑断电和其他可能中断擦除过程的伪事件 (例如复位)。5 d# L0 j$ d. ?& f: e* @3 B$ I
为了设计出稳健的 Flash 管理软件,有必要彻底了解 Flash 擦除过程。+ X; }, ?5 Q6 p* A' v
注: CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的扇区擦除或批量擦除操作不会被中断。
0 L$ Z" B* z, B7 U( I# c: S
2 Q( o; Y1 @& d% X2 _
, w9 f" ]* a! n/ d
1.3 写方式的相似之处  g0 i6 T0 d& \& C/ S3 h% y+ h0 k
外部 EEPROM 和采用 STM32F2xx 嵌入式 Flash 模拟的 EEPROM 之间的相同点之一是其写方式。6 Z" ~- i; Q  {8 R9 ~% s8 O) ?
独立外部 EEPROM:由 CPU 启动时,全字写操作不会被 CPU 复位而中断。只有电源故障会中断该写过程,因此适当地按大小排列去耦电容可以保护独立 EEPROM 中的完整写过程。& ^* x6 @* L' ~/ M- H

' {1 ?4 T; h! @0 o1 {6 T, P" v利用嵌入式 Flash 模拟的 EEPROM:由 CPU 启动时,写过程可被电源故障中断。CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的全字写操作不会被中断。 EEPROM算法停止,但是当前的 Flash 全字写操作不会被 CPU 复位中断。
+ u$ k6 J; o9 F2 实现 EEPROM 模拟
8 s5 _  q4 I+ B, e. O& z2.1 原理' \8 g& y+ O* l% r  E* G" f3 a6 G
考虑到 Flash 限制和产品需求,存在多种方式实现 EEPROM 模拟。下面所描述的方式需要至少两个同样大小的 Flash 扇区 (分配给非易失性数据):一个扇区首先被擦除,并提供逐字节的编程;当前扇区需要被回收时,另一个扇区准备好接收 (该扇区)。占据了每个扇区第一个半字 (16 位)的头字段标志了该扇区状态。将每个扇区作为一个存储页,在本文档下述部分中称作 Page0 和 Page1。* h9 t3 V: R" `
头字段位于每页的基址,提供了该存储页的状态信息。, M. b/ |' Z- c, _& ?$ ~
每页有三个可能状态:5 ^+ L7 e. w" [' _8 b. {
ERASED:该页为空。
5 D. K. ]  O7 y! B& HRECEIVE_DATA:该页正在从其他满页中接收数据。2 b" B: p. _  m$ X+ ?- p
VALID_PAGE:该页容纳有效数据,直到所有有效数据传输到被擦除页,这个状态才会变化。
& w5 q" B: z. R$ S$ @1 显示了页状态是如何变化的。7 H, s. t) L$ q+ ?* u

: \# \3 p) \9 S, ?* m3 {1 T% P9 ?

( a' V3 H, h7 } UEO6BX4U``3FZ6P6{F@DLNS.png
3 N1 a7 M% ^. a( t# f! y
, r8 c4 y8 o0 C1 n) L YRYXRDK28DKG)}K1MS6TW@W.png
- B. _2 L1 s: z9 w1 P% H7 ], |, k: [3 _  u+ r
$ z% V* T) Y. l/ d: w, F
通常,使用这种方式时,用户不必提前知道变量更新频率。
; y+ w" @  K, i- t本文档中所描述的软件和实现使用了两个 16 KB 的 Flash 扇区 (扇区 2 和扇区 3)来模拟EEPROM。
3 ?* W3 i- d% |# v; B$ a注: 选择扇区 2 和扇区 3 是由于这两个扇区相比于 STM32F2xx Flash 的其他扇区来说空间较小STM32F2xx Flash 的主要内存块在3: STM32F2xx Flash 扇区中有单独描述)。根据应用和用户需要,也可以使用大的扇区。! U! {& q$ _. Q0 \! [6 c

- g6 F: s( a7 w" m: [% G" r  b* ]4 b JS8}{J(HO9J[7AH2]L953FA.png - o& o' R( ^, s- T7 d! E- T
每个可变参数通过虚拟地址和要被存入 Flash 的值来定义,以便随后检索或更新 (在所实现的软件中虚拟地址和数据都是长 16 位)。当数据被修改时,关联到先前虚拟地址的修改数据会被存入新的 Flash 位置。数据检索返回最新的数据值。
/ a0 c/ F$ D( v- L; D, c3 v. H% V3 E" u
. h* Y4 ?9 u& r, _- ?$ J8 a! l1 s6 k- V
BB0FS`9X8$N5KE[[VAX]7.png 5 F/ X$ ^; E, `& W6 z

- \/ m# R. ^, Q7 {2 f7 l  @
0 ]! Q% D: Z8 Y* w
完整版请查看:附件

- C6 ?+ I; V9 b! |$ U* t+ n6 F' Z3 f% ~- P$ E

+ @) w& p8 I/ E# v! v

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