找回密码
 立即注册
查看: 333|回复: 35

STC的IAP-FLASH为何称为EEPROM

[复制链接]
  • TA的每日心情
    慵懒
    19 小时前
  • 签到天数: 88 天

    [LV.6]常住居民II

    13

    主题

    333

    回帖

    768

    积分

    荣誉版主

    热心市民

    积分
    768
    发表于 2024-3-22 11:46:36 | 显示全部楼层 |阅读模式
    本帖最后由 晓飛飛 于 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结构
    111.png        222.png
    从操作方式、存储密度、成本各方面来说,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会得到更很多电子工程师的认可和应用。

    睁开眼睛做场梦~~~
    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    5 天前
  • 签到天数: 97 天

    [LV.6]常住居民II

    9

    主题

    556

    回帖

    817

    积分

    高级会员

    积分
    817
    发表于 2024-3-22 12:57:54 | 显示全部楼层
    就如楼主分析的两种场景建议一样,Flash做EEPROM确实给用户带来了方便。
    不知道官方是否可以考虑把EEPROM的读写擦除以库函数的方式放进系统ISP中,时钟参数、屏蔽中断等自动完成后,以函数方式提供调用方法。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    11 小时前
  • 签到天数: 159 天

    [LV.7]常住居民III

    25

    主题

    733

    回帖

    1833

    积分

    金牌会员

    积分
    1833
    发表于 2024-3-22 13:01:27 | 显示全部楼层
    说得在理
    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    9 小时前
  • 签到天数: 61 天

    [LV.6]常住居民II

    3

    主题

    556

    回帖

    760

    积分

    高级会员

    积分
    760
    发表于 2024-3-22 13:23:23 来自手机 | 显示全部楼层
    难怪eeprom大小可调,原来并不是真正的eeprom而是flash eeprom啊
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    19 小时前
  • 签到天数: 88 天

    [LV.6]常住居民II

    13

    主题

    333

    回帖

    768

    积分

    荣誉版主

    热心市民

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

    官方有封装好的函数,直接引用调用即可,非常方便
    睁开眼睛做场梦~~~
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    19 小时前
  • 签到天数: 88 天

    [LV.6]常住居民II

    13

    主题

    333

    回帖

    768

    积分

    荣誉版主

    热心市民

    积分
    768
     楼主| 发表于 2024-3-22 14:52:47 | 显示全部楼层
    soma 发表于 2024-3-22 13:23
    难怪eeprom大小可调,原来并不是真正的eeprom而是flash eeprom啊

    很多工程师,把这个存储器类型误解了,应用中遇到很多问题,其实讲清楚就好了,避免很多麻烦。
    睁开眼睛做场梦~~~
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    3

    主题

    25

    回帖

    167

    积分

    注册会员

    积分
    167
    发表于 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很中国的地方

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    19 小时前
  • 签到天数: 88 天

    [LV.6]常住居民II

    13

    主题

    333

    回帖

    768

    积分

    荣誉版主

    热心市民

    积分
    768
     楼主| 发表于 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官方给这种技术另外取个名字,甚至注册一种技术商标,既摆脱了偷换概念的嫌疑,又还是不错的卖点,何乐不为?
    睁开眼睛做场梦~~~
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    7 小时前
  • 签到天数: 160 天

    [LV.7]常住居民III

    17

    主题

    370

    回帖

    1313

    积分

    荣誉版主

    积分
    1313
    发表于 2024-4-13 02:16:03 | 显示全部楼层
    楼主讲得很好。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    11 小时前
  • 签到天数: 159 天

    [LV.7]常住居民III

    25

    主题

    733

    回帖

    1833

    积分

    金牌会员

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

    说得在理
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-5 19:24 , Processed in 0.070795 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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