tech 发表于 2023-11-14 16:02:29

怎么擦除任意地址的eeprom里的数据

请教大师:EEPROM_SectorErase(0x0000); 是将EEPROM里的数据全擦除吗?我想只擦除一个字节,怎么做?比如我想擦除地址0x0066里面的内容,但其他地址的内容保留,我该怎么做。谢谢

yanhui 发表于 2023-11-14 17:19:14

可以看下文档资料,也有相应的例程,里面有详细的讲解

社区闲人 发表于 2023-11-14 18:39:00

可以写个函数实现这个 功能。
我在移植grbl到stc8就是这么做的。

tech 发表于 2023-11-14 20:32:44

感谢大师们回复,再请教个问题,如果要擦除第2扇区怎么写:EEPROM_SectorErase(512);,这样写对吗?

yanhui 发表于 2023-11-15 08:30:21

第一个扇区首地址0x00,第二个0x200

程序可以用下面的语句来实现:
add+=0x200;

梁工 发表于 2023-11-15 10:30:07

tech 发表于 2023-11-14 20:32
感谢大师们回复,再请教个问题,如果要擦除第2扇区怎么写:EEPROM_SectorErase(512);,这样写对吗? ...

可以,擦除第2个扇区(扇区1)的地址可以使用512~1023均可。

tech 发表于 2023-11-15 13:48:15

谢谢大师们的回复。

huhuan 发表于 2023-12-3 19:59:31

不支持,只能按一页(512字节)擦出,如果要按位就只能用外部EEPROM硬件,比如2402/2404/2416

xhbwork 发表于 2023-12-12 16:21:14

有的时候还是需要EEPROM,STC官方其实可以考虑增加EEPROM硬件,这样使用的时候比DATAFLASH灵活一些。

神农鼎 发表于 2023-12-12 16:30:46

xhbwork 发表于 2023-12-12 16:21
有的时候还是需要EEPROM,STC官方其实可以考虑增加EEPROM硬件,这样使用的时候比DATAFLASH灵活一些。 ...

理解,主要还是成本,我主导 SST的 MCU 时,是 双 BANK FLASH,
IAP时,CPU 不停,就是成本会高些,后续豪华版,会考虑双 BANK FLASH
现在的解决方案:用比较器,平常放在 RAM中,掉电时再写回去
页: [1] 2
查看完整版本: 怎么擦除任意地址的eeprom里的数据