打印
[STM32F1]

STM32怎么断电保存数据

[复制链接]
26427|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiashengcheng|  楼主 | 2015-12-11 20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟初学STM32,C也是初学的,中专生一个,。。。
C语言也不精,书都还没完全看懂



STM32数据断电后怎么才能保存。


就是把数据保存到EEROM区,可是STM32好像没有EEROM啊。
我就只有一两个数据难道也要外接EEROM吗?
沙发
Thor9| | 2015-12-11 21:41 | 只看该作者
写到FLASH里

使用特权

评论回复
板凳
zxzxzx123211f| | 2015-12-11 23:40 | 只看该作者
写FLASH,外部电压低时给STM一个中断,中断里面写FLASH

使用特权

评论回复
地板
lanjackg2003| | 2015-12-12 14:08 | 只看该作者
zxzxzx123211f 发表于 2015-12-11 23:40
写FLASH,外部电压低时给STM一个中断,中断里面写FLASH

我建议尽量不要这样处理,这样会容易写坏FLASH.
我觉得在平时有数据变化的时候更新一次,会好过低电压或者断电瞬间来保存数据.

使用特权

评论回复
评论
caijie001 2018-2-3 11:35 回复TA
对的 
5
921665973| | 2015-12-12 14:16 | 只看该作者
1.数据可以写到内部flash,也可以外接eeprom芯片,少量数据可以用内部flash,数据较多建议用外部eeprom,可靠。另外,如果数据要经常单个修改的话,最好还是外部eeprom,因为内部flash不能单独修改一个位置的数据,要先擦除扇区,然后再写入,不能直接覆盖
2.掉地存储,可以加掉电存储电路,比如大容量电容加在供电端,掉电时关闭所有外设,用电容剩余电量维持单片机写完数据
3.另一个方法就是用铁电存储器,寿命上百亿次,随时写数据。

使用特权

评论回复
6
zhangbin_abc| | 2015-12-13 13:55 | 只看该作者
可以外接一个EEPROM和一个掉电检测电路,当系统掉电时,产生一个中断信号,STM32检测到该中断信号后在中断服务程序中将要保存的数据写入EEPROM。在这里重点是掉电检测电路的设计,可以在电源输入端接一个大电容,当系统掉电时可以维持系统继续运行一段时间,以保证掉电中断服务程序的执行。

使用特权

评论回复
评论
caijie001 2018-2-3 11:36 回复TA
赞,,,一般在电源都会加个电容 
7
干得漂亮| | 2017-6-10 15:17 | 只看该作者
lanjackg2003 发表于 2015-12-12 14:08
我建议尽量不要这样处理,这样会容易写坏FLASH.
我觉得在平时有数据变化的时候更新一次,会好过低电压或者 ...

有些数据时时更新比如记录停电的时间 来电后再从这个时间继续执行,再比如水表电表时时刻刻都要保存数据,假如1秒存一次,那么一天就要存86400次,flash的擦写次数是10万次 这样一个产品能用几天?

使用特权

评论回复
8
lanjackg2003| | 2017-9-8 16:31 | 只看该作者
干得漂亮 发表于 2017-6-10 15:17
有些数据时时更新比如记录停电的时间 来电后再从这个时间继续执行,再比如水表电表时时刻刻都要保存数据, ...

你的这种情况最好用动态均衡的算法来做保存,还有如何控制写数据的时刻机制,那就是你自己来考虑的。
没有绝对的时候合适,看你的项目,你们有自己的需求。
然后在低电压的时候最好也不要进行写数据

使用特权

评论回复
9
sdCAD| | 2017-9-8 16:46 | 只看该作者
不是能够模拟EEPROM吗?

使用特权

评论回复
10
sdCAD| | 2017-9-8 16:48 | 只看该作者
外接EEPROM也可以。

使用特权

评论回复
11
一路向北lm| | 2017-9-8 19:41 | 只看该作者
不行的话就AT24c02

使用特权

评论回复
12
zhouyucheng| | 2018-2-3 11:02 | 只看该作者
我这也有个产品需要断电的时候保存,因为我做的是系统的一个计数器,每天计数就是3万次左右,一年就1000万次左右了,考虑到芯片的存储寿命问题,我采用的方法是,将芯片的VBAT接一个二极管和电容,正常状态下,电容通过VCC经过二极管对电容进行充电,当外部断电后,电容通过VBAT对芯片的RTC进行供电,这时候程序检测到外部断电了,就将当前计数的数据写入芯片的存储,以达到最少次数读写的目的。

使用特权

评论回复
评论
dalarang 2018-3-26 08:20 回复TA
方法是可以,但是要考虑电容的漏电流和容量,存储时间没那么长。 其实最简单的办法就是外扩一片小容量的铁电存储器。 
13
xiashengcheng|  楼主 | 2018-3-25 22:12 | 只看该作者
zhouyucheng 发表于 2018-2-3 11:02
我这也有个产品需要断电的时候保存,因为我做的是系统的一个计数器,每天计数就是3万次左右,一年就1000万 ...

我这现场有和个这样的设备用的就是这种方案,不过两年不到有些板子就断电不能保存数据 了,

使用特权

评论回复
14
CaLipton| | 2018-3-28 18:53 | 只看该作者
就是把数据保存到EEROM区,可是STM32好像没有EEROM啊

可以写到flash,也可以外加EEROM

使用特权

评论回复
15
song19881218| | 2018-3-28 19:25 | 只看该作者
你不知道stm32有后备寄存器和bkp ram么,有电池的话掉电不丢失

使用特权

评论回复
16
拉克丝| | 2018-3-30 21:12 | 只看该作者
掉电存储,可以加掉电存储电路

使用特权

评论回复
17
sxcem| | 2022-3-30 07:21 | 只看该作者
真实产品 最靠谱的是 增加一个锂电池 或者超级电容  检测到掉电 转换为电池供电   锂电池顺路设计上充电电路 现在充电芯片和18650类似电池 价格已经极低 ...

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

107

帖子

1

粉丝