OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6123|回复: 14

PVD BKP问题!

[复制链接]

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
发表于 2015-3-28 12:59:15 | 显示全部楼层 |阅读模式
5金钱
我现在想要设计的功能在掉电瞬间,能将实时数据保存进我的W25Q16,但是我在PVD中断中,时间太短了,还来不及保存数据到W25Q16,我刚刚亲测过,如果在供电状态下,先擦除一个扇区,在PVD中断中能够写进去,但是如果在PVD中断之前没有擦除这个扇区,而是在PVD中断中擦除这个扇区,数据则写不进去,读出来的是65535,说明PVD中断中擦除了,但是来不及写。我想问下有没有好的办法之类的。
我的想法现在有两个:
1.如何增加一个大电容,及时断电了,还能供电一段很短暂的时间
2.进入PVD中断,将数据保存到BKP->DR,然后下次上电后程序先读取BKP->DR
这里有个疑问:我如何判断是非正常断电和正常断电,非正常我保存在BKP->DR,正常我需要保存在W25Q16,有没有好的想法

最佳答案

查看完整内容[请看2#楼]

我也是分两个区,分别用两个扇区做数据区和备份区(历史记录区),用最末尾两个字节记录当前该扇区状态: ff ff:初始化 ff a5:正在使用 5a a5:已过期 上电时对已过期扇区初始化,然后等待掉电事件发生就记录到已过期扇区,同时更新标志为正使用,对当前使用区置掉电和过期标志。 如果数据量小,完全可以存入BKP,开一个中断检测电源下降沿,出现触发就保存数据。W25Q**也是要耗电的
电子人生!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

133

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2014-12-21
在线时间
1 小时
发表于 2015-3-28 12:59:16 | 显示全部楼层
我也是分两个区,分别用两个扇区做数据区和备份区(历史记录区),用最末尾两个字节记录当前该扇区状态:
ff ff:初始化
ff a5:正在使用
5a a5:已过期
上电时对已过期扇区初始化,然后等待掉电事件发生就记录到已过期扇区,同时更新标志为正使用,对当前使用区置掉电和过期标志。

如果数据量小,完全可以存入BKP,开一个中断检测电源下降沿,出现触发就保存数据。W25Q**也是要耗电的
流过汗水才能代表自己真的学会了如何不流汗。
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-3-28 13:17:25 | 显示全部楼层
还有个疑问,我这个BKP备份寄存器不是很熟,在网上看了一些博客,只知道它是用来保存的,但是我该在什么时机用什么手段将其BKP->DR  数据复位,然后什么时候该写进去,,等等的  
侵入检测中断能情况BKP->DR,但是什么时候清空什么时候写,不好把握
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-3-28 13:35:48 | 显示全部楼层
朋友告诉我  说在这价格二极管,然后在3V3跟地之间加个大容量的法拉电容

电子人生!
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13131
金钱
13131
注册时间
2012-11-26
在线时间
3814 小时
发表于 2015-3-28 13:39:52 | 显示全部楼层
可以这样干。。。
学无止境
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-28 23:06:33 | 显示全部楼层
回复【3楼】翱翔云端的鸟:
---------------------------------
这个是可以的.
不过你必须尽早处理,那么就要知道何时断电,且要立即处理.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-3-29 10:25:23 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
我加了个2200uf的电解电容,测试过了,在PVD中擦除扇区+写数据 还是不利索
但是如果之前先擦除这块区域,然后在PVD中写数据,能写很多,昨天试了80*16个数据是没问题的
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-3-29 10:29:58 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
我想到个好的方法,不用这个不熟悉的BKP了,将W25Q16分为存储区 和备份区
备份区用来保存PVD中断实时数据,存储区保存固定可调参数并按时保存一次

存储区:存储设定参数和换班时间的班产数据(每换班一次保存一次)
备份区:存储实时的班产数据及各类实时数据(每掉电一次保存一次)

上电--->存储区非实时数据(运行需要的)读出--->备份区实时数据读出--->擦除备份区
掉电--->VD中断--->写实时数据到备份区

这样我每次上电能先读出数据 然后去擦除这块备份区了,然后PVD写的时候也能写进去了,加个法拉电容就OK了,是不是很好的方法
而且每次上电数据都能对接,就不会造成数据泄露了
电子人生!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-29 23:05:24 | 显示全部楼层
回复【7楼】翱翔云端的鸟:
---------------------------------
你的数据量不大是吧?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-3-30 22:54:38 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
嗯!实时的数据大概50个左右,其他的是通过RTC定时保存或者输入保存的,那些不是实时的,都是历史数据或者可调参数
BKP感觉没领悟到深层次,看了下手册。
电子人生!
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-3-31 13:45:15 | 显示全部楼层
回复【10楼】花戒:
---------------------------------
嗯!好办法,跟我思想一样,加个标志更加严谨!我买了个0.22F的法拉电容,应该可以了e
电子人生!
回复

使用道具 举报

48

主题

537

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1369
金钱
1369
注册时间
2014-2-13
在线时间
169 小时
发表于 2015-3-31 14:43:52 | 显示全部楼层
掉电放BKP后备寄存器,上电读取转存FLASH,比直接存FLASH安全可靠。因为BKP后备寄存器工作电压低,读写速度快。
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-4-2 14:43:55 | 显示全部楼层
回复【12楼】solo:
---------------------------------
对的,中间好像有部分数据是奇数地址的写进去 偶数地址的没写进去,头跟尾  不论奇偶都写进去了,找了半天找不到原因,
还发现个问题,同样的代码用在W25Q32和W25Q64上(现在用的是W25Q16),PVD写写不进去了,不知道是为什么,上电写是正常的!
电子人生!
回复

使用道具 举报

48

主题

537

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
1369
金钱
1369
注册时间
2014-2-13
在线时间
169 小时
发表于 2015-4-2 16:04:51 | 显示全部楼层
回复【13楼】翱翔云端的鸟:
---------------------------------
W25Q64工作电压2.7~3.6V,PVD能监测的阀值最高的三个档是2.7/2.8/2.9v,单片机工作电压是2V,不建议在PVD中断里操作FLASH。
回复

使用道具 举报

29

主题

486

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3083
金钱
3083
注册时间
2014-7-19
在线时间
413 小时
 楼主| 发表于 2015-4-3 08:36:11 | 显示全部楼层
回复【14楼】solo:
---------------------------------
Q32跟Q64PVD中断中写不进去,不知道为什么,16却可以!BKP只有40个数据,太小了,满足不了
我的PVD阀值设置的是2.9V,一个数据都没进去
电子人生!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-24 03:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表