Kingsley 发表于 2024-5-9 13:52:01

关于STC8G1K08-8Pin EEPROM的一些疑问

遇到的问题大致是这样的,在0X0000地址写入数据,发现0x0100,0x0200的数据会同步被0X0000的数据替换掉不知道是什么原因,希望大佬们帮忙解答一下。
改任意一个数据其余的会跟着变,0X0300及以上的还没测试。
void flash_WriteByte(unsigned int Addr,unsigned int Dat)//flash写
{
        IapProgram(Addr,Dat/256);
        IapProgram(Addr+1,Dat%256);
}

unsignedint flash_ReadByte(unsigned int Addr)//读指定位置参数
{
   return IapRead(Addr)*256+IapRead(Addr+1);//返回数据
}


Kingsley 发表于 2024-5-9 14:00:14

难道是我程序的问题{:4_199:}

电子DIY小家 发表于 2024-5-9 14:26:12

我怀疑是你程序哪里没写好,读取和写入的函数是不是哪里不对,IapProgram(Addr,Dat/256);写入这个地址的时候,确保这个地址里的数据为0xff才可以写入,否则需要擦除

Kingsley 发表于 2024-5-9 14:35:49

电子DIY小家 发表于 2024-5-9 14:26
我怀疑是你程序哪里没写好,读取和写入的函数是不是哪里不对,IapProgram(Addr,Dat/256);写入这个地址的时 ...

这个我都确保了的,而且下载程序的时候都是勾了擦除EEPROM的。我现在按0x100以下写循环就正常。
void Read_disk(void)//区判断
{       
       flash_offset=(flash_num/8)*0x10;//偏移量计算8个数据=0x10
       for(i=0;i<(128/flash_num);i++)//当前disk获取
       {
           if((flash_ReadByte(i*flash_offset))!=0xffff)
               {
               disk=i+1;//判断当前区
               }
       }
       disp=disk;//当前区给屏幕显示
}

Kingsley 发表于 2024-5-11 09:16:32

我用手头上的另外一个单片机STC8F1K08S2-TSSOP20测试了一下是没问题的,和手册标识的4KB EEPROM一致(0x0000~0x0FFF),
但是STC8G1K08A-8PIN的内部EEPROM只有256byte(0X0000~0X00FF),还是说我手头的这款有损坏了导致的。没有多余的没法测试{:4_167:}

神农鼎 发表于 2024-5-11 10:19:21

Kingsley 发表于 2024-5-11 09:16
我用手头上的另外一个单片机STC8F1K08S2-TSSOP20测试了一下是没问题的,和手册标识的4KB EEPROM一致(0x000 ...使用不一样,尤其是等待时间要注意




神农鼎 发表于 2024-5-11 10:25:49


下面的STC8A指STC8A8K64S4A12,
STC8A8K64D4已改到跟STC8G1K08/STC8H8K64U一致





页: [1]
查看完整版本: 关于STC8G1K08-8Pin EEPROM的一些疑问