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

STM32F2xx 微控制器中的 EEPROM 模拟

[复制链接]
STMCU小助手 发布时间:2022-7-17 17:56
前言5 k1 w  V* u* m6 B
EEPROM (电可擦除可编程只读存储器)通常用于工业应用领域,用于存储可更新数据。, C3 P7 A$ {: D
EEPROM 是一种用于复杂系统 (如计算机)和其他电子设备的永久性 (非易失的)存储系统,用于在断电时存储和保留少量数据。
  G# |8 x# K; N& O* R1 W为了降低成本,外部 EEPROM 可以用 STM32F2xx 产品所具有的下述特性之一代替:& W3 u5 J% w+ t- |, ]  U
片上 4 KB 备份 SRAM $ h+ a& Q8 J' e( d" @/ [" a$ `; I; C
片上 Flash,并采用专门软件算法
# Q! l' j; ]) h. `- JSTM32F2xx 具有 4 KB 的备份 SRAM,当主要的 VDD 电源断电时,该 SRAM 可由 VBAT 电源供电。' C1 s( T/ N8 q- L2 p: Y) o. P
当有 VBAT (通常在电池供电应用中)时该备份 SRAM 可作为内部 EEPROM (无任何额外软件)使用,并具有以 CPU 频率进行高速存取的优势。# S1 m( O  m, u( }
而当备份 SRAM 另作他用且 / 或该应用不用 VBAT 供电时,片上 Flash(采用专门软件算法)可以用于模拟 EEPROM 存储器使用。' i2 O9 V3 ]3 t. Y/ y: a- I/ a! n
本应用笔记对通过利用 STM32F2xx 产品的片上 Flash 模拟 EEPROM 机制来代替独立EEPROM 的软件方案进行了说明。/ J' j) k7 ?* e8 p& M$ E
至少使用两个 Flash 扇区才能实现该模拟。 EEPROM 模拟代码在两个扇区 (当它们被填充时)之间交换数据,这在某种程度上是对用户透明的。
7 e: k$ a* g# Y- c本应用笔记所提供的 EEPROM 模拟驱动器满足以下要求:, I) Y0 k- C  r4 ?1 Y9 L$ o
轻量级实现,具有一个简单的包含了三个函数 (用于初始化、读数据和写数据)的API,并减少了封装。
4 t3 A+ w, ?8 [' T# [# s简单易用的可更新代码模型
( y) K  l$ M9 a; f/ x8 g清理和内部数据管理对用户透明  a0 [& t3 J. P6 }5 f
后台扇区擦除
4 `4 u' h7 W$ _, u; I% u/ Y. x5 H至少要使用两个 Flash 扇区,对于损耗均衡则需要使用更多 (Flash 扇区)模拟 EEPROM 的大小是弹性可变的,它受扇区大小的限制和约束,并需考虑最大 EEPROM空间大小。, J4 \, s! m: V# c
* e* l$ O" T, N5 S/ H
- Q7 B* Q% v. `5 w! H/ w0 k0 X
1 外部 EEPROM 和模拟 EEPROM 之间的主要区别
) ?( F) J$ n1 z4 @EEPROM 是许多嵌入式应用(需要能够进行非易失性数据存储,且运行时间内以字节或字的颗粒度进行更新)的关键元件。
3 Y/ {8 S- L) Q" e9 O用于这些系统的微控制器通常基于嵌入式 Flash。为了减少所用元件、节省 PCB 空间、降低系统成本,可以用 STM32F2xx Flash 代替外部 EEPROM 来进行同步编码和数据存储。
/ a8 Q- V% I6 t( U3 c" O; f# Y% p与 Flash 不同,数据可被重写前,外部 EEPROM 不需要擦除操作来释放空间。需要专门的软件管理来将数据存入嵌入式 Flash。
& ~, i" O% h. o, A( X  ]仿真软件方案取决于多种因素,包括 EEPROM 可靠性、所用 Flash 结构和产品需求。
# Q# `: A6 Q6 G9 p# ?嵌入式 Flash 和外部串行 EEPROM 之间的主要区别对于任何使用同样 Flash 技术的微控制器(并非针对 STM32F2xx 系列产品)都是相同的。主要区别概括如 1. [# `& z$ J$ w  L5 r* ]9 Q

$ [# @. y3 n0 Y _NRA([Y`NOPO~@)BF]4LX}W.png " E* k! d& p( u& z1 Q

+ Y+ L- Y; ?7 g- F, o8 G9 y `PSWR@`)OPLHWWV@BU@%[PI.png / f6 l' |  l6 V' W2 Y* p
4 x$ y" g  g9 Q' U4 e% J

. i& H. p9 l$ g( c1.1 写访问时间的不同. p" {- J4 ?; @1 b! @0 P
由于 Flash 的写访问时间更短,重要参数可以更快地存入模拟 EEPROM (比外部串行EEPROM 更快),因此能够提高数据存储能力。
* D/ b% c+ i# h
2 A5 [& D' j7 ]" u

1 T6 Y4 k1 U0 K. S' D1.2 擦除时间的不同. c8 \3 w5 e4 j8 Q/ G
擦除时间的不同是独立 EEPROM 和使用嵌入式 Flash 模拟的 EEPROM 之间的另一个重要区别。与 Flash 不同,在向其写入数据前,EEPROM 不需要擦除操作来释放空间。这意味着需要某种形式的软件管理来将数据存入 Flash。此外,由于 Flash 中的块擦除过程不需要花费很多时间,因此设计 Flash 管理软件时,应当考虑断电和其他可能中断擦除过程的伪事件 (例如复位)。9 p( T; W( b+ Y/ D
为了设计出稳健的 Flash 管理软件,有必要彻底了解 Flash 擦除过程。
" q4 @  h. r4 a; Y注: CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的扇区擦除或批量擦除操作不会被中断。, h  `3 [& X3 T/ D
. h, ]4 n* q7 ?( P, B
& E! w8 b* U* x) k# r
1.3 写方式的相似之处
- u( A/ j, G; J% F" M5 Y( X外部 EEPROM 和采用 STM32F2xx 嵌入式 Flash 模拟的 EEPROM 之间的相同点之一是其写方式。% ^- u0 ]4 e" @
独立外部 EEPROM:由 CPU 启动时,全字写操作不会被 CPU 复位而中断。只有电源故障会中断该写过程,因此适当地按大小排列去耦电容可以保护独立 EEPROM 中的完整写过程。
" E6 b2 w' s) r/ A' H
8 p4 b3 u4 ~7 Y7 p* b+ y利用嵌入式 Flash 模拟的 EEPROM:由 CPU 启动时,写过程可被电源故障中断。CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的全字写操作不会被中断。 EEPROM算法停止,但是当前的 Flash 全字写操作不会被 CPU 复位中断。
. _) c0 ^, ~0 v; ]( M2 实现 EEPROM 模拟* `7 f2 Y5 }9 k/ Z0 U* N
2.1 原理
% C! N) ^. K: G4 R5 e考虑到 Flash 限制和产品需求,存在多种方式实现 EEPROM 模拟。下面所描述的方式需要至少两个同样大小的 Flash 扇区 (分配给非易失性数据):一个扇区首先被擦除,并提供逐字节的编程;当前扇区需要被回收时,另一个扇区准备好接收 (该扇区)。占据了每个扇区第一个半字 (16 位)的头字段标志了该扇区状态。将每个扇区作为一个存储页,在本文档下述部分中称作 Page0 和 Page1。
" S; B; P) P" ?( f4 K* h. @% l头字段位于每页的基址,提供了该存储页的状态信息。$ n& O0 S6 t# R
每页有三个可能状态:3 `' h% x* x. `' ~* b
ERASED:该页为空。* I% u2 V) V, Y/ @" K" q
RECEIVE_DATA:该页正在从其他满页中接收数据。
& h, v! y1 X; O  XVALID_PAGE:该页容纳有效数据,直到所有有效数据传输到被擦除页,这个状态才会变化。7 ?5 Q1 s: |) m; f' \( |. a
1 显示了页状态是如何变化的。# t3 T' U1 i8 \& f( _  ^

: d' \0 u. j' P0 i" p+ @
+ L% w6 J7 {7 q# \$ T  Z! C
UEO6BX4U``3FZ6P6{F@DLNS.png
) k0 w5 h" \  F; Y' x% e7 ?; d* U$ _' S) k; M
YRYXRDK28DKG)}K1MS6TW@W.png 1 e3 u& G& x$ T) s
% z# w% s+ s6 D% X9 s
% \  G5 X2 ]# K0 r" Y
通常,使用这种方式时,用户不必提前知道变量更新频率。$ K: F' E2 e+ s) A9 J' S  e
本文档中所描述的软件和实现使用了两个 16 KB 的 Flash 扇区 (扇区 2 和扇区 3)来模拟EEPROM。
: F3 o/ s4 b6 K/ e5 l* f1 x* _; R注: 选择扇区 2 和扇区 3 是由于这两个扇区相比于 STM32F2xx Flash 的其他扇区来说空间较小STM32F2xx Flash 的主要内存块在3: STM32F2xx Flash 扇区中有单独描述)。根据应用和用户需要,也可以使用大的扇区。
; r9 g# p: x5 o8 ?5 N) B! Z. O9 B- J0 l: Y: F# v6 [
JS8}{J(HO9J[7AH2]L953FA.png $ W; S( \0 d$ a" {& o( z
每个可变参数通过虚拟地址和要被存入 Flash 的值来定义,以便随后检索或更新 (在所实现的软件中虚拟地址和数据都是长 16 位)。当数据被修改时,关联到先前虚拟地址的修改数据会被存入新的 Flash 位置。数据检索返回最新的数据值。
: ?4 ]  f( f0 `  D3 ~; p% a
$ |. X; N2 K% q7 i0 r/ e

, h  U+ q9 J9 `" d7 l4 t9 I" v BB0FS`9X8$N5KE[[VAX]7.png
7 }( o5 }2 ]7 w/ P- t* T" a
- v$ M" P+ Y* T, W: k
: O) u" A- N7 a$ s
完整版请查看:附件

  M: r7 s# L( U, [. y7 E! g% g/ O- y/ U. \/ e) B
* A1 ^! ^( p& W: F

DM00026574_ZHV2.1.pdf

下载

284.45 KB, 下载次数: 1

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

举报

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