找回密码
 立即注册
查看: 123|回复: 2

EEPROM stc8H8k64U写入问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2026-05-23 08:15:54

3

主题

2

回帖

85

积分

注册会员

积分
85
发表于 2026-5-23 08:15:54 | 显示全部楼层 |阅读模式
请问我在44M或以上时,其中中断也关了,在大量写入区块数据时写不全,读取时只有前一部分正常随机的,频率低点时都很正常,
我参考的是官方的例程,请问还有什么要注意的问题,谢谢
例子如下



#define ENABLE_IAP 0x80           //if SYSCLK<30MHz   用了


u8 IapReadByte(u16 addr)
{
    u8 dat;                       //数据缓冲区
                          
    IAP_CONTR = ENABLE_IAP;         //使能IAP
    IAP_TPS=44;                //设置等待参数44MHz
    IAP_CMD = CMD_READ;             //设置IAP命令
    IAP_ADDRL = addr;               //设置IAP低地址
    IAP_ADDRH = addr >> 8;          //设置IAP高地址
    IAP_TRIG = 0x5a;                //写触发命令(0x5a)
    IAP_TRIG = 0xa5;                //写触发命令(0xa5)
   
    _nop_();                        //等待ISP/IAP/EEPROM操作完成
    dat = IAP_DATA;                 //读ISP/IAP/EEPROM数据
    IapIdle();                      //关闭IAP功能

    return dat;                     //返回
}



void IapProgramByte(u16 addr, u8 dat)
{
    IAP_CONTR = ENABLE_IAP;         //使能IAP
    IAP_TPS=44;                //设置等待参数48MHz
    IAP_CMD = CMD_PROGRAM;          //设置IAP命令
    IAP_ADDRL = addr;               //设置IAP低地址
    IAP_ADDRH = addr >> 8;          //设置IAP高地址
    IAP_DATA = dat;                 //写ISP/IAP/EEPROM数据
    IAP_TRIG = 0x5a;                //写触发命令(0x5a)
    IAP_TRIG = 0xa5;                //写触发命令(0xa5)
    _nop_();                        //等待ISP/IAP/EEPROM操作完成
    _nop_();
   while (IAP_CONTR & 0x01);  // 等待IAP操作完成
    IapIdle();
}



。。。。

EA =0;
                                IE2 &= ~0x20;        //暂停定时器3中断
                                IE2 &= ~0x40;
                                IapEraseSector(IAP_ADDRESS+0x200);
                                IapProgramByte(IAP_ADDRESS+0x200, Gateway_IP[0]);                
                                IapProgramByte(IAP_ADDRESS+0x201, Gateway_IP[1]);                       
                                IapProgramByte(IAP_ADDRESS+0x202, Gateway_IP[2]);               
                                IapProgramByte(IAP_ADDRESS+0x203, Gateway_IP[3]);
                                IapProgramByte(IAP_ADDRESS+0x204, Sub_Mask[0]);                
                                IapProgramByte(IAP_ADDRESS+0x205, Sub_Mask[1]);                       
                                IapProgramByte(IAP_ADDRESS+0x206, Sub_Mask[2]);               
                                IapProgramByte(IAP_ADDRESS+0x207, Sub_Mask[3]);
                                IapProgramByte(IAP_ADDRESS+0x208, IP_Addr[0]);                
                                IapProgramByte(IAP_ADDRESS+0x209, IP_Addr[1]);                       
                                IapProgramByte(IAP_ADDRESS+0x20a, IP_Addr[2]);               
                                IapProgramByte(IAP_ADDRESS+0x20b, IP_Addr[3]);
                                IapProgramByte(IAP_ADDRESS+0x20c, S0_DIP[0]);
                                IapProgramByte(IAP_ADDRESS+0x20d, S0_DIP[1]);
                                IapProgramByte(IAP_ADDRESS+0x20e, S0_DIP[2]);
                                IapProgramByte(IAP_ADDRESS+0x20f, S0_DIP[3]);       

                                {
                                u8 i;
                                for (i=0;i<9;i++)
                                        IapProgramByte(IAP_ADDRESS+0x210+i, mqtt_SubscribeTopic[i]);
                                }       
                                IE2 |= 0x20;        //重启定时器3中断
                                IE2 |= 0x40;                        
                                EA = 1;

。。。。


请大佬指教
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:299
  • 最近打卡:2026-07-04 00:01:55
已绑定手机

66

主题

808

回帖

3037

积分

论坛元老

DIY玩家

积分
3037
发表于 2026-5-23 09:58:49 | 显示全部楼层
可能内部的eeprom在某段频率区间操作稳定
提高单片机整体的工作频率则性能更强
但操作eeprom时可能需要调整频率
设置动态频率调整也许可行
频率调整偏离官方例程
可能需对多个芯片
抽样测试
永怀这学徒心
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:119
  • 最近打卡:2026-07-04 07:04:06
已绑定手机

3

主题

180

回帖

855

积分

高级会员

积分
855
发表于 2026-5-23 16:27:26 | 显示全部楼层
多加几个_nop_();试试
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-7-5 07:47 , Processed in 0.067317 second(s), 53 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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