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

STM32F0xx 微控制器中的EEPROM 仿真

[复制链接]
STMCU小助手 发布时间:2022-12-4 18:00
简介) O6 B, w1 c9 t
在工业应用中经常使用 EEPROM(电可擦除可编程只读存储器)来存储可更新的数据。, m- X  r4 {# L2 E# @" r
EEPROM 是用在复杂系统(例如计算机)和其它电子器件中的一种永久(非易失)存储器存储系统,它可以在电源故障时存储和保留少量数据。
. G3 ^# _  b% w* e" X' ~  j/ l/ j为了降低成本,可以使用特定的软件算法用片上 Flash 替代外部 EEPROM。
+ B+ ^7 y: j! f# Q6 w此应用笔记将介绍使用 STM32F0xx 器件的片上 Flash 通过仿真 EEPROM 机制来取代独立EEPROM 的软件解决方案。
) z, L' ?8 Y, E7 E8 m2 e此仿真至少要使用 Flash 中的两个扇区。EEPROM 仿真代码会在页面填满后在页面之间交换数据,而且此过程对用户是透明的。
* |/ a+ n' }3 R, o: P! }9 y此应用笔记随附的 EEPROM 仿真驱动程序满足以下要求:; \$ C9 b* L' }, H. M' P; f
● 提供简单 API 的轻量级实现,这种 API 由初始化、读写数据和降低存储器占用量三种功能构成。, U; Y  Q& b( Y2 ?- t
● 简单且可轻松更新的代码模型。$ H$ i8 u, O4 d/ C( e6 j/ [
● 对用户透明的清除和内部数据管理。
% k7 S9 @+ h; Z( y$ X/ L● 后台页擦除。
/ x4 |7 L5 t5 y8 @3 e● 至少需要使用两个 Flash 页,如果需要进行耗损均衡,则需要更多。# o( d% B8 n4 |: A4 g

4 O3 E: Q2 F7 f8 Q2 y1 r
2 r9 o" P2 ^3 G1 b# ], i, C! |) z1 k
1 外部 EEPROM 与仿真 EEPROM 之间的主要差异8 }$ X* G* w9 V3 A0 \1 i  j
EEPROM 是许多需要非易失性数据存储的嵌入式应用的关键组件,它在运行期间以字节或字为粒度进行更新。
4 m) \' m: w7 [这些系统中使用的微控制器通常是基于嵌入式 Flash 存储器的。为了避免使用这些组件、节约 PCB 空间并降低系统成本,可使用 STM32F0xx Flash 代替外部 EEPOM,模拟代码和数据的存储。, H1 {+ ^/ z- Z& @' B1 B- c
但是与 Flash 不同的是,外部 EEPROM 在重写数据之前并不需要执行擦除操作来释放空间。要将数据存储到嵌入式 Flash 中,需要执行特殊的软件管理。, Y7 w1 z2 G+ a1 _5 b" d5 ^
这种仿真软件机制由许多因素决定,包括 EEPROM 可靠性、所使用的 Flash 的架构以及产品要求等。' k3 l0 N9 l( K& W
对于使用相同 Flash 技术的任何微控制器(不局限于 STM32F0xx 系列产品),嵌入式 Flash和外部串行 EEPROM 之间的主要差异完全一致。表 1 中汇总了这些主要差异。5 M/ l) t' b) n1 _) @
0 R5 f; F; z+ H' x
RHHD5[ESWG$J_DS6E~LX733.png
# D9 y9 y' Q. q  `+ o& x

% L* B& d; a  b7 P! N" X4 n1.1 写访问时间上的差异$ n8 [# {) |5 `) E* A
由于 Flash 的写访问时间较短,所以对于一些关键参数,在仿真 EEPROM 中的存储速度要比在外部串行 EEPROM 中更快,从而可以改善数据存储。* @  w" L' q2 k" ~9 Y2 q  v* W
1.2 擦除时间上的差异
8 u! P9 {; z; Y5 I; t/ Z* Z- ]擦除时间方面的差异是独立 EEPROM 与使用嵌入式 Flash 的仿真 EEPROM 之间的另一个重大差异。与 Flash 不同,EEPROM 在写之前不需要执行擦除操作来释放空间。这就意味着必须执行某种形式的软件管理,才能将数据存储到 Flash 中。此外,由于 Flash 中的块擦除过程不需要太长时间,所以在设计 Flash 管理软件时,应注意考虑可能会中断擦除过程的电源关闭和其它一些意外事件(例如复位)。要设计强大的 Flash 内存管理软件,必须透彻了解 Flash 擦除过程。6 w7 @% M9 `: ~' z: t1 U
注: 即使软件重置,也不会中断正在对 STM32F0xx 嵌入式 Flash 执行的页擦除或批量擦除操作。8 I1 y+ a  _/ q4 X, H  ?2 ^

: v7 `/ X0 r. D0 Z; V0 p
1.3 写方法上的相似之处$ q4 }  D/ \: ?6 P4 G8 z
外部 EEPROM 与具有 STM32F0xx 嵌入式 Flash 的仿真 EEPROM 之间的一个相似之处是写方法。
+ y# J5 p2 E; m0 ]7 @& D● 独立外部 EEPROM:在被 CPU 启动之后,字写入不能被软件复位中断。只有供电故障才会中断写过程,因此正确设置去耦电容的大小可以保护独立 EEPROM 中的整个写过程。
  U; t0 D$ C  ^8 `● 使用嵌入式 Flash 仿真的 EEPROM:由 CPU 启动后,写过程可由电源故障中断。即使软件复位,也不会中断正在对 STM32F0xx 嵌入式 Flash 执行的字写入操作。EEPROM算法会停止,但是当前的 Flash 字写入操作不会因软件复位而中断。$ S2 D: ?- ?+ n9 X" k, s

8 m0 F6 V( ~6 Q; H7 m$ B8 ?. I2 实现 EEPROM 仿真5 [- @4 M- g, r) S4 H4 H9 e, ?
2.1 原理
3 [4 A7 K; i+ i$ ~$ x& QEEPROM 仿真可以通过多种方式实现,但要注意 Flash 限制和产品要求。下面所详述的方法要求为非易失性数据分配至少两个相同大小的 Flash 页:一个在开始时擦除,另一个在需要对前一页执行垃圾回收时接管工作。占用每页前半个字(16 位)的头字段指示页的状态。  h* a" P0 P6 o: @
在本文档的其余部分,这些页分别被称为 Page0 和 Page1。4 b9 y, A, b3 [: j
每个页都有三个可能的状态:1 I' Z  p! F. W! ?# X( |% O
● ERASED:页为空。) J/ E% n" J5 T' q, F% \
● RECEIVE_DATA:页正在从另一个满页接收数据。
" I0 q: F* h8 ^( k3 Z● VALID_PAGE:页中包含有效数据,并且在将所有有效数据完全传输到已擦除页之前,此状态不会改变。
7 b, u8 h4 S! R# t图 1 显示页的状态如何改变。
# s1 z: u" n! @: p1 A
2 F7 l, O% U3 Q7 a" v

; _1 ?  E) ~8 K GB@$`]AO1TH0)C2@OJ1VBHY.png 2 T& ]9 o& G2 [" N: C7 x2 P  h2 f. d% S* T
; ~. z0 Y" e# W* |$ C( I
每个变量元素都由一个虚拟地址和值来定义,它们将被存储在 Flash 中,用于执行后续检索或更新(在实施的软件中,虚拟地址和数据的长度均为 16 位)。如果修改了数据,与之前虚拟地址相关联的已修改数据将会存储到新的 Flash 位置。数据检索会返回最新的数据值。# `& @  Q/ l3 b1 k8 i
; X# f; ?# @" t0 i9 n" R
Q~Z(4H~`YQ$TDI~W09LE{[0.png 2 v2 R, q, t$ f

8 Z* P, C; r6 Y* Z; t完整版请查看:附件
% S) j: L5 u( Q6 n  e: U% x5 O# a8 f! D5 g+ V- S4 f

$ H* Z8 J7 D( N4 f: n1 h/ I3 J$ E/ n: @
收藏 评论0 发布时间:2022-12-4 18:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版