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

STM32F2xx 微控制器中的 EEPROM 模拟

[复制链接]
STMCU小助手 发布时间:2022-7-17 17:56
前言
+ N8 r0 g) p. f, O8 ^1 [EEPROM (电可擦除可编程只读存储器)通常用于工业应用领域,用于存储可更新数据。' H6 R7 T5 h0 v9 u
EEPROM 是一种用于复杂系统 (如计算机)和其他电子设备的永久性 (非易失的)存储系统,用于在断电时存储和保留少量数据。
3 L# B$ B- [, h2 B  |# @为了降低成本,外部 EEPROM 可以用 STM32F2xx 产品所具有的下述特性之一代替:
6 i0 C( ?3 I$ h1 N' R( i& r$ Q# O片上 4 KB 备份 SRAM
3 V  n$ \6 ?0 ?! X" A6 Y2 s+ R' L" G片上 Flash,并采用专门软件算法. \0 D2 Q' F2 @, I8 Y) D( ]" S
STM32F2xx 具有 4 KB 的备份 SRAM,当主要的 VDD 电源断电时,该 SRAM 可由 VBAT 电源供电。4 \) q4 b* l$ o9 d5 X
当有 VBAT (通常在电池供电应用中)时该备份 SRAM 可作为内部 EEPROM (无任何额外软件)使用,并具有以 CPU 频率进行高速存取的优势。
+ `5 o5 k1 L  B2 f/ X4 q而当备份 SRAM 另作他用且 / 或该应用不用 VBAT 供电时,片上 Flash(采用专门软件算法)可以用于模拟 EEPROM 存储器使用。6 g. x4 x8 ?) @: D% h  k' Z# s7 ?* P
本应用笔记对通过利用 STM32F2xx 产品的片上 Flash 模拟 EEPROM 机制来代替独立EEPROM 的软件方案进行了说明。" t! W2 K* ^" r7 g/ S, R
至少使用两个 Flash 扇区才能实现该模拟。 EEPROM 模拟代码在两个扇区 (当它们被填充时)之间交换数据,这在某种程度上是对用户透明的。
" C; R' b* j! R2 S" k/ n1 g; n: J) @本应用笔记所提供的 EEPROM 模拟驱动器满足以下要求:
8 w1 T' z2 _! Z4 a2 b轻量级实现,具有一个简单的包含了三个函数 (用于初始化、读数据和写数据)的API,并减少了封装。
$ @$ F, l: F' ?! f4 i$ u' ~简单易用的可更新代码模型
$ ?  o; j5 Z' Q+ D/ ?6 U清理和内部数据管理对用户透明
, ?( M, ?9 T: l" D1 m; @0 O  A9 h  G3 U后台扇区擦除1 J. O+ W+ @  z3 h9 V
至少要使用两个 Flash 扇区,对于损耗均衡则需要使用更多 (Flash 扇区)模拟 EEPROM 的大小是弹性可变的,它受扇区大小的限制和约束,并需考虑最大 EEPROM空间大小。
& k: B6 I5 S' ~) G) c! b5 R/ `# `! G

; J2 R' q" O7 y3 g" Q7 ?4 c' j1 外部 EEPROM 和模拟 EEPROM 之间的主要区别9 [1 l0 |- X5 z3 [# ?- p+ v- f% O
EEPROM 是许多嵌入式应用(需要能够进行非易失性数据存储,且运行时间内以字节或字的颗粒度进行更新)的关键元件。
, u! W: O8 l# e* r用于这些系统的微控制器通常基于嵌入式 Flash。为了减少所用元件、节省 PCB 空间、降低系统成本,可以用 STM32F2xx Flash 代替外部 EEPROM 来进行同步编码和数据存储。
8 \$ I% T7 a; \% `与 Flash 不同,数据可被重写前,外部 EEPROM 不需要擦除操作来释放空间。需要专门的软件管理来将数据存入嵌入式 Flash。
( v3 G" W% l" ^, M( O; b仿真软件方案取决于多种因素,包括 EEPROM 可靠性、所用 Flash 结构和产品需求。5 X  A, K, N5 i' V& V& c4 |! a
嵌入式 Flash 和外部串行 EEPROM 之间的主要区别对于任何使用同样 Flash 技术的微控制器(并非针对 STM32F2xx 系列产品)都是相同的。主要区别概括如 1
0 \3 X' f9 ?: J: h, R

$ I& h' \% h9 l8 O- P7 X" } _NRA([Y`NOPO~@)BF]4LX}W.png
, M/ _) i% v" }: V. a1 p
% G8 h# g& c3 n" v4 `) { `PSWR@`)OPLHWWV@BU@%[PI.png ) g$ C/ V: T% {* l# p

, A5 v5 E$ N+ o4 h9 R8 a& n4 b% l! ~6 R" l
1.1 写访问时间的不同/ j. U3 `0 F# p' `6 A; r
由于 Flash 的写访问时间更短,重要参数可以更快地存入模拟 EEPROM (比外部串行EEPROM 更快),因此能够提高数据存储能力。) M+ B, W+ i  O4 Q/ b0 I: Z" }" r
& W+ r; s4 L$ P2 B4 H5 D* P

