找回密码
 立即注册
查看: 126|回复: 6

STC8H1K08 的 EEPROM 掉电保存 的应用问题请教 |已解决

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:45
  • 最近打卡:2025-12-16 15:39:07

36

主题

287

回帖

2577

积分

超级版主

积分
2577
发表于 2025-11-12 14:53:51 | 显示全部楼层 |阅读模式
STC8H1K08-36I-TSSOP20测试   内部11.0592 MHz
EEPROM无法掉电保存   请指教
截图202511121139461339.jpg

截图202511121139285385.jpg
void IapIdle()
{
    IAP_CONTR = 0;                              //关闭IAP功能
    IAP_CMD = 0;                                //清除命令寄存器
    IAP_TRIG = 0;                               //清除触发寄存器
    IAP_ADDRH = 0x80;                           //将地址设置到非IAP区域
    IAP_ADDRL = 0;
         // EA = 1;
}



char IapRead(int addr)
{
    char dat;
     EA = 0;
    IAP_CONTR = 0x80;                           //使能IAP
    IAP_TPS = 11;                               //设置等待参数12MHz
    IAP_CMD = 1;                                //设置IAP读命令
    IAP_ADDRL = addr;                           //设置IAP低地址
    IAP_ADDRH = addr >> 8;                      //设置IAP高地址
    IAP_TRIG = 0x5a;                            //写触发命令(0x5a)
    IAP_TRIG = 0xa5;                            //写触发命令(0xa5)
    _nop_();                                    //
          _nop_();                                    //
          _nop_();                                    //
          _nop_();                                    //
    dat = IAP_DATA;                             //读IAP数据
    IapIdle();                                  //关闭IAP功能
     EA = 1;
        return dat;
}

void IapProgram(int addr, char dat)
{
           EA = 0;
    IAP_CONTR = 0x80;                           //使能IAP
    IAP_TPS = 12;                               //设置等待参数12MHz
    IAP_CMD = 2;                                //设置IAP写命令
    IAP_ADDRL = addr;                           //设置IAP低地址
    IAP_ADDRH = addr >> 8;                      //设置IAP高地址
    IAP_DATA = dat;                             //写IAP数据
    IAP_TRIG = 0x5a;                            //写触发命令(0x5a)
    IAP_TRIG = 0xa5;                            //写触发命令(0xa5)
    _nop_();                                    //
          _nop_();                                    //
          _nop_();                                    //
          _nop_();                                    //
    IapIdle();                                  //关闭IAP功能
     EA = 1;
}



void IapErase(int addr)
{
           EA = 0;
    IAP_CONTR = 0x80;                           //使能IAP
    IAP_TPS = 11;                               //设置等待参数12MHz
    IAP_CMD = 3;                                //设置IAP擦除命令
    IAP_ADDRL = addr;                           //设置IAP低地址
    IAP_ADDRH = addr >> 8;                      //设置IAP高地址
    IAP_TRIG = 0x5a;                            //写触发命令(0x5a)
    IAP_TRIG = 0xa5;                            //写触发命令(0xa5)
    _nop_();                                    //
          _nop_();                                    //
          _nop_();                                    //
          _nop_();                                    //                                   
    IapIdle();                                  //关闭IAP功能
     EA = 1;

}
/********************************************************************
结束
*********************************************************************/

void Save_LocalAddr()
{
           // unsigned char temp;
       IapErase(EE_address_Motor);
     //temp=IapRead(EE_address_Motor);
       IapProgram(EE_address_Motor,LocalAddr);
          // MotorID=IapRead(EE_address_Motor);  
        
}

void Read_LocalAddr()
{

       MotorID[0]=IapRead(EE_address_Motor);   
             if(MotorID[0]<1)
                   {
        MotorID[0]=1;
                         }
             LocalAddr=MotorID[0];

        
                //IapErase(0x0400);
                //P0 = IapRead(0x0400);                       //P0=0xff
                //IapProgram(0x0400, 0x12);
                //P1 = IapRead(0x0400);                       //P1=0x12

}

QQ:3398500488
微信号:18106296592(小刘)
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:647
  • 最近打卡:2025-12-18 07:29:35
已绑定手机

93

主题

6940

回帖

1万

积分

超级版主

积分
13026
发表于 2025-11-12 15:50:55 | 显示全部楼层
查看数据手册可知EEPROM是4K
计算器十进制输入1024*4,得4096,十六进制是0x1000
EEPROM地址不能大于等于0x1000
0xFE00是错误地址
截图202511121550535756.jpg
截图202511121552028782.jpg
截图202511121553339741.jpg
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-11-12 16:05:23
已绑定手机

0

主题

4

回帖

76

积分

等待验证会员

积分
76
发表于 2025-11-12 16:05:23 | 显示全部楼层
测试了0X00还是一样的问题
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-11-12 16:05:23
已绑定手机

0

主题

4

回帖

76

积分

等待验证会员

积分
76
发表于 2025-11-12 16:06:17 | 显示全部楼层
更换了STC8H1K17H还是一样的问题
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-12-18 08:51:37

814

主题

1万

回帖

2万

积分

管理员

积分
21316
发表于 2025-11-12 17:13:03 | 显示全部楼层
STC8H1K17, ISP 烧录时要指定,开放 用户程序区给您 IAP 修改
截图202511121712146464.jpg

截图202511121712395319.jpg
IAP 是 从0地址 开始
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-11-12 16:05:23
已绑定手机

0

主题

4

回帖

76

积分

等待验证会员

积分
76
发表于 2025-11-12 19:18:20 | 显示全部楼层
问题发现了,不是地址问题,是数据的类型定义不同导致数据传递错位引起的,看来是加班多了,细节问题没注意。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-11-12 16:05:23
已绑定手机

0

主题

4

回帖

76

积分

等待验证会员

积分
76
发表于 2025-11-12 19:29:43 | 显示全部楼层
问题已解决
截图202511121929311418.jpg
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-12-18 19:00 , Processed in 0.110506 second(s), 75 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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