找回密码
 立即注册
查看: 284|回复: 3

屠龙刀3,EEPROM读写的问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-04-12 11:10:59

2

主题

8

回帖

98

积分

注册会员

积分
98
发表于 2024-4-6 14:41:13 | 显示全部楼层 |阅读模式
unsigned long t1;
  unsigned long t2;
unsigned long i;
  unsigned long i2;
复制stc32G手册内容
void IapIdle()
{
        IAP_CONTR = 0;
        IAP_CMD = 0;
        IAP_TRIG = 0;
        IAP_ADDRE = 0x00;
        IAP_ADDRH = 0x00;
        IAP_ADDRL = 0x00;
}

char IapRead(unsigned long addr)
{
        char datt;
        
        IAP_CONTR = 0x80;
        IAP_TPS = 24;
        IAP_CMD = 1;
        IAP_ADDRL = addr;
        IAP_ADDRH = addr>>8;
        IAP_ADDRE = addr>>16;
        IAP_TRIG = 0x5a;
        IAP_TRIG = 0xa5;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        datt = IAP_DATA;
        IapIdle();
        
        return datt;
}

void IapProgram(unsigned long addr,char datt)
{
        IAP_CONTR = 0x80;
        IAP_TPS = 24;
        IAP_CMD = 2;
        IAP_ADDRL = addr;
        IAP_ADDRE = addr>>16;
        IAP_ADDRH = addr>>8;
        IAP_DATA = datt;
        IAP_TRIG = 0x5a;
        IAP_TRIG = 0xa5;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        datt = IAP_DATA;
        IapIdle();        
}

void IapErase(unsigned long addr)
{
        IAP_CONTR = 0x80;
        IAP_TPS = 24;
        IAP_CMD = 3;
        IAP_ADDRL = addr;
        IAP_ADDRE = addr>>16;
        IAP_ADDRH = addr>>8;
        IAP_TRIG = 0x5a;
        IAP_TRIG = 0xa5;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        IapIdle();        
}

void main(void)
{
        
  i = 1;
  i2 = 2;

IapErase(0x8000);
IapProgram(0x8000,i);
t1 = IapRead(0x8000);
        
IapErase(0x9000);
IapProgram(0x9000,i2);
t2 = IapRead(0x9000);
}
先写进EEPROM然后读出是对的。
void main(void)
{
t1 = IapRead(0x8000);
t2 = IapRead(0x9000);
}
然后改成这样再读  t1,t2都是 0,是不是没写进去?
请问是什么原因呢?
我是自学新手,论坛的其它例子还不会转换。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-04-12 11:10:59

2

主题

8

回帖

98

积分

注册会员

积分
98
发表于 2024-4-6 15:19:43 | 显示全部楼层
会不会这地址不是EEPROM的地址? 没断电读出是正确的,断电再读就是 0 了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:452
  • 最近打卡:2025-05-01 06:20:50
已绑定手机

13

主题

1257

回帖

2971

积分

金牌会员

积分
2971
发表于 2024-4-6 16:46:16 | 显示全部楼层
第二次的main是后来又重新下载了一次吧?STC-ISP下载hex到MCU时默认时清除EEPROM缓冲区的,第二次下载时取消清除EEPROM缓冲区就可以读出了。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-04-12 11:10:59

2

主题

8

回帖

98

积分

注册会员

积分
98
发表于 2024-4-6 17:02:38 | 显示全部楼层
我试验了 STC-ISP设置用户EEPROM大小为8K以上就正常了。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:34 , Processed in 0.126772 second(s), 66 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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