/ X! W0 ?2 u! f* ]- i1.2 擦除时间的不同
7 F% d* Q% X8 a擦除时间的不同是独立 EEPROM 和使用嵌入式 Flash 模拟的 EEPROM 之间的另一个重要区别。与 Flash 不同,在向其写入数据前,EEPROM 不需要擦除操作来释放空间。这意味着需要某种形式的软件管理来将数据存入 Flash。此外,由于 Flash 中的块擦除过程不需要花费很多时间,因此设计 Flash 管理软件时,应当考虑断电和其他可能中断擦除过程的伪事件 (例如复位)。
2 [: O$ D0 |, d) }, a为了设计出稳健的 Flash 管理软件,有必要彻底了解 Flash 擦除过程。
9 e' E& d. ?3 G' S注: CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的扇区擦除或批量擦除操作不会被中断。% Y! V" y: ~$ Q$ }& ~

6 F! Y4 l- g+ v& G9 ]: A( B! y
; b- |2 ~9 G1 `" ~& t) `
1.3 写方式的相似之处
4 Q. D7 P) N  S5 K# C外部 EEPROM 和采用 STM32F2xx 嵌入式 Flash 模拟的 EEPROM 之间的相同点之一是其写方式。# B7 Q9 w) j. d9 s) b
独立外部 EEPROM:由 CPU 启动时,全字写操作不会被 CPU 复位而中断。只有电源故障会中断该写过程,因此适当地按大小排列去耦电容可以保护独立 EEPROM 中的完整写过程。
2 t- T5 V4 B' Z- n! e' }2 c0 T; d3 ?' F" U3 z+ {7 q, R! ]
利用嵌入式 Flash 模拟的 EEPROM:由 CPU 启动时,写过程可被电源故障中断。CPU 复位过程中, STM32F2xx 嵌入式 Flash 上正在进行的全字写操作不会被中断。 EEPROM算法停止,但是当前的 Flash 全字写操作不会被 CPU 复位中断。5 E4 Q4 }1 b; b4 N( k
2 实现 EEPROM 模拟
6 r" i$ _; u' ~- ]2.1 原理$ [! P1 r4 s( p% e
考虑到 Flash 限制和产品需求,存在多种方式实现 EEPROM 模拟。下面所描述的方式需要至少两个同样大小的 Flash 扇区 (分配给非易失性数据):一个扇区首先被擦除,并提供逐字节的编程;当前扇区需要被回收时,另一个扇区准备好接收 (该扇区)。占据了每个扇区第一个半字 (16 位)的头字段标志了该扇区状态。将每个扇区作为一个存储页,在本文档下述部分中称作 Page0 和 Page1。& G7 a8 Q" {5 L$ y
头字段位于每页的基址,提供了该存储页的状态信息。
4 U- r( x2 c" P8 a- ?. `5 R* B每页有三个可能状态:3 z) c) v/ X, J  j8 j$ s
ERASED:该页为空。
1 [, s8 M( X( ^' K/ g! hRECEIVE_DATA:该页正在从其他满页中接收数据。
3 |1 _% J9 ~5 h8 L% ?) b2 kVALID_PAGE:该页容纳有效数据,直到所有有效数据传输到被擦除页,这个状态才会变化。! t9 X3 c8 L: B9 T
1 显示了页状态是如何变化的。# Q2 r: K" j; A+ S6 ^
, T# a; P" [( g7 i  n% `2 {
% ]( F% L$ ?* Y: l. a' v+ Q
UEO6BX4U``3FZ6P6{F@DLNS.png
# N7 }) D# `( e' Y
$ o( h3 m3 z0 x0 ~( S YRYXRDK28DKG)}K1MS6TW@W.png
" j& A5 L' ?2 j" U) |
# d: R7 J* O" m , k/ v3 W# q  Z" O9 e$ V, }7 `
通常,使用这种方式时,用户不必提前知道变量更新频率。
9 q3 [0 i& w/ Y, n' v3 s5 a/ c本文档中所描述的软件和实现使用了两个 16 KB 的 Flash 扇区 (扇区 2 和扇区 3)来模拟EEPROM。1 @( L9 [9 l. o, E
注: 选择扇区 2 和扇区 3 是由于这两个扇区相比于 STM32F2xx Flash 的其他扇区来说空间较小STM32F2xx Flash 的主要内存块在3: STM32F2xx Flash 扇区中有单独描述)。根据应用和用户需要,也可以使用大的扇区。! S) N$ K9 J( }6 @3 t* e0 `

2 \$ r1 s  ?4 a7 \9 b. K9 P% F2 f JS8}{J(HO9J[7AH2]L953FA.png ! l5 P1 l, I. \( [
每个可变参数通过虚拟地址和要被存入 Flash 的值来定义,以便随后检索或更新 (在所实现的软件中虚拟地址和数据都是长 16 位)。当数据被修改时,关联到先前虚拟地址的修改数据会被存入新的 Flash 位置。数据检索返回最新的数据值。
9 n: G# D- P) e; [% F3 L% j/ {) s' a" V- i7 _9 z# l
2 @# k5 t4 Z6 \5 Q* `0 j3 H+ Y7 s# `
BB0FS`9X8$N5KE[[VAX]7.png
" [" N- S, v( U/ g
/ \0 g: G: a; v' N
# r) f1 }( ?( r; X! n
完整版请查看:附件
2 H$ ?( d/ Y0 `( N8 }) `
- j& ^) f0 a. [
! d* o7 v% }; z1 v) E

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