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

STM32F40x/STM32F41x 微控制器中的 EEPROM 仿真

[复制链接]
STMCU小助手 发布时间:2022-12-5 19:00
简介, ^5 k; c2 e& c- I
在工业应用中经常使用 EEPROM(电可擦除可编程只读存储器)来存储可更新的数据。EEPROM 是用在复杂系统(例如计算机)和其它电子器件中的一种永久(非易失)存储器存储系统,它可以在电源故障时存储和保留少量数据。* E  ^7 S5 g. ~
为降低成本,外部 EEPROM 可以用 STM32F40x/STM32F41x 的以下功能之一替代:
8 S2 C, A; i' F  K● 片内 4 KB 备份 SRAM
, P& T" y$ ~) M" R. \0 ^% N; p* Y● 片内 Flash,具有特定软件算法
* i" T; z# v/ A7 ^0 FSTM32F40x/STM32F41x 具有 4 KB 备份 SRAM,当主 VDD 电源断电时,可通过 VBAT 电源为该 SRAM 供电。$ o* k% q! Q; V$ \- Z
借助 CPU 频率下的高速访问(通常在用电池供电的应用中)优势,只要 VBAT 存在,此备份SRAM 就可以用作内部 EEPROM(不带任何附加软件)。, O' Z; w: C% `) m
但是,当备份 SRAM 用于其它目的并且/或者应用不使用 VBAT 电源时,片内 Flash(具有特定软件算法)可以用于仿真 EEPROM 存储器。
" g% y0 D, Q. D/ G9 B' Z5 T本应用笔记介绍了使用 STM32F40x/STM32F41x 器件的片上 Flash 通过仿真 EEPROM 机制来取代独立 EEPROM 的软件解决方案。
7 t6 B* d( O, V要实现这种仿真,至少要使用 Flash 中的两个扇区。EEPROM 仿真代码会在扇区填满后,以对用户透明的方式交换数据。
" c; l, A& ~* d- ]' w此应用笔记随附的 EEPROM 仿真驱动程序满足以下要求:
; M: X0 i5 `4 a9 v, g. P● 提供简单 API 的轻量级实现,这种 API 由初始化、读写数据和降低存储器占用量三种功能构成。
% u4 ?0 S0 i( U, h" X0 X● 简单且可轻松更新的代码模型
  ^" c6 T* U( |● 对用户透明的清除和内部数据管理
) ~; z  L# L  B● 后台扇区擦除; R2 a, M6 O% A0 z! G
● 至少使用两个 Flash 扇区,如果需要进行耗损均衡,则需要更多
' v( k; \+ }8 k7 }# O  @2 A3 F% g5 p要仿真的 EEPROM 大小可在扇区大小的限制范围内随意调整,并允许 EEPROM 使用扇区的最大空间。! i+ Z1 x7 g3 B) {! |3 k

# i, e5 v: a$ v2 ]* n1 n
* s; x! @1 g% y6 ?5 R
1 外部 EEPROM 与仿真 EEPROM 之间的主要差异
1 i  S% W  x+ pEEPROM 是许多需要非易失性数据存储的嵌入式应用的关键组件,它在运行期间以字节或字为粒度。
- Y* p, X+ S& P; e) m5 a: O这些系统中使用的微控制器通常是基于嵌入式 Flash 存储器的。为了避免使用这些组件、节约 PCB 空间并降低系统成本,可使用 STM32F41x Flash 代替外部 EEPOM,模拟代码和数据的存储。
; T7 ]- K! Y& e3 p9 p% ?& k) d但是与 Flash 不同的是,外部 EEPROM 在重写数据之前并不需要执行擦除操作来释放空间。要将数据存储到嵌入式 Flash 中,需要执行特殊的软件管理。- [3 g% }- O3 l  p+ J. b- W
这种仿真软件机制由许多因素决定,包括 EEPROM 可靠性、所使用的 Flash 的架构以及产品要求等。
# E7 x7 x' t, X7 i1 z( T对于使用相同 Flash 技术的任何微控制器(不局限于 STM32F40x/STM32F41x 系列产品),嵌入式 Flash 和外部串行 EEPROM 之间的主要差异完全一致。表 1 中汇总了这些主要差异。5 l. l7 j9 A  R; \

( U! g& B5 I: @9 E* _8 W
DSHKNH7$]2V61}D_95CE(F0.png * F# }! _! _2 \" j  F3 R$ p5 g4 r
& {3 f2 L' ^  B% W/ `. q
1.1 写访问时间上的差异5 A8 b; k( @% L7 ?& F, w
由于 Flash 的写访问时间较短,所以对于一些关键参数,在仿真 EEPROM 中的存储速度要比在外部串行 EEPROM 中更快,从而可以改善数据存储。/ o6 ]% k8 Y& f' a
1.2 擦除时间上的差异7 J7 x6 D: x0 o0 p  Z
擦除时间方面的差异是独立 EEPROM 与使用嵌入式 Flash 的仿真 EEPROM 之间的另一个重大差异。与 Flash 不同,EEPROM 在写之前不需要执行擦除操作来释放空间。这就意味着必须执行某种形式的软件管理,才能将数据存储到 Flash 中。此外,由于 Flash 中的块擦除过程需要较长时间,所以在设计 Flash 管理软件时,应注意考虑可能会中断擦除过程的电源关闭和其它一些意外事件(例如复位)。要设计强大的 Flash 内存管理软件,必须透彻了解 Flash 擦除过程。
9 r. U1 o0 D2 N! w7 j8 C) O8 E注: 即使 CPU 复位,也不会中断正在对 STM32F40x/STM32F41x 嵌入式 Flash 执行的扇区擦除或批量擦除操作。
9 @5 w% Y8 ?9 g7 M4 \3 ~8 o! r# A- a" @* D. v1 A2 v2 n8 V
1.3 写方法上的相似之处  _% Z7 {) T9 \1 j. B8 C
外部 EEPROM 与具有 STM32F40x/STM32F41x 嵌入式 Flash 的仿真 EEPROM 之间的一个相似之处是写方法。
$ t0 Q4 d" @8 _● 独立外部 EEPROM:一旦 CPU 启动后,字的写操作便不能被 CPU 复位中断。只有供电故障才会中断写过程,因此正确设置去耦电容的大小可以保护独立 EEPROM 中的整个写过程。2 K$ N2 O* ~+ G2 _4 x1 n
● 使用嵌入式 Flash 仿真的 EEPROM:由 CPU 启动后,写过程可由电源故障中断。即使CPU 复位,也不会中断正在对 STM32F40x/STM32F41x 嵌入式 Flash 执行的字写入操作。EEPROM 算法会停止,但是当前的 Flash 字写入操作不会因 CPU 复位中断。
) H& r* X8 V* V0 L( n1 }
: d6 A# i' b( r. z2 实现 EEPROM 仿真, J  U. l/ z$ f1 t9 T
2.1 原理
/ h1 S# r4 [+ Q0 ~& CEEPROM 仿真可以通过多种方式实现,但要注意 Flash 限制和产品要求。下面详述的方法要求为非易失性数据分配至少两个相同大小的 Flash 扇区:一个在开始时擦除,支持逐字编程;另一个在需要对前一扇区执行垃圾回收时接管工作。占用每扇区前半个字(16 位)的头字段指示扇区的状态。在本文档的其余部分,将每一个扇区视为一页,这些页分别称为Page0 和 Page1。
4 f( r9 @4 r9 P) e# P% p头字段位于每页的基准地址上,并提供该页的状态信息。8 w7 H5 c- k& [0 V; ?/ J
每个页都有三个可能的状态:6 b: S$ Z5 B" F% G- K
● ERASED:页为空。
( u% |; f' F* \4 X1 s! m: G● RECEIVE_DATA:页正在从另一个满页接收数据。- h, v* P+ v) u
● VALID_PAGE:页中包含有效数据,并且在将所有有效数据完全传输到已擦除页之前,此状态不会改变。
* y' Z4 E$ X. q- K1 d, H' L+ ]* Q# y) ?6 b; j, A0 o5 S

