全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

STM32系统的应用中如何避免数据受断电影响

时间:2020-12-11 17:23

人气:

作者:admin

标签: 寄存器  嵌入式 

导读:在嵌入式设备的开发中,断电时通常需要保存一些非易失性数据。如果添加了系统配置,用户定义的信息等,并且添加了额外的ROM IC(例如基于I2C的24C02等),则额外的PCB空间将增加,硬...

嵌入式设备的开发中,断电时通常需要保存一些非易失性数据。如果添加了系统配置,用户定义的信息等,并且添加了额外的ROM IC(例如基于I2C的24C02等),则额外的PCB空间将增加,硬件成本将增加,并且产品将减少。如果仅从实用角度出发,在诸如STM32系统的应用中,作者建议可以尝试以下两种方法并作为参考。

基于备份寄存器

原理:对于大容量MCU系列,它具有42个16位备份寄存器,而中小型微处理器仅具有10个16位备份寄存器。以stm32f103c8t6为例,这42个备份寄存器的地址偏移量为:0x04〜0x28、0x40〜0xbc,可以存储84个字节的数据。备用寄存器取决于备用电源。当外部VDD掉电时,只要系统的Vbat可以正常存在,Bakeup domaain寄存器的内容就可以正常保存。

软件编程的要点如下:以一个项目中常用的案例为例

函数初始化:

读取备份寄存器:void BKP_ WriteBackupRegister(uint16_ t BKP_ DR,uint16_ t Data)

读取备份寄存器:uint16_ t BKP_ ReadBackupRegister(uint16_ t BKP_ DR)

此方法简单明了,但由于缺少可用空间,因此仅适用于保存少量数据,例如用户在可穿戴设备中的通用配置数据。

基于内部闪存

原理:闪存,也称为闪存,也是可以重写的存储器。它分为nor flash和NAND flash。闪存通常不用于代码存储场合,例如嵌入式控制器中的程序存储空间。而NAND闪存通常用于大数据存储场合,例如U盘和固态硬盘,它们通常是NAND闪存类型。

在STM32芯片中,闪存的读写单位均基于“页面”。以stm32f103c8t6为例,每页大小为2K字节;

软件编程要点

释放写保护释放:此方法基于以下前提:允许当前的读写Flash,并且允许当前的Flash进行写操作。因此,目前暂时不讨论某些API,例如optionbytes操作和flash读写保护操作。

Flashwrite:单个uint32_ T数据写入的简单流程图如下:

Flashread:对于单个int数据读取,它相对简单,可以通过以下语句完成:rddata =(*()__ IOuint32_ t *)dataAddr);

由于SW中涉及许多API,并且编码人员还需要理解许多其他背景知识,因此使用此方法相对复杂。但是,由于数据保存在页面中,因此页面大小最大为2048字节,因此该方法可用于保存掉电时不容易丢失的大数据。考虑到闪存读写保护的逻辑机制,最好在不考虑数据安全性的情况下使用此方法。

对于这种断电保护数据方法,这里只是丢砖引玉,欢迎您提出更好的方案。
编辑:hfy

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信