发新帖我要提问
12
返回列表
打印

EEPROM存储问题

[复制链接]
楼主: dupengshixu
手机看帖
扫描二维码
随时随地手机跟帖
21
2shift| | 2016-10-17 16:46 | 只看该作者 回帖奖励 |倒序浏览
用铁电,速度快,擦除次数基本无限制。之前拆过一个厂家的电量表,用的就是铁电。stc的内部eeprom,擦除和写入都耽误时间,有实时性要求的,别用它自带的。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
dupengshixu + 2 谢谢你提供的方案
22
dupengshixu|  楼主 | 2016-10-20 09:34 | 只看该作者
xinxi 发表于 2016-10-15 16:34
在 写入eeprom命令 之前 掉电,  你怎么搞的,  你都调电了 神仙也难写啊, 没你这样玩的啊,    你在写入命 ...

可是实际情况是:断电是不可控的啊,我就是要解决这个问题。

使用特权

评论回复
23
dupengshixu|  楼主 | 2016-10-20 09:56 | 只看该作者
ningling_21 发表于 2016-10-13 12:04
换用铁电存储器试试,速度很快

谢谢前辈,我穷啊

使用特权

评论回复
24
dupengshixu|  楼主 | 2016-10-20 09:57 | 只看该作者
ningling_21 发表于 2016-10-14 10:54
这个片内的不是真的EEPROM

原来是Flash,那也凑活用

使用特权

评论回复
25
dupengshixu|  楼主 | 2016-10-20 09:58 | 只看该作者
本帖最后由 dupengshixu 于 2016-10-20 10:04 编辑
NE5532 发表于 2016-10-15 14:18
不行,单片机的欠压检测是为了拉住程序不乱来,E2写入的时候如果这个电路动作,写入就废了。你的想方设法 ...

前辈,我昨天把程序(两种方法)写好了,自己也实验了(一会断电,一会上电),没问题。说下我的思路,您看看哪里容易出问题,我又该怎么测试呢(我怕单位环境比较好,不出问题,产品出去了问题就来了)。
方法1:用两个扇区的比较保证数据的准确性(专门针对擦除扇区之后内容变成0xff的情况)
初始化:读取E2扇区a和扇区b的内容,
            if(扇区a>=扇区b)
            数据i=扇区b内容
            else
             数据i=扇区a内容
主函数:i++;
            擦除扇区a
           写入扇区a(内容是i)
           擦除扇区b
          写入扇区b(内容是i)
          数码管显示数据i
方法2:在方法1的基础上利用芯片的低压检测电路,反应VCC的电压情况。电压低就不操作,电压比较高就操作。另外7805输出端电容也加大了(但觉得其实没用)。
初始化:读取E2扇区a和扇区b的内容,
            if(扇区a>=扇区b)
            数据i=扇区b内容
            else
             数据i=扇区a内容
主函数:i++;
            if(低压检测标志位没有置位----电压足以操作E2)
            {擦除扇区a
           写入扇区a(内容是i)}
         else
           {
              清除低压检测标志位(手册上说得手动清0)
           }
         if(低压检测标志位没有置位---电压足以操作E2)
           {擦除扇区b
          写入扇区b(内容是i)}
          else
           {
              清除低压检测标志位(手册上说得手动清0)
           }
          数码管显示数据i,前辈你也来帮我看下吧

使用特权

评论回复
26
dupengshixu|  楼主 | 2016-10-20 10:01 | 只看该作者
瞎折腾 发表于 2016-10-15 19:31
书上是严禁掉电写的,但是你硬件上应该可以修正,比如你的稳压电路,如果你是12v输入加7805的话,你可以在7 ...

手册上也有说在7805前边加低压检测电路,感觉是个方法。我在7805输出端加检测你觉得怎么样,我感觉前后都一样。

使用特权

评论回复
27
dupengshixu|  楼主 | 2016-10-20 10:02 | 只看该作者
2shift 发表于 2016-10-17 16:46
用铁电,速度快,擦除次数基本无限制。之前拆过一个厂家的电量表,用的就是铁电。stc的内部eeprom,擦除和 ...

感谢你的帮助

使用特权

评论回复
28
瞎折腾| | 2016-10-20 12:13 | 只看该作者
dupengshixu 发表于 2016-10-20 10:01
手册上也有说在7805前边加低压检测电路,感觉是个方法。我在7805输出端加检测你觉得怎么样,我感觉前后都 ...

