晓飛飛 发表于 2024-3-22 11:46:36

STC的IAP-FLASH为何称为EEPROM

本帖最后由 晓飛飛 于 2024-4-7 11:45 编辑

今天聊聊这个比较古老而又敏感的话题,STC芯片手册中,明确描述STC单片机是利用ISP/IAP技术将内部Data Flash当EEPROM,擦写次数唉10万次以上,扇区尺寸为512字节。

众所周知,FLASH和EEPROM的最大区别是FLASH按扇区擦除操作,EEPROM则按字节改写操作。FLASH存储器的发明时间和商用时间均比EEPROM晚,FLASH存储器是在EEPROM的基础上,去除了储存单元里面的选择Tansister,简化了寻址结构而来,因此只能按扇区或Page操作。
   EEPROM结构    FLASH结构
      
从操作方式、存储密度、成本各方面来说,FLASH和EEPROM的区别是非常大的。那么,STC为什么将FLASH存储器称为EEPROM?
FLASH存储器当然可以当成EEPROM,那是因为FLASH本来的名字叫做FLASH EEPROM,属于EEPROM的一个分支,EEPROM的全称是“电可擦除可编程只读存储器”,FLASH存储器是符合这个特征的。只是随着FLASH存储器独立做大,远超了传统EEPROM,所以从狭义上我们单独称为FLASH存储器或闪存。
从这个概念来说,STC把MCU内部FLASH存储器称为EEPROM虽然有偷换概念的嫌疑,但也算讲的过去。


由于STC的EEPROM的真身是FLASH存储器,因此,以下一些应用特点都是需要注意的:

[*]存储其中的0写为1必须先擦后写,不能直接覆盖,擦除扇区大小为512字节,
[*]擦或写存储区时,需要暂时关闭中断,
[*]例如,想对N多页数据中同时只改写每页中某个字节时,效率相对低下,
[*]改写某一页的某个字节至少需要开销512字节的XRAM用于临时存放镜像,对于RAM资源紧缺的型号是有一定困难的;
[*]官方手册中特别提示“在工作电压偏低时,建议不要进行EEPROM操作,以免发送数据丢失的情况”,但具体偏低到多少没有明确给出数据,因此存在不可靠风险,企图做掉电保存的童鞋一定要从单片机LDO前端,甚至从是更靠前级的电源捕获掉电事件,争取更多的供电稳定期来操作存储器。
[*]保存数据无法使用开发工具直接读出,需要编写程序配合,所以数据具有更高的保密性能,更换MCU后,存储数据随之带走
[*]EEROM空间是从程序FLASH空间分配出来的,需要根据数据存储需求和代码量做好存储空间规划
[*]官方承诺了10万次以上的擦写寿命,网友测试的实际寿命远超于此,具体是多少不得而知,可以放心使用

对于以下应用场合建议外挂FRAM或者EEPROM芯片:

[*]需要大量存储参数,且按字节改写频繁的应用场合
[*]真实需要100万次以上擦写寿命的
[*]小RAM的MCU
[*]可靠性要求极高的场合
[*]具有不可暂时打断的任务,或者不适合暂时关闭的中断

对于以下场合建议使用STC内置EEPROM

[*]成本需要苛刻控制的
[*]存储数据需要严格保密的
[*]PCB空间存在约束的
[*]本来就需要外挂FLASH芯片用于存储少量数据的

综上所述,STC的EEPROM同时继承了FLASH存储器的优势和弊端,而且又具有无与伦比的保密安全性。其应用特点在手册里面已经描述的很详细了,建议广大使用STC的童鞋仔细阅读手册中红色和蓝色字体的内容,非常重要。

补充个人观点,STC与其刻意的强调EEPROM这个概念并且将其作为卖点,多多少少会让人感到不适,还不如大大方方的讲出来就是IAP-FLASH或者Data-Flash,其保密性能、性价比、擦写寿命都是闪光的地方,我想STC会得到更很多电子工程师的认可和应用。

21cnsound 发表于 2024-3-22 12:57:54

就如楼主分析的两种场景建议一样,Flash做EEPROM确实给用户带来了方便。
不知道官方是否可以考虑把EEPROM的读写擦除以库函数的方式放进系统ISP中,时钟参数、屏蔽中断等自动完成后,以函数方式提供调用方法。

jwd 发表于 2024-3-22 13:01:27

说得在理

soma 发表于 2024-3-22 13:23:23

难怪eeprom大小可调,原来并不是真正的eeprom而是flash eeprom啊

晓飛飛 发表于 2024-3-22 14:51:26

21cnsound 发表于 2024-3-22 12:57
就如楼主分析的两种场景建议一样,Flash做EEPROM确实给用户带来了方便。
不知道官方是否可以考虑把EEPROM的 ...

官方有封装好的函数,直接引用调用即可,非常方便

晓飛飛 发表于 2024-3-22 14:52:47

soma 发表于 2024-3-22 13:23
难怪eeprom大小可调,原来并不是真正的eeprom而是flash eeprom啊

很多工程师,把这个存储器类型误解了,应用中遇到很多问题,其实讲清楚就好了,避免很多麻烦。

纯今 发表于 2024-4-12 21:09:58

本帖最后由 纯今 于 2024-4-12 21:12 编辑

你好:为了降低成本,各半导体公司都差不多都玩这种小把戏
STM32F103C8T6的内部FLASH容量有64K,如果需要使用到内部FLASH来保存我们自定义的一些数据,则一般会选择存储后面的页
例如:输 入 参 数 : startAddress 指定读取地址(STM32F103C8T6的FLASH大小为64K选择最后一个扇区作为我们存储数据的存储区,地址范围为:0x800FC00~0x800FFF)
FLASH_ErasePage(sectorStartAddress); //擦除这个扇区。
还要用到函数名称 : LibDriveFlashWriteMoreData 功 能 描 述 :向指定地址写入多个数据。
区别是STM手册表明自己没有EEPROM,STC手册如你诟病的那种表述,你是主张像STM那种表达。
哈哈,在我看来这恰恰是STC很中国的地方

晓飛飛 发表于 2024-4-12 23:17:34

纯今 发表于 2024-4-12 21:09
你好:为了降低成本,各半导体公司都差不多都玩这种小把戏
STM32F103C8T6的内部FLASH容量有64K,如果需要使 ...

STC芯片手册中,明确描述STC单片机是利用ISP/IAP技术将内部Data Flash当EEPROM,而且所有相关操作的寄存器前缀都是IAP,说明官方非常明确这种技术的本质。
不是我想要诟病手册里的表述,非要把FLASH IAP反复强调EEPROM这个概念,明显会和传统意义的EEPROM混淆,尤其是对初步了解STC的工程师非常不友好,会增加试错成本。
我倒建议STC官方给这种技术另外取个名字,甚至注册一种技术商标,既摆脱了偷换概念的嫌疑,又还是不错的卖点,何乐不为?

社区闲人 发表于 2024-4-13 02:16:03

楼主讲得很好。

jwd 发表于 2024-4-13 06:12:09

晓飛飛 发表于 2024-4-12 23:17
STC芯片手册中,明确描述STC单片机是利用ISP/IAP技术将内部Data Flash当EEPROM,而且所有相关操作的寄存 ...

说得在理
页: [1] 2 3 4
查看完整版本: STC的IAP-FLASH为何称为EEPROM