0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用STM32_FLASH模拟实现EEPROM功能

冬至子 来源:麦芽二糖 作者:麦芽二糖 2023-10-23 17:40 次阅读

一、

工业应用中经常使用EEPROM来存储数据,为降低成本、节省PCB空间,外部EEPROM可以用片内Flash加上特定的软件算法代替。

因为片内Flash的擦写次数有限,所以要加上特定算法来增加使用寿命。此算法ST提供了历程,我们可以移植到我们的程序里直接使用,比较方便。

二、源码移植

移植很简单,一共两个文件“eeprom.c","eeprom.h",移植前需要准备选择至少2块连续大小相同的flash扇区,示例程序中选用的是16K大小的2、3扇区。现在打开“eeprom.h”文件。移植时需要修改的内容:

图片

好了移植完成,注意此源码是基于HAL库的,也可以自己修改flash读写程序,之前我将这个移植到GD的芯片,这个还是很方便的。

三、使用方法

在“eeprom.h”文件中的最下方可以看到对外的功能函数

图片

我们首先需要将EE_Init()函数在主函数中调用初始化。剩下两个EE_ReadVariable( uint16_t VirtAddress, uint16_t* Data )和EE_WriteVariable( uint16_t VirtAddress, uint16_t Data )函数是我们将用到的FLASH读写函数。

这里需要注意这两个函数都有一个输入参数,这是一个虚拟地址,也就是一个将来寻找我们存储内容的地址。

例如,示例程序中,要存储3个变量值,分别给这3个变量一个虚拟地址,0x5555, 0x6666, 0x7777 当然你也可以不用这个三个值作为虚拟地址。

图片

将VarValue值分配虚拟地址为0x5555后通过EE_WriteVariable函数写入flash,然后根据0x5555这个地址使用EE_ReadVariable函数将刚刚存储的值读到VarDataTab数组里。如下图。

图片

使用起来同样简单。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348744
  • EEPROM
    +关注

    关注

    9

    文章

    927

    浏览量

    80314
  • Flash存储
    +关注

    关注

    0

    文章

    38

    浏览量

    8235
  • HAL库
    +关注

    关注

    1

    文章

    112

    浏览量

    5878
  • PCB
    PCB
    +关注

    关注

    1

    文章

    1576

    浏览量

    13204
收藏 人收藏

    评论

    相关推荐

    FLASH模拟EEPROM可以单片机实现吗?

    FLASH模拟EEPROM可以单片机实现吗?哪位前辈做过,望指教,谢谢
    发表于 05-18 18:36

    如何用stm32 Flash模拟eeprom

    原子大哥,我现在要用stm32eeprom,但是遗憾的是他没有。我看网上说可以flash模拟,怎么回事,大哥给指条明路吧!
    发表于 09-22 23:07

    gd32e230 flash 模拟eeprom

    请问有没有gd32e230 flash 模拟eeprom例程。我有一个从stm32移植到gd32的项目用到flash
    发表于 09-03 07:36

    如何使用Flash模拟出一片eeprom

    MCU模拟eeprom基本功能 如果你的MCU的flash足够大。并且你的MCU提供自编程flash指令。则可以通过
    发表于 11-03 06:42

    如何利用STM32FLASH模拟EEPROM

    ;不过FLASH的容量还是可观的,我们可以利用FLASH模拟EEPROM。根据《STM32F10X闪存编程》中的介绍,
    发表于 12-09 07:13

    如何利用单片机的内部Flash模拟EEPROM

    的内部Flash模拟EEPROM实现可以多次擦写,掉电又可以保存数据的功能。二、原理1.STM32
    发表于 01-26 06:59

    使用STM32F10x片内的Flash存储器实现软件模拟EEPROM的方法

    本文档适用于STM32F1系列微控制器。介绍了外部EEPROM和嵌入式Flash存储器之间的不同,描述了使用STM32F10x片内的Flash
    发表于 12-01 06:16

    FLASH模拟EEPROM入门指南

    FLASH模拟EEPROM入门指南使用AT32 的片上FLASH 模拟EEPROM
    发表于 10-19 06:10

    STM32_FLASH程序

    STM32 FLASH程序,很好的学习资料,快来下载吧
    发表于 02-15 15:30 41次下载

    STM32 FLASH模拟EEPROM资料

    STM32 FLASH模拟EEPROM资料,mcu,单片机相关的知识及内容。
    发表于 03-10 17:14 18次下载

    MCU模拟eeprom基本功能

    MCU模拟eeprom基本功能 如果你的MCU的flash足够大。并且你的MCU提供自编程flash指令。则可以通过
    发表于 10-28 19:06 10次下载
    MCU<b class='flag-5'>模拟</b><b class='flag-5'>eeprom</b>基本<b class='flag-5'>功能</b>

    AN0002—AT32 MCU如何使用片上Flash实现EEPROM功能

    AN0002—AT32 MCU如何使用片上Flash实现EEPROM功能当前诸多嵌入式应用场景都需要用到 EEPROM 作为非易失性的数据
    发表于 11-18 16:21 14次下载
    AN0002—AT32 MCU如何使用片上<b class='flag-5'>Flash</b>来<b class='flag-5'>实现</b><b class='flag-5'>EEPROM</b><b class='flag-5'>功能</b>

    STM32F103:内部Flash模拟EEPROM

    的内部Flash模拟EEPROM实现可以多次擦写,掉电又可以保存数据的功能。二、原理1. STM32
    发表于 12-02 11:36 32次下载
    <b class='flag-5'>STM32</b>F103:内部<b class='flag-5'>Flash</b><b class='flag-5'>模拟</b><b class='flag-5'>EEPROM</b>

    使用MCU Flash模拟EEPROM

    使用MCU Flash模拟EEPROM
    的头像 发表于 10-18 18:01 450次阅读

    stm32f103 flash模拟eeprom

    STM32F103的Flash存储器可以模拟EEPROM功能,在本文中我们将详细介绍如何使用STM3
    的头像 发表于 01-09 11:21 689次阅读