5 p; f9 L2 u% v. j5 [ J6O$@U_AI%I05LMS)UW]KY0.png
/ [9 q; [+ K% I" ]: ^) q% ^! h9 a
! ?' B( o% D8 P0 E+ ^ Y3ZW6RFY%ZY@K0F8EY[YZNT.png
& U! b( z$ R% @7 q# w) o+ M9 b8 {! B2 ?# j1 B- ~8 ~$ f
通常,使用这种方法时,用户事先并不了解变量更新频率。
% V- P; \2 z4 @4 S本文档所述的软件和实现方法使用两个大小为 16 KB 的 Flash 扇区(扇区 2 和扇区 3)来仿真 EEPROM。
/ N0 O- |0 L. ]& e' B$ I5 `" j注: 由于扇区 2 和扇区 3 的大小比 STM32F40x/STM32F41x Flash 的其它扇区小,因此我们选择这两个扇区(表 3:STM32F40x/STM32F41x Flash 扇区中介绍了 STM32F40x/STM32F41x Flash的主存储器块划分)。根据具体应用和用户需要,可以选择更大的扇区。0 b& B- _1 x; n2 [7 K! h

3 U1 d4 a" o, Q: c. v0 [+ B
G@3M7TP@LZ6CJ2O)[7Z6SOA.png 2 y9 C8 K. l6 k7 d9 z7 [

* s2 w' L( O- o3 E0 J每个变量元素都由一个虚拟地址和值来定义,它们将存储在 Flash 中,用于执行后续检索或更新(在实施的软件中,虚拟地址和数据的长度均为 16 位)。如果修改了数据,与之前虚拟地址相关联的已修改数据将会存储到新的 Flash 位置。数据检索会返回最新的数据值。
/ I+ ^% M3 y) D% T" P" T( R, }. B/ _1 P; a, L
7 j+ y' K  Z7 S* B) S5 g! P" F
@ELL`B0]N4Y~S%VYL]NLHH3.png
& k% B* U/ b3 ?. n9 R
9 Z3 A  }% |9 ]2 M0 M2.2 使用实例:应用示例
) g9 Q  L: E; k; N; J1 {以下示例显示的是对具有以下虚拟地址的三个 EEPROM 变量(Var1、Var2 和 Var3)的软件管理:
. l  i2 _8 r7 A( IVar1 的虚拟地址 5555h: |+ q/ K% A# a4 Q! j5 u5 J0 N
Var2 虚拟地址 6666h# I6 l5 j( d9 D+ s9 L
Var3 虚拟地址 7777h* d9 z2 B, V, @: r1 Z  \- p
0 Q- H) P. B$ V3 U! n
% t" ~4 x& f. m# V$ S' m3 o. S
VOOM}VD[U(B8V~0_8{}1{TA.png
2 V) f# n* ~; ?  x
1 M& E. Z& a6 o4 T9 h: u完整版请查看:附件
/ J6 J" \1 r, y+ Z! g
- Z5 j& _9 {0 H- X5 b

STM32F40微控制器中的EEPROM仿真.pdf

下载

468.04 KB, 下载次数: 1

收藏 评论0 发布时间:2022-12-5 19:00

举报

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