找回密码
 立即注册
楼主: feiyu

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

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:120
  • 最近打卡:2025-10-09 08:31:43

8

主题

140

回帖

856

积分

高级会员

积分
856
发表于 2025-1-26 08:15:47 | 显示全部楼层
vb2*** 发表于 2025-1-24 11:23
不好意思
我以为是代码连接
你可以拍照用照片转文字转一下

这是个好办法
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:516
  • 最近打卡:2025-10-16 00:05:49
已绑定手机

154

主题

1889

回帖

2621

积分

金牌会员

积分
2621
发表于 2025-1-26 11:45:26 | 显示全部楼层

你也在弄 按字节写入,均衡磨损eeprom吗
有研究出代码吗?
我也在弄, 遍历后老是出错
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:245
  • 最近打卡:2025-10-15 08:03:16
已绑定手机

1

主题

38

回帖

1027

积分

金牌会员

积分
1027
发表于 2025-2-28 16:58:24 | 显示全部楼层
测试方法不对。手册上说了每个BIT的1->0算写入,0->1算擦除。所以你先写一次1,第二次写2,你以为你写了两次,实际上Bit0和Bit1都只有一次变化,其他的数字也是以此类推。你要测就得全写0,才是正确的寿命
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-10-15 08:03:07

1

主题

7

回帖

40

积分

新手上路

积分
40
发表于 2025-9-12 14:30:19 | 显示全部楼层
充放一次电,才算一次写入。纯粹加1写入,除非一直写在同一地址才行,而且只有最低位达到了最大执行次数。
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:120
  • 最近打卡:2025-10-09 08:31:43

8

主题

140

回帖

856

积分

高级会员

积分
856
发表于 2025-10-8 15:35:35 | 显示全部楼层
vb2*** 发表于 2025-1-26 11:45
你也在弄 按字节写入,均衡磨损eeprom吗
有研究出代码吗?
我也在弄, 遍历后老是出错

我的想法是根据实际设置够大的EERPOM存储数据,每次存储数据都逐渐加在末尾,直到所有的页写满,擦除后再写,这样动态的改变,本来一个地址要写几十次,分开就只写一次,重复多个地址就可以了,避免写坏一个地址,还充分利用存储区。每次一个新的数据,序号增加1。
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:120
  • 最近打卡:2025-10-09 08:31:43

8

主题

140

回帖

856

积分

高级会员

积分
856
发表于 2025-10-8 15:41:21 | 显示全部楼层
图片代码看着很好,不能直接用,识别出来贴一下:

staticvolatileunsignedintSum_Ms=0;
staticvolatileunsigned char Sum_Flag=0;
void Sum_Reset(void)
    Sum_Ms=0;
    Sum_Flag=0;
//1ms定时器中断里面运行
    测试就直接Sum_Ms>=1让eeprom直存数了
void Sum_Timer_Process(void)
    Sum_Ms++;
    if(Sum_Ms>=
    1
    Sum_Ms=0;
    Sum_Flag=1;
void APp_Sum_Process(unsignedint *p_timer_delay_ms)
    if(1==Sum_Flag)
    Sum_Flag=0;
    Measured_Sum_Value +=1;
    Mdata_Write_Long(APp_Section,MEM_SUM_VAL,Measured_Sum_Value);
    if(Measured_Sum_Value 1=Mdata_Read_Long(APP_Section,MEM_SUM_VAL,0,99999999,θ))
    Measured_Sum_Value-=1;
    ERR_State=1;//报错
    //APP_Section=2;MEM_SUM_VAL=0;


void Mdata_Write_Long(unsigned char section,unsigned int addr,signed long dat)
    unsignedinti;
    for(i=0;i<EEPROM_BUF_LENGTH;i++)EEPROM_BUF[i]=EEPROM_Read(seCtion,i);
    EEPROM_BUF[addr]=dat>>16;
    EEPROM_BUF[addr+1]=dat&0Xe00OFFFFL;
    IapErase(512UL*section);//擦除第N片区
    for(i=O;i<EEPROM_BUF_LENGTH;i++)EEPROM_Write(SeCtion,i,EEPROM_BUF[i]);
signed long Mdata_Read_Long(unsigned char section,unsigned int addr,signed long min,signed long max,signed long def)
    signed longdat;
    dat=EEPROM_Read(section,addr);
    dat<<=16;
    dat|=(EEPROM_Read(section,addr+1)&eXOO0OFFFFL);
    if(dat>max1|dat<min)dat=def;
    return dat;


signed int EEPROM_Read(unsigned int section,unsigned intaddr)
    signed int dat;
    addr=section*512+addr*2;
    dat=IapRead(addr);
    dat<<=8;
    dat=dat|(IapRead(addr+1)&ex00FF);
    returndat;
void EEPROM_Write(unsigned int section,unsigned int addr,signed int dat)
    IapProgram(section *512+addr*2,(unsigned char)(dat>>8));
    IapProgram(section*512+addr*2+1,(unsignedchar)(dat&oxeoFF));


unsigned char EEPRoM_Test(unsigned char section)
    unsigned int i;
    unsigned char dat;
    IapErase(512UL*section);//除第N片区
    for(i=0;i<512;i++)
    dat=IapRead(512UL*section+i);
    if(θxFFI=dat)return 1;
    for(i=0;i<512;i++
    IapProgram(512UL*section+i,0x00);
    for(i=0;i<512;i++)
    dat=IapRead(512UL*section+i);
    if(exeeI=dat)return 1;
    return0;
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:516
  • 最近打卡:2025-10-16 00:05:49
已绑定手机

154

主题

1889

回帖

2621

积分

金牌会员

积分
2621
发表于 2025-10-8 17:26:16 | 显示全部楼层
Mat*** 发表于 2025-10-8 15:35
我的想法是根据实际设置够大的EERPOM存储数据,每次存储数据都逐渐加在末尾,直到所有的页写满,擦除后再 ...

我的已经弄好了. 挺好用的, 每次按照自己实际需要的来写,写完自己定的目标就擦除,然后从头开始写
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:120
  • 最近打卡:2025-10-09 08:31:43

8

主题

140

回帖

856

积分

高级会员

积分
856
发表于 7 天前 | 显示全部楼层
vb2*** 发表于 2025-10-8 17:26
我的已经弄好了. 挺好用的, 每次按照自己实际需要的来写,写完自己定的目标就擦除,然后从头开始写 ...

昨天刚完成读写操作,今天有待进一步测试,再完善功能。
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-10-16 03:44 , Processed in 0.116244 second(s), 94 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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