找回密码
 立即注册
楼主: fe***

STC32G的DataFlash/EEPROM连续写入900W次了怎么还没挂,太辛苦了

[复制链接]
  • TA的每日心情
    奋斗
    8 小时前
  • 签到天数: 98 天

    [LV.6]常住居民II

    19

    主题

    47

    回帖

    565

    积分

    高级会员

    积分
    565
    发表于 2024-3-6 19:39:09 | 显示全部楼层
    代码
    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    8 小时前
  • 签到天数: 98 天

    [LV.6]常住居民II

    19

    主题

    47

    回帖

    565

    积分

    高级会员

    积分
    565
    发表于 2024-3-6 19:39:57 | 显示全部楼层
                            { //IAP擦除/烧写标记字节
                                    EA = 0; // !!!!!!!!!!关闭总中断
                                    IapRead(512,Iap512Rd1,XRam512); //IAP读:512字节长度,EEPROM字节首地址,XRAM字节首地址
                                    u16Acc = 0; //循环发送计数
                                    u8Temp = 0; //正确擦除计数
    L_WrFlage:
                                    u16Acc++;
                                    u16Temp = IcFlg - Iap512Rd0; //折算在1K EEPROM中的地址0000~0400
                                    XRam512[0] = 0x00; IapWrite(1,u16Temp,XRam512); //IAP写0x00
                                    if(u16Acc == 100){ RomIndex = IcFlg; SBUF = *RomIndex; TI = 0; while(TI == 0){;} TI = 0; } //清除已发送标志
                                    XRam512[0] = 0xFF; IapWrite(1,u16Temp,XRam512); //IAP写0xFF
                                    if(u16Acc == 200){ u16Acc = 0; RomIndex = IcFlg; SBUF = *RomIndex; TI = 0; while(TI == 0){;} TI = 0; } //清除已发送标志
                                    if(RI){ RI = 0; goto L_RegAck; } //有接收退出标记,转注册数据应答
                                    RomIndex = IcFlg;
                                    if(0xFF == *RomIndex){ u8Temp = 0; goto L_WrFlage; } //继续烧写擦除循环
                                    //if(0x00 != *IcFlg){ u8Temp = 0; goto L_WrFlage; } //复位计数,继续烧写擦除循环
                                    u8Temp++;
                                    if(u8Temp < 500){ goto L_WrFlage; } //擦除不成功计数500次
                                    // ***** 标记结束 *****
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    11 小时前
  • 签到天数: 162 天

    [LV.7]常住居民III

    18

    主题

    535

    回帖

    1344

    积分

    金牌会员

    积分
    1344
    发表于 2024-3-6 19:42:15 | 显示全部楼层
    激流 发表于 2024-3-6 19:33
    在STC8G1K17上做过类似测试(主频24MHz,读写周期约1mS),同一地址擦除后读出判断为0Xff否,写入0x00后读 ...

    约8小时能擦写坏部分位?你这8小时约擦写的次数是多少?很感兴趣,想问一下!!
    不停地学习
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    8 小时前
  • 签到天数: 98 天

    [LV.6]常住居民II

    19

    主题

    47

    回帖

    565

    积分

    高级会员

    积分
    565
    发表于 2024-3-6 19:47:08 | 显示全部楼层
    每秒1000次*60秒*60分钟*8小时=28800000次
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    10 小时前
  • 签到天数: 120 天

    [LV.7]常住居民III

    10

    主题

    599

    回帖

    1000

    积分

    金牌会员

    积分
    1000
    发表于 2024-3-6 21:13:14 | 显示全部楼层
    激流 发表于 2024-3-6 19:47
    每秒1000次*60秒*60分钟*8小时=28800000次

    读写速度都是us级,但擦除一个扇区约5ms,每秒大概能擦除、写、读200次左右。
    一小时200*60*60=72万次
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    10 小时前
  • 签到天数: 120 天

    [LV.7]常住居民III

    10

    主题

    599

    回帖

    1000

    积分

    金牌会员

    积分
    1000
    发表于 2024-3-6 21:30:49 | 显示全部楼层
    另外,因为是FLASH模拟的EEPROM,写操作只能将1改写为0,而擦除是将0或1“改写”为1。所以极限测试就是循环:
    1、擦除一个扇区;2、该扇区512字节全部写入0;3、读该扇区判断每个字节是否都为0。
    擦除一个扇区5ms左右,一个扇区512字节写入也需要大概5ms左右,读取一个扇区512字节并判断是否为0.xms。综合下来一个循环10ms左右,每秒100次,每小时36万次。

    这个测试方案大家觉得是不是更合理?
    回复 支持 1 反对 0 送花

    使用道具 举报

  • TA的每日心情
    开心
    7 天前
  • 签到天数: 46 天

    [LV.5]常住居民I

    4

    主题

    45

    回帖

    318

    积分

    中级会员

    积分
    318
     楼主| 发表于 2024-3-6 21:51:32 | 显示全部楼层
    21cnsound 发表于 2024-3-6 21:30
    另外,因为是FLASH模拟的EEPROM,写操作只能将1改写为0,而擦除是将0或1“改写”为1。所以极限测试就是循环 ...

    今天写了个测试的就是整个扇区512字节写入,我代码挂帖子上了
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    10 小时前
  • 签到天数: 120 天

    [LV.7]常住居民III

    10

    主题

    599

    回帖

    1000

    积分

    金牌会员

    积分
    1000
    发表于 2024-3-6 21:52:55 | 显示全部楼层
    feiyu 发表于 2024-3-6 21:51
    今天写了个测试的就是整个扇区512字节写入,我代码挂帖子上了

    严格测试要全写入0,再读出来判断是否为0
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 165 天

    [LV.7]常住居民III

    34

    主题

    325

    回帖

    703

    积分

    高级会员

    积分
    703
    发表于 2024-3-6 23:47:47 | 显示全部楼层
    激流 发表于 2024-3-6 19:47
    每秒1000次*60秒*60分钟*8小时=28800000次

    擦除一个扇区需要几毫秒
    纸上得到终觉浅,绝知此事要躬行。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 165 天

    [LV.7]常住居民III

    34

    主题

    325

    回帖

    703

    积分

    高级会员

    积分
    703
    发表于 2024-3-6 23:50:45 | 显示全部楼层
    21cnsound 发表于 2024-3-6 21:30
    另外,因为是FLASH模拟的EEPROM,写操作只能将1改写为0,而擦除是将0或1“改写”为1。所以极限测试就是循环 ...

    读一个字节是20US,所以读512个是20MS
    纸上得到终觉浅,绝知此事要躬行。
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-29 19:28 , Processed in 0.068684 second(s), 65 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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