找回密码
 立即注册
查看: 72|回复: 11

求助!急 数据丢失!STC8H8K64U同型号两个封装不一样

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2026-04-01 13:09:10
已绑定手机

2

主题

17

回帖

66

积分

注册会员

积分
66
发表于 5 天前 | 显示全部楼层 |阅读模式
STC8H8K64U的LQFP64封装程序正常,

换到TSSOP20封装上,EEPROM两个数据,有一个丢失。变成0x01或者其他数,非0xff也非0x00

同一个程序。
求类似情况谁有碰到?或者排查办法?我已经头疼了几天了
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:209
  • 最近打卡:2026-04-04 14:50:05
已绑定手机

15

主题

287

回帖

1498

积分

金牌会员

DIY玩家

积分
1498
发表于 5 天前 | 显示全部楼层
规格可能有差异
得看MCU具体的型号
有可能差别在外围和内存上
真正的学徒往往怀着大师的心
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:161
  • 最近打卡:2026-04-03 15:59:19

50

主题

1375

回帖

3512

积分

超级版主

积分
3512
发表于 5 天前 | 显示全部楼层
EEPROM的使用 请 配合比较器做掉电检测 | 唯一正解,电力系统标准应用
https://www.stcaimcu.com/thread-1280-1-1.html
(出处: 国芯人工智能技术交流网站)
STC官网:https://www.stcai.com/
QQ:2593903262
微信号:18106296598
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:306
  • 最近打卡:2026-04-03 08:53:53

10

主题

96

回帖

804

积分

高级会员

积分
804
发表于 5 天前 | 显示全部楼层
封装不同了,肯定还是有点却别的,再仔细检查下吧
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:91
  • 最近打卡:2026-04-03 11:21:44
已绑定手机

4

主题

246

回帖

889

积分

高级会员

积分
889
发表于 5 天前 | 显示全部楼层
没有看到代码,所以我瞎说几句:
或许你的代码本就有BUG,有问题的才是正常的,没问题的是巧合、没有暴露出来而已。
调试方法:去掉不相关的代码,只保留相关代码,专门测试EEPROM。
如果很容易复现这个问题,那不如把工程传上来,让大家都试试。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2026-04-01 13:09:10
已绑定手机

2

主题

17

回帖

66

积分

注册会员

积分
66
发表于 5 天前 | 显示全部楼层
lcws*** 发表于 2026-3-30 15:55
没有看到代码,所以我瞎说几句:
或许你的代码本就有BUG,有问题的才是正常的,没问题的是巧合、没有暴露出 ...

工程代码模块有点多,这里不能打包上传吧?
我删除些无关的,精简了再复制黏贴上来
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2026-04-01 13:09:10
已绑定手机

2

主题

17

回帖

66

积分

注册会员

积分
66
发表于 5 天前 | 显示全部楼层
不是每次拔插电源都会变,一般第二次拔插才变数据。然后再次拔插基本不变,
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:652
  • 最近打卡:2026-04-03 16:45:15

33

主题

2928

回帖

6601

积分

论坛元老

积分
6601
发表于 5 天前 | 显示全部楼层
jul*** 发表于 2026-3-30 16:14
不是每次拔插电源都会变,一般第二次拔插才变数据。然后再次拔插基本不变, ...

是不是配置了 EEPROM区的大小?
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:49
  • 最近打卡:2026-03-30 19:11:43

40

主题

124

回帖

561

积分

高级会员

积分
561
发表于 5 天前 | 显示全部楼层
估计程序覆盖了
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2026-04-01 13:09:10
已绑定手机

2

主题

17

回帖

66

积分

注册会员

积分
66
发表于 3 天前 | 显示全部楼层
删除大部分模块后,EEPROM正常了,再把ADC模块加回工程,又出现多次断电后,保存的数据中,有一个丢失了;
ADC只是加入工程并初始化。怀疑可能ADC中断,干扰到EEPROM读写时序。

ADC初始化代码如下:
void ADC_Init()
{
        ADCTIM = 0x34;                                                //ADCTIM = CSSETUP |CSHOLD1:0 | SMPDUTY4:0;0x3f;

        ADCCFG = 0x02;                                                //ADCspeed;Fsys/2/ADCCFG
        ADCEXCFG = 0x04;                                        //0x04:ADC采样2次取平均值.0x05:ADC采样4次取平均值.0x06:ADC采样8次取平均值..0x07:ADC采样16次取平均值,
        ADC_CONTR = ADC_POWER| ADC_START ;
        Delay(1);
}

EEPROM读写程序如下:
//========================================================================
// 函数: void IapRead()
// 描述: EEPROM读取单字节
// 参数: addr: 读取地址
// 返回值:读取内容
unsigned char IapRead(int addr)
{
    unsigned char dat;

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

    return dat;
}
//========================================================================
// 函数: void IapProgram()
// 描述: EEPROM写入单字节
// 参数: addr: 写入地址
// 参数: dat: 写入内容
void IapProgram(int addr, unsigned char dat)
{
    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_();
    IapIdle();                                  //关闭IAP功能
}
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-4-4 17:44 , Processed in 0.116605 second(s), 92 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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