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

STM32F2xx 微控制器中的 EEPROM 模拟

[复制链接]
STMCU小助手 发布时间:2022-12-4 19:00
前言3 O/ z; a9 X! w* o. S
EEPROM (电可擦除可编程只读存储器)通常用于工业应用领域,用于存储可更新数据。
; p; F- ~# }% Q9 @2 X3 U! q. LEEPROM 是一种用于复杂系统 (如计算机)和其他电子设备的永久性 (非易失的)存储系统,用于在断电时存储和保留少量数据。# R- V2 w  S# C7 e# P
为了降低成本,外部 EEPROM 可以用 STM32F2xx 产品所具有的下述特性之一代替:
$ o) B9 Z( @6 s+ i* `" o● 片上 4 KB 备份 SRAM1 c7 X. f! k  l/ s
● 片上 Flash,并采用专门软件算法
" T! E) z# i0 ?9 d; TSTM32F2xx 具有 4 KB 的备份 SRAM,当主要的 VDD 电源断电时,该 SRAM 可由 VBAT 电源供电。3 L+ l- q, r7 n4 l& H3 ~: ^7 Q
当有 VBAT (通常在电池供电应用中)时该备份 SRAM 可作为内部 EEPROM (无任何额外软件)使用,并具有以 CPU 频率进行高速存取的优势。
1 }3 O3 G& G# s0 |( M; I而当备份 SRAM 另作他用且 / 或该应用不用 VBAT 供电时,片上 Flash(采用专门软件算法)可以用于模拟 EEPROM 存储器使用。
! A7 {) u% {1 @本应用笔记对通过利用 STM32F2xx 产品的片上 Flash 模拟 EEPROM 机制来代替独立EEPROM 的软件方案进行了说明。5 A  Z3 E5 o( q, C# O8 B
至少使用两个 Flash 扇区才能实现该模拟。 EEPROM 模拟代码在两个扇区 (当它们被填充时)之间交换数据,这在某种程度上是对用户透明的。/ R- v' o7 s9 u4 V# T* {
本应用笔记所提供的 EEPROM 模拟驱动器满足以下要求:- Y8 Z; t, Y; ~1 z0 a
● 轻量级实现,具有一个简单的包含了三个函数 (用于初始化、读数据和写数据)的API,并减少了封装。* V2 ^# i% g9 w0 p. C8 P
● 简单易用的可更新代码模型4 O- q; z# V- ~5 H! a* W
● 清理和内部数据管理对用户透明; b8 A! K1 m5 c5 n
● 后台扇区擦除
5 J, s* C9 ]3 y. U7 a* Q● 至少要使用两个 Flash 扇区,对于损耗均衡则需要使用更多 (Flash 扇区)5 h. `* p/ R1 F+ S" m
模拟 EEPROM 的大小是弹性可变的,它受扇区大小的限制和约束,并需考虑最大 EEPROM空间大小。3 Q' o5 A8 c. B- r7 c
$ o* h) U. P$ {
1 外部 EEPROM 和模拟 EEPROM 之间的主要区别
3 S  F4 F) O6 Q: G5 F. u9 TEEPROM 是许多嵌入式应用(需要能够进行非易失性数据存储,且运行时间内以字节或字的颗粒度进行更新)的关键元件。
/ r2 O- ~( }  U9 c6 `( u用于这些系统的微控制器通常基于嵌入式 Flash。为了减少所用元件、节省 PCB 空间、降低系统成本,可以用 STM32F2xx Flash 代替外部 EEPROM 来进行同步编码和数据存储。
8 b. T) ?3 @3 s+ m! e与 Flash 不同,数据可被重写前,外部 EEPROM 不需要擦除操作来释放空间。需要专门的软件管理来将数据存入嵌入式 Flash。5 J. M5 o! \, T1 \% i; l- T" G9 E
仿真软件方案取决于多种因素,包括 EEPROM 可靠性、所用 Flash 结构和产品需求。嵌入式 Flash 和外部串行 EEPROM 之间的主要区别对于任何使用同样 Flash 技术的微控制器(并非针对 STM32F2xx 系列产品)都是相同的。主要区别概括如表 1。+ ~8 ?: ^, i& Z+ G# s5 D
& D* {% b& S! @7 y' V
)B@9T73CD@}2R9PP2VE_NZN.png 8 A! g+ M' `, n, q5 V& U+ V# S
" F3 f, v6 A6 V
1_J2J[QT@EU1RQUH6D7V$_H.png
$ |' F! I4 r/ Y# Z( g$ e- L  Y
: s+ {4 r' u) q% v! g
2 X  l" @: I" j  k) r1.1 写访问时间的不同
0 o4 u/ i, R2 y3 V: J由于 Flash 的写访问时间更短,重要参数可以更快地存入模拟 EEPROM (比外部串行EEPROM 更快),因此能够提高数据存储能力。5 \$ y% Y' s" X4 a( c, a% O" \
3 j8 U0 e! @6 |& D; y8 t4 v
1.2 擦除时间的不同* F3 r! o; ~8 r' O1 c9 h( I: W
擦除时间的不同是独立 EEPROM 和使用嵌入式 Flash 模拟的 EEPROM 之间的另一个重要区别。与 Flash 不同,在向其写入数据前,EEPROM 不需要擦除操作来释放空间。这意味着需要某种形式的软件管理来将数据存入 Flash。此外,由于 Flash 中的块擦除过程不需要花费很多时间,因此设计 Flash 管理软件时,应当考虑断电和其他可能中断擦除过程的伪事件 (例如复位)。为了设计出稳健的 Flash 管理软件,有必要彻底了解 Flash 擦除过程。
/ K4 L  B4 ]9 A注: CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的扇区擦除或批量擦除操作不会被中断。3 Z3 J' U( c" \+ T' X. Z$ ^
- I% z$ B3 N* q, z. `! {9 B3 ?2 \
1.3 写方式的相似之处1 {: y) X) w4 E/ s. {5 A
外部 EEPROM 和采用 STM32F2xx 嵌入式 Flash 模拟的 EEPROM 之间的相同点之一是其写方式。% U( ]) d/ `  p  |" H5 ]2 s% g. f
● 独立外部 EEPROM:由 CPU 启动时,全字写操作不会被 CPU 复位而中断。只有电源故障会中断该写过程,因此适当地按大小排列去耦电容可以保护独立 EEPROM 中的完整写过程。( F; {" \5 s; z: A5 r0 k* X0 a5 I% p5 H
● 利用嵌入式 Flash 模拟的 EEPROM:由 CPU 启动时,写过程可被电源故障中断。CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的全字写操作不会被中断。 EEPROM算法停止,但是当前的 Flash 全字写操作不会被 CPU 复位中断。
, n' A# i5 v+ @8 ]8 I) t/ _& e9 E8 Z8 V' c% _3 D7 Y" H4 X4 N2 t
2 实现 EEPROM 模拟
6 }  W1 z8 Y6 `3 {8 W' G0 T2.1 原理
5 R! }& ]! a$ ]- ^考虑到 Flash 限制和产品需求,存在多种方式实现 EEPROM 模拟。下面所描述的方式需要至少两个同样大小的 Flash 扇区 (分配给非易失性数据):一个扇区首先被擦除,并提供逐字节的编程;当前扇区需要被回收时,另一个扇区准备好接收 (该扇区)。占据了每个扇区第一个半字 (16 位)的头字段标志了该扇区状态。将每个扇区作为一个存储页,在本文档下述部分中称作 Page0 和 Page1。1 ]; _( m: X9 S1 f$ @% h1 C4 g
头字段位于每页的基址,提供了该存储页的状态信息。
. W/ e+ A/ H" K" Z每页有三个可能状态:
, i8 _) ]7 _. W1 M  Q, Z! }, K8 c● ERASED:该页为空。, |$ }- R; P$ y- z* h9 x. k9 G6 v
● RECEIVE_DATA:该页正在从其他满页中接收数据。/ `( u7 A- J8 c3 `( X$ |) }+ _
● VALID_PAGE:该页容纳有效数据,直到所有有效数据传输到被擦除页,这个状态才会变化。- l+ n6 y0 |/ S- _$ m' t8 H
图 1 显示了页状态是如何变化的。
" b! f) I6 Q0 \9 t8 X; D' H! J& k; ~4 i

' {. T6 h- i4 {' d0 s A50ZR{G`}J}%Y3P1LPQV({N.png
# z  `- ?0 u4 [7 c5 k
8 @; B  R# T! u2 l1 k; M) o; w0 h$ f WKBD6UC{_XU902{L{M181.png
- q5 h0 n( h  p9 a
/ @( e2 o2 q/ B# V& o9 W# p6 t! q通常,使用这种方式时,用户不必提前知道变量更新频率。3 ]" j8 U/ N; N# J( B8 W. \' j
本文档中所描述的软件和实现使用了两个 16 KB 的 Flash 扇区 (扇区 2 和扇区 3)来模拟EEPROM。
  v: y; d; L+ I注: 选择扇区 2 和扇区 3 是由于这两个扇区相比于 STM32F2xx Flash 的其他扇区来说空间较小(STM32F2xx Flash 的主要内存块在表 3: STM32F2xx Flash 扇区中有单独描述)。根据应用和用户需要,也可以使用大的扇区。" O7 _5 B- ]$ r( @
7 Z5 H9 b# w/ `$ u, j3 i5 A% Q1 O
U1()P0FJBJ5U)55XLB{%T8T.png
# T) T; C+ V7 s# R$ o1 Q

' `1 \/ s7 B# E9 [0 {( z) g0 ?每个可变参数通过虚拟地址和要被存入 Flash 的值来定义,以便随后检索或更新 (在所实现的软件中虚拟地址和数据都是长 16 位)。当数据被修改时,关联到先前虚拟地址的修改数据会被存入新的 Flash 位置。数据检索返回最新的数据值。
& I0 e0 ^  p/ O* q  V
8 a; P8 r6 p7 ^7 f! j2 Y, L

( I9 D' U+ Q+ m4 q {}}Y3KS}734B2GL}D2B%_KL.png ( l- z' Y5 C8 Q# Z9 @8 n5 Q6 T0 L
. g6 ~7 I, i6 N3 _
2.2 用例:应用实例& _( p7 Y  \8 ~5 C# B7 B8 u
下面的例子显示了三个采用如下虚拟地址的 EEPROM 变量 (Var1、 Var2 和 Var3)的软件管理:4 |( A/ G4 v7 `5 G
Var1 虚拟地址 5555h9 w' r) b% E# j* I/ V. v
Var2 虚拟地址 6666h
) i1 J- V6 n9 FVar3 虚拟地址 7777h  |) ~7 E* i2 H$ w' X- P
: ~. E. y6 @: J
I69IU{P[TF7ZENEEBUUGC5C.png 1 h9 I! x& ^/ Z4 N) }8 Y

, l; L8 c( \% ?) R+ N完整版请查看:附件7 s. X" V/ |+ x0 u% I" f2 q
$ _6 d9 E: R6 \9 Q+ v: L

3 @% n2 x% _( u4 b

  `* I" B! c, a$ \" o9 d8 {
/ W# q$ J+ p6 S( c! l- Y

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