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

STM32F2xx 微控制器中的 EEPROM 模拟

[复制链接]
STMCU小助手 发布时间:2022-12-4 19:00
前言9 L  `$ d7 _8 p& W: D
EEPROM (电可擦除可编程只读存储器)通常用于工业应用领域,用于存储可更新数据。
- d, c+ ^. d$ t, E1 I8 [# h6 _& |5 oEEPROM 是一种用于复杂系统 (如计算机)和其他电子设备的永久性 (非易失的)存储系统,用于在断电时存储和保留少量数据。
0 ~1 e/ `& v6 x* e% h为了降低成本,外部 EEPROM 可以用 STM32F2xx 产品所具有的下述特性之一代替:
$ p( x* E( c0 h6 v8 _● 片上 4 KB 备份 SRAM
6 [' r' f% N. d3 Y5 j% |● 片上 Flash,并采用专门软件算法
+ C1 i% u, G* y  `6 VSTM32F2xx 具有 4 KB 的备份 SRAM,当主要的 VDD 电源断电时,该 SRAM 可由 VBAT 电源供电。
/ h; V9 Z+ J  u; h当有 VBAT (通常在电池供电应用中)时该备份 SRAM 可作为内部 EEPROM (无任何额外软件)使用,并具有以 CPU 频率进行高速存取的优势。  Z5 e& k) C: {. }4 P
而当备份 SRAM 另作他用且 / 或该应用不用 VBAT 供电时,片上 Flash(采用专门软件算法)可以用于模拟 EEPROM 存储器使用。
0 ~/ e  l/ n0 n8 v: s; P本应用笔记对通过利用 STM32F2xx 产品的片上 Flash 模拟 EEPROM 机制来代替独立EEPROM 的软件方案进行了说明。, P' \0 }0 @5 [; S
至少使用两个 Flash 扇区才能实现该模拟。 EEPROM 模拟代码在两个扇区 (当它们被填充时)之间交换数据,这在某种程度上是对用户透明的。
' M' T0 D; Z! k2 T本应用笔记所提供的 EEPROM 模拟驱动器满足以下要求:  O" @5 m" Q& p' `+ W* G8 `: l6 P
● 轻量级实现,具有一个简单的包含了三个函数 (用于初始化、读数据和写数据)的API,并减少了封装。0 R  J, r* i5 J1 j9 r
● 简单易用的可更新代码模型
% w* X. z4 j! X6 L) G9 D& W● 清理和内部数据管理对用户透明
& ^. f  [  V& e: U2 d● 后台扇区擦除- q: Z6 a  F) w! {4 R; D0 L
● 至少要使用两个 Flash 扇区,对于损耗均衡则需要使用更多 (Flash 扇区)" r6 c% T. j/ \: u% F( J
模拟 EEPROM 的大小是弹性可变的,它受扇区大小的限制和约束,并需考虑最大 EEPROM空间大小。
; n! ?- a4 M. W- E- s2 D
* p  d8 E+ i. J0 D, z1 a9 |1 外部 EEPROM 和模拟 EEPROM 之间的主要区别( Y% I/ F0 t( o
EEPROM 是许多嵌入式应用(需要能够进行非易失性数据存储,且运行时间内以字节或字的颗粒度进行更新)的关键元件。# v' h9 y2 M0 U
用于这些系统的微控制器通常基于嵌入式 Flash。为了减少所用元件、节省 PCB 空间、降低系统成本,可以用 STM32F2xx Flash 代替外部 EEPROM 来进行同步编码和数据存储。
8 J/ Y* J; x6 T与 Flash 不同,数据可被重写前,外部 EEPROM 不需要擦除操作来释放空间。需要专门的软件管理来将数据存入嵌入式 Flash。0 H4 f1 m9 G; a& T  E8 D
仿真软件方案取决于多种因素,包括 EEPROM 可靠性、所用 Flash 结构和产品需求。嵌入式 Flash 和外部串行 EEPROM 之间的主要区别对于任何使用同样 Flash 技术的微控制器(并非针对 STM32F2xx 系列产品)都是相同的。主要区别概括如表 1。
# b, m) [: T* t0 ], ~+ r6 G4 ?
/ D8 m  C( t! f2 ~# N0 R1 E) f. i: \ )B@9T73CD@}2R9PP2VE_NZN.png
5 q  B0 [' M3 V' c, q5 s" {4 d% o# _$ _9 J1 g
1_J2J[QT@EU1RQUH6D7V$_H.png 3 b+ l4 ^" N# ~  y% f3 n" h7 o
" u- z) |% y0 i8 ?  @. u
4 G$ N" `8 r( N. v+ s& `
1.1 写访问时间的不同/ s$ s! U0 W5 A3 ?- ?0 N- {! M
由于 Flash 的写访问时间更短,重要参数可以更快地存入模拟 EEPROM (比外部串行EEPROM 更快),因此能够提高数据存储能力。  d, Q+ \/ a1 O( D. F, k

' O/ H( \# F- `; q9 h
1.2 擦除时间的不同
+ Y4 ]" J$ K/ @' o  ^  ~擦除时间的不同是独立 EEPROM 和使用嵌入式 Flash 模拟的 EEPROM 之间的另一个重要区别。与 Flash 不同,在向其写入数据前,EEPROM 不需要擦除操作来释放空间。这意味着需要某种形式的软件管理来将数据存入 Flash。此外,由于 Flash 中的块擦除过程不需要花费很多时间,因此设计 Flash 管理软件时,应当考虑断电和其他可能中断擦除过程的伪事件 (例如复位)。为了设计出稳健的 Flash 管理软件,有必要彻底了解 Flash 擦除过程。; Y4 D. }  d* K" ~$ H- r8 h; K9 k
注: CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的扇区擦除或批量擦除操作不会被中断。
9 s: L. z% l$ V0 b0 t8 ?6 `0 P8 Q5 r4 \5 I; B1 Y& D' d9 Y, ?; Q. ~# ]# v
1.3 写方式的相似之处: X! |  m; F2 Q5 }/ p0 S
外部 EEPROM 和采用 STM32F2xx 嵌入式 Flash 模拟的 EEPROM 之间的相同点之一是其写方式。7 B; E3 S4 T$ v/ W$ L3 o* u
● 独立外部 EEPROM:由 CPU 启动时,全字写操作不会被 CPU 复位而中断。只有电源故障会中断该写过程,因此适当地按大小排列去耦电容可以保护独立 EEPROM 中的完整写过程。
1 J$ q5 f, @3 Z7 W- A& s● 利用嵌入式 Flash 模拟的 EEPROM:由 CPU 启动时,写过程可被电源故障中断。CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的全字写操作不会被中断。 EEPROM算法停止,但是当前的 Flash 全字写操作不会被 CPU 复位中断。: }# y/ n& N& l3 P( e( y/ F

- E1 f, w8 }) P+ I, x2 实现 EEPROM 模拟5 z! \% N& w5 P- ]/ R
2.1 原理! s; g2 K* _/ J, ^9 b
考虑到 Flash 限制和产品需求,存在多种方式实现 EEPROM 模拟。下面所描述的方式需要至少两个同样大小的 Flash 扇区 (分配给非易失性数据):一个扇区首先被擦除,并提供逐字节的编程;当前扇区需要被回收时,另一个扇区准备好接收 (该扇区)。占据了每个扇区第一个半字 (16 位)的头字段标志了该扇区状态。将每个扇区作为一个存储页,在本文档下述部分中称作 Page0 和 Page1。4 n- `- @0 g5 {2 X) J
头字段位于每页的基址,提供了该存储页的状态信息。% U( @" A& z1 }/ j/ s
每页有三个可能状态:
: K1 k8 d, F3 E( w( J$ ]$ N* d● ERASED:该页为空。7 G+ [4 J' Y2 N% ~; a
● RECEIVE_DATA:该页正在从其他满页中接收数据。' N5 v, |7 k3 q, n& W0 \, _) ]' h, h' _
● VALID_PAGE:该页容纳有效数据,直到所有有效数据传输到被擦除页,这个状态才会变化。% F: [, }/ \6 A6 ?7 l  z7 T$ j1 G
图 1 显示了页状态是如何变化的。, t; b2 x& e4 u

$ F, d$ @+ S! V3 r2 L9 ?7 L7 X

0 U( h! w7 d6 B" O A50ZR{G`}J}%Y3P1LPQV({N.png
% d& ~( m8 B7 I& q5 \
8 x! j# x5 B3 A3 O, \" J% h WKBD6UC{_XU902{L{M181.png
( X; [# D7 B/ P1 G/ o. ^. E: ?- `! ~8 c* Q  L- F5 k5 B
通常,使用这种方式时,用户不必提前知道变量更新频率。
/ U) m" V: S. j+ v6 i# c本文档中所描述的软件和实现使用了两个 16 KB 的 Flash 扇区 (扇区 2 和扇区 3)来模拟EEPROM。
. X5 ~: ]7 ?; O4 ~0 d, t注: 选择扇区 2 和扇区 3 是由于这两个扇区相比于 STM32F2xx Flash 的其他扇区来说空间较小(STM32F2xx Flash 的主要内存块在表 3: STM32F2xx Flash 扇区中有单独描述)。根据应用和用户需要,也可以使用大的扇区。
2 G; L' J8 A$ ?) g' d# P* I
2 g+ F' T: Z- Z  v1 O9 h% [
U1()P0FJBJ5U)55XLB{%T8T.png $ d7 ~) A. h' r+ U( o. l

4 `7 f1 M6 P* z- f- Z每个可变参数通过虚拟地址和要被存入 Flash 的值来定义,以便随后检索或更新 (在所实现的软件中虚拟地址和数据都是长 16 位)。当数据被修改时,关联到先前虚拟地址的修改数据会被存入新的 Flash 位置。数据检索返回最新的数据值。
3 q2 X6 z5 m/ S/ U
& u2 o& [$ P* y4 \6 T
" Q9 L2 v" Y# a3 X% U4 [8 e! p
{}}Y3KS}734B2GL}D2B%_KL.png
# `  S; F) W( A1 d* t
% ]) P7 [2 B! o2.2 用例:应用实例- {) u- x, |9 `; E6 f% @
下面的例子显示了三个采用如下虚拟地址的 EEPROM 变量 (Var1、 Var2 和 Var3)的软件管理:
7 R6 F' {* A9 iVar1 虚拟地址 5555h) l7 ]4 g8 V/ Y* Q( U
Var2 虚拟地址 6666h5 E1 t0 p" B, |1 e# y4 O# \( m
Var3 虚拟地址 7777h$ D4 j: M5 O& F, z- m
3 ~0 I2 c  n. W/ b7 `
I69IU{P[TF7ZENEEBUUGC5C.png
3 [- f) [6 n; d+ H2 O. R$ y6 d+ m; G% y1 i0 e
完整版请查看:附件
8 Z# l: l% f2 J. i( U& _( J9 [
" T3 i5 p! V' ?) _% v6 T9 g  [9 T8 j0 u5 m5 z7 L2 x

+ D7 G- g, K9 s* e0 d. m
: C- a1 O  [2 A/ [- q

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