找回密码
 立即注册
查看: 740|回复: 10

EEPROM一个页,掉电写不全,如何解决

[复制链接]

该用户从未签到

1

主题

5

回帖

31

积分

新手上路

积分
31
发表于 2023-7-17 15:56:31 | 显示全部楼层 |阅读模式
请教个问题,STC15W4K48S4 单片机,断电存储数据到EEPROM,设置低压检测电压4.08v存储数据每次只能存二百七十左右个字节,这种有没有办法提高写入速度,实现一个页都写全?

掉电延时图

掉电延时图

电压门限设置

电压门限设置
回复 送花

使用道具 举报

该用户从未签到

1

主题

5

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2023-7-17 16:03:30 | 显示全部楼层
在掉电中断函数里调用以下写函数,

void write(void)
{
         u16 i=0;
                for(i=0;i<512;i++)
                {
                        STC_WriteByte(0x0400+i,0x81); ////20230711 test
                }
}

上电读取数据打印出来就只写入这么多
81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 81 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

点评

zhp
你确定断电一瞬间需要写这么多数据吗? 断电一瞬间时间比较短,一般是写最关键的数据。 下面的几个方案你可试试看: 1、断电瞬间,立即停掉ADC、比较器、高速PWM等耗电的外设,可让电掉得慢一点 2、目标EEPROM扇区  详情 回复 发表于 2023-7-17 18:21
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    开心
    4 天前
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    16

    主题

    719

    回帖

    2562

    积分

    超级版主

    积分
    2562
    发表于 2023-7-17 18:21:14 | 显示全部楼层
    lgc 发表于 2023-7-17 16:03
    在掉电中断函数里调用以下写函数,

    void write(void)

    你确定断电一瞬间需要写这么多数据吗?
    断电一瞬间时间比较短,一般是写最关键的数据。

    下面的几个方案你可试试看:
    1、断电瞬间,立即停掉ADC、比较器、高速PWM等耗电的外设,可让电掉得慢一点
    2、目标EEPROM扇区的擦除动作可以在断电之前先完成,断电瞬间只单纯执行EEPROM写动作
    3、IAP_TPS可适当减少一点点(比如24M系统速度可设置IAP_TPS为22试试看),可减少EEPROM的编程等待时间
        (注意: 第3点是实在没有办法时才可尝试,风险极大,等待时间不够可能无法保证数据正确写入,官方不建议
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9436

    回帖

    1万

    积分

    管理员

    积分
    14021
    发表于 2023-7-17 19:41:46 | 显示全部楼层
    用比较器做外部掉电检测
    1.png

    2.png

    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    回帖

    31

    积分

    新手上路

    积分
    31
     楼主| 发表于 2023-7-20 09:57:25 | 显示全部楼层
    zhp 发表于 2023-7-17 18:21
    你确定断电一瞬间需要写这么多数据吗?
    断电一瞬间时间比较短,一般是写最关键的数据。

    感谢回复。1.需要保存的数据有322个字节。2.EEPROM扇区的擦除动作已经在上电读取数据后便执行了,掉电只进行写操作。3.STC15W单片机貌似没有IAP_TPS寄存器呢。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    回帖

    31

    积分

    新手上路

    积分
    31
     楼主| 发表于 2023-7-20 10:11:42 | 显示全部楼层
    神农鼎 发表于 2023-7-17 19:41
    用比较器做外部掉电检测

    感谢回复。
    1.后续改版会考虑加上掉电检测电路。
    2.目前STC15W单片机低压检测电压最高设置到4.08v,这个电压还能设置提高么?我看STC15F的能到4.6v。
    3.昨天测试还发现,偶尔会出现这种情况:存储的数据中第一个字节是对的,后面十几个字节数据是错的,之后的数据又是对的了,不知道啥原因
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9436

    回帖

    1万

    积分

    管理员

    积分
    14021
    发表于 2023-7-20 12:09:40 | 显示全部楼层
    STC15W单片机貌似没有IAP_TPS寄存器呢====老产品,无这个寄存器

    用上比较器检测外部电压是唯一正解
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    回帖

    31

    积分

    新手上路

    积分
    31
     楼主| 发表于 2023-7-20 17:29:58 | 显示全部楼层
    神农鼎 发表于 2023-7-20 12:09
    STC15W单片机貌似没有IAP_TPS寄存器呢====老产品,无这个寄存器

    用上比较器检测外部电压是唯一正解

    STC15W单片机低压检测电压最4.08v,这个电压还能设置高点么?
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9436

    回帖

    1万

    积分

    管理员

    积分
    14021
    发表于 2023-7-20 18:47:57 | 显示全部楼层
    无其他选项了
    1.png

    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    回帖

    31

    积分

    新手上路

    积分
    31
     楼主| 发表于 2023-7-21 10:48:28 | 显示全部楼层

    那就目前来看,我想存储322个字节就只能通过增加外部掉电检测电路来实现了?
    或者我存储的数据减少些,咱这STC15W单片机无外部掉电检测电路,使用掉电存储,电压设到4.08v,最多存多少数据,有推荐值么?
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-15 10:24 , Processed in 0.121140 second(s), 71 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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