mangolu 发表于 2022-5-10 01:15:57

请教STC8G1K08这种EEPROM与flash重叠的,如何防止烧flash时覆盖EEPROM?

如题,首先第一个疑问,如下图:



这个是STC8数据的册中EEPROM的截图,图中STC8G1K04有8K EEPROM,反而STC8G1K08有4K EEPROM,这个数据手册确认没错吗?我看了英文版的,也是这样写的。

其次在烧录过程里,STC8G1K08这个芯片,如何指定EEPROM的位置,防止被烧FLASH的与FLASH部突?在下图这里指定EEPROM的地址可以?




mangolu 发表于 2022-5-10 01:20:28

看了介绍里,STC8G1K08是有8K的Flash ,4K的EEPROM,就是前4K Flash可以做为EEPROM。这样子既使指定使用EEPROM最后扇区,也是落丰Flash的中间,烧Flash的时候,不会影响吗?

我是一个大白菜 发表于 2022-5-10 01:30:56

应该是芯片内部处理了,你使用了,超过设定的地址,硬件报错或者执行失败的

mangolu 发表于 2022-5-10 01:39:52

我是一个大白菜 发表于 2022-5-10 01:30
应该是芯片内部处理了,你使用了,超过设定的地址,硬件报错或者执行失败的 ...
(引用自3楼)

前4K能作为EEPROM,那我先烧了超过4K的程序,然后程序运行里才读写的EEPROM,那这个EEPROM还有效吗?是不是使用了EEPROM,程序就不能超过4K?

以前使用N76E003的时候,设置了IAP区,那在烧flash时是不能访问IAP区的,这个STC我是不明白如何管时的。如果EEPROM是在FLASH的最后扇区是可以理解,中间无法理解。

zqf441775525 发表于 2022-5-10 08:40:54

这个很好理解啊,你就认为STC1G8K04是4Kflash,8Keeprom,STC1G8K08是8Kflash,4Keeprom就行。没看到哪儿说前4Kflash可以当EEPROM用。
只是如果用IAP方式访问EEPROM,就不用管EEPROM具体放在哪个位置,直接以0开始访问即可。

vtte 发表于 2022-5-10 10:44:04

楼主你理解错了,首先STC的EEPROM是在整个FLASH的后面。第二,程序flash和数据flash是有硬件限制的,不会让你写越界。
你把它当电脑硬盘就好理解了,整个芯片是一个硬盘,分了两个区,普通读写并不会越界。
后缀是IAP的型号,相当于是空盘给你,下载程序时再指定分区大小,其它普通型号是固定好分区的,不能再分区。

mangolu 发表于 2022-5-10 16:10:29

本帖最后由 mangolu 于 2022-5-10 16:12 编辑

zqf441775525 发表于 2022-5-10 08:40
这个很好理解啊,你就认为STC1G8K04是4Kflash,8Keeprom,STC1G8K08是8Kflash,4Keeprom就行。没看到哪儿说 ...
(引用自5楼)

后面认真研究了下面这个图:



应该是像STC8G1K08这种型号,不能自定义EEPROM大小的,是有独立EEPROM空间的,并不会占用FLASH的空间。所以STC8G1K04有4K FLASH,却有8KEEPROM也能理解了。而能自定义EEPROM大小的,都是从FLASH的最后扇区起,应该指定EEPROM大小后,下载程序不让写入这些扇区吧?

zqf441775525 发表于 2022-5-10 18:06:34

mangolu 发表于 2022-5-10 16:10
后面认真研究了下面这个图:


(引用自7楼)

对的,STC8G1K08和STC8G1K04不能自定义EEPROM大小。
只有STC8G1K12和STC8G1K17可以自定义,而且自定义的EEPROM空间肯定是在Flash的最后面的。
比如STC8G1K12,你定义了1K的EEPROM,那这个1K的EEPROM就是在最后的1K空间,你的程序最多只能写11K,多了就出错。

总的来说STC8G1K12比STC8G1K08灵活些,可以任意分配Flash和EEPROM的空间。

小李非刀 发表于 2022-5-10 19:21:17

STC8G1K08的EEPROM是独立编址的,不会跟程序FLASH重叠,所以你烧写程序不用担心覆盖的问题。
页: [1]
查看完整版本: 请教STC8G1K08这种EEPROM与flash重叠的,如何防止烧flash时覆盖EEPROM?