可定不一样啊!前边加  检测,掉电以后后边低于5v需要一个过程的,你后边加的话,直接就是低于5v了!那就已经掉电了!除非你检测的非常准确,不然很快就没电了啊!比如你7805前是10v输入,你检测9v都可以!你要是12v输入,你检测10v,这样到7805后掉电还需要一个过程的!

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
dupengshixu + 3 赞一个!
29
dupengshixu|  楼主 | 2016-10-20 14:25 | 只看该作者
瞎折腾 发表于 2016-10-20 12:13
可定不一样啊!前边加  检测,掉电以后后边低于5v需要一个过程的,你后边加的话,直接就是低于5v了!那就 ...

有道理

使用特权

评论回复
30
dupengshixu|  楼主 | 2016-10-20 17:03 | 只看该作者
话说楼主遇到了一个新问题: 操作E2的时候数码管会闪(个人认为主要是擦除命令影响比较大)。在网上搜集了一些办法不知道哪种好啊:
1、低压检测法,发现电压低就赶紧存。(感觉不太靠谱啊,万一存的时候电压低到允许操作E2的电压之下的时候不就惨了?)
2、外接E2法(多件,改板,感觉实在不行才能用的办法啊)
3、用数码管扫描芯片(个人认为主要针对动态显示,楼主的项目也是动态显示;多件,改板,感觉实在不行才能用的办法啊)
4、中断法(但是有人说这个擦除E2是不会被中断的)
目前楼主正在尝试中断法,各位兄台有什么好点子吗

使用特权

评论回复
31
NE5532| | 2016-10-21 09:16 | 只看该作者
请仔细看28楼的回答,在电压跌落到E2允许操作电压之前中断操作并保护现场,做不到就上铁电。我开始还以为你是学生做着玩的,我做了12年掉电安全存储类设计了,可以给你保证,按你自己的思路设计,绝对会出大事。

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
dupengshixu + 3 很给力!
32
dupengshixu|  楼主 | 2016-10-21 15:34 | 只看该作者
2shift 发表于 2016-10-17 16:46
用铁电,速度快,擦除次数基本无限制。之前拆过一个厂家的电量表,用的就是铁电。stc的内部eeprom,擦除和 ...

谢谢你

使用特权

评论回复
33
xinxi| | 2016-10-21 16:02 | 只看该作者
dupengshixu 发表于 2016-10-20 09:34
可是实际情况是:断电是不可控的啊,我就是要解决这个问题。

唉,是断电,不是掉电,  你不写明白,我以为是你使单片机进入掉电状态

使用特权

评论回复
34
dupengshixu|  楼主 | 2016-10-21 16:58 | 只看该作者
xinxi 发表于 2016-10-21 16:02
唉,是断电,不是掉电,  你不写明白,我以为是你使单片机进入掉电状态

确实我学的不咋样,掉电断电都没搞懂。。

使用特权

评论回复
35
干掉9527| | 2016-10-21 21:45 | 只看该作者
本帖最后由 干掉9527 于 2016-10-21 21:46 编辑

首先你需要知道完成一次擦写过程最大需要多少时间,要想办法延长掉电的时间保证能够大于一次擦除时间,不然你无法保证写入数据是正确的。

使用特权

评论回复
36
dupengshixu|  楼主 | 2016-10-24 11:32 | 只看该作者
干掉9527 发表于 2016-10-21 21:45
首先你需要知道完成一次擦写过程最大需要多少时间,要想办法延长掉电的时间保证能够大于一次擦除时间,不然 ...

恩恩

使用特权

评论回复
37
huang1129| | 2016-10-24 11:46 | 只看该作者
写操作的时候掉电或者电压不稳定,没办法的。可以多区域备份,写入数据后,检测完整性。

使用特权

评论回复
38
dupengshixu|  楼主 | 2016-10-25 08:48 | 只看该作者
话说楼主掉电检测电路和程序都做好了,但是新的问题来了:电源部分我是用变压器--MB6S--7805实现的。供电端在220V、200V、190V掉电的时候能存储数据,180V有时能存储数据有时不能,电压再低就不行了。我在7805输出端已经加了两个10V2200UF的电容来延长掉电时间,不知道各位有没有延长掉电时间的方法啊?
如果实在不行我再考虑铁电,毕竟省成本啊

使用特权

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

本版积分规则