打印

如何使用GD32A503模拟EEPROM

[复制链接]
1245|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zyj8848|  楼主 | 2023-3-11 08:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#申请原创# #GD-FAQ#


一、介绍
目前在MCU系统上有三种常用方法实现EEPROM功能。第一种是使用MCU外挂真正的EEPROM,在GD32A503V EVAL开发板上就有外挂AT24C02C这款EEPROM,可使用I2C对其操作,此种方式优点是不占用闪存,缺点是价格昂贵。第二种方式是通过软件模拟来实现EEPROM功能,优点是便宜,缺点是实现EEPROM功能的额外代码占用了闪存空间。第三种方式就是使用固件来实现EEPROM功能,GD32A503有采用这种方式,即通过SRAM+FLASH来实现EEPROM功能,这种方式不需要任何额外代码,并且功能的实现对用户来说绝对透明。
二、GD32A503 EEPROM功能
以GD32A503VD为例,它拥有64KB的扩展闪存块,可配置成0/64,16/48,16/48,32/32,48/16,64/0的数据闪存和备份EEPROM。4KB的共享RAM,可配制成基本SRAM,EEPROM SRAM和快速编程SRAM。EEPROM SRAM+备份EEPROM可以实现4KB模拟EEPROM的功能,其中备份EEPROM和EEPROM SRAM的比例越大,仿真EEPROM性能越好。
当系统复位或者共享RAM被配置成EEPROM SRAM后,数据将从备份EEPROM中加载到共享RAM中。当读EEPROM时,数据可以直接从共享RAM中读取。当写EEPROM时,数据写入共享RAM中并记录到备份EEPROM中。其中EEPROM的操作地址如下图所示为0x08C00000-0x08C00FFF。
三、EEPROM demo讲解
以下是EEPROM读写的demo程序,首先需要将闪存和选项字节解锁,而后将64KB的扩展闪存块设置为48KB的数据闪存和16KB的备份EEPROM,再进行选项字节的复位,使设置生效。随后将4KB的共享RAM配置成EEPROM SRAM。后面就可以对模拟EEPROM进行读写操作了。操作成功后,LED2会被点亮。
int main(void)
{
    fmc_unlock();
    ob_unlock();
    /* configure the dataflash size as 48k and EEPROM backup size as 16k */
    if(0xC000 !=dflash_size_get()){
       ob1_eeprom_parameter_config(OB1CS_DF_48K_EF_16K, OB1CS_EPSIZE_4K);
        ob_reset();
    }
    /* configure the sharedRAM as EEPROM SRAM */
   fmc_sram_mode_config(EEPROM_SRAM_MODE);
   
    /* initialize led on theboard */
    gd_eval_led_init(LED1);
    gd_eval_led_init(LED2);
    /* program and check if itis successful. If not, light the LED1. */
    eeprom_program();
    eeprom_program_check();
      ob_lock();
    fmc_lock();
    /* if all the operationsare successful, light the LED2. */
    if(LED2 == lednum) {
        gd_eval_led_on(LED2);
    }
    while(1);
}
将demo下载到MCU后,如下图所示,调试模式下可以看到,目标地址0x08C00000-0x08C00800都被写入0x01234567,且重新上电后,数据不丢失。代表对模拟EEPROM的操作成功。
注:如果想操作数据闪存部分,操作方法跟操作主闪存块一样。

使用特权

评论回复
沙发
飞跃吧| | 2023-3-23 19:14 | 只看该作者
学习了,可以提供例程学习一下嘛,非常感谢!

使用特权

评论回复
板凳
zmsh_2008| | 2023-5-31 15:21 | 只看该作者
这个可以提供源码吗?

使用特权

评论回复
地板
eefas| | 2023-6-6 12:11 | 只看该作者
如何使用片上flash来模拟EEPROM

使用特权

评论回复
5
averyleigh| | 2023-6-6 12:30 | 只看该作者
擦除页时要关闭中断?              

使用特权

评论回复
6
10299823| | 2023-6-6 12:52 | 只看该作者
编写针对EEPROM数据的读写函数,实现对EEPROM数据的读取、写入、修改等操作。需要注意的是,在进行数据写入时,需要先将Flash解锁并进行擦除操作,然后才能进行写入。

使用特权

评论回复
7
wilhelmina2| | 2023-6-6 13:08 | 只看该作者
Flash有一定的擦写次数限制

使用特权

评论回复
8
beacherblack| | 2023-6-6 13:26 | 只看该作者
需要谨慎使用擦除操作,避免误操作导致Flash损坏。

使用特权

评论回复
9
robertesth| | 2023-6-6 13:39 | 只看该作者
flash可以模拟eeprom,那为什么还需要外置eeprom

使用特权

评论回复
10
jtracy3| | 2023-6-6 13:47 | 只看该作者
用flash模拟EEPROM               

使用特权

评论回复
11
backlugin| | 2023-6-6 14:09 | 只看该作者
找些例程看看,部分代码              

使用特权

评论回复
12
hearstnorman323| | 2023-6-6 14:14 | 只看该作者
FLASH能用来做eeprom吗?可用多少

使用特权

评论回复
13
10299823| | 2023-6-6 14:38 | 只看该作者
GD32A503的flash当EEPROM用要分大端小端么

使用特权

评论回复
14
albertaabbot| | 2023-6-6 17:11 | 只看该作者
根据所选用的单片机型号和Flash规格,选择一个Flash区域作为EEPROM模拟区域。

使用特权

评论回复
15
mickit| | 2023-6-6 18:03 | 只看该作者
需要合理设计EEPROM数据的布局和结构,尽量减少写入次数,以延长Flash寿命。

使用特权

评论回复
16
updownq| | 2023-6-6 18:09 | 只看该作者
在GD32单片机中,可以使用Flash来模拟EEPROM

使用特权

评论回复
17
pmp| | 2023-6-7 13:08 | 只看该作者
先要了解stm32内部flash的使用过程,需要解锁,擦除页,再确定flash地址,向这一地址写入需要保存的数据,写好后再上锁就可以了。

使用特权

评论回复
18
lihuami| | 2023-6-7 13:13 | 只看该作者
根据实际应用需求,定义EEPROM数据存储的布局和结构。可以使用结构体或数组来管理EEPROM数据。

使用特权

评论回复
19
lifengzhi467430| | 2024-3-30 01:26 | 只看该作者
学习了,可以提供例程学习一下嘛,非常感谢!  

使用特权

评论回复
20
lifengzhi467| | 2024-3-30 12:27 | 只看该作者
楼主好,我正在调eeprom这个功能,但是老有问题,可以发一下源码参考下吗?感谢!lifengzhi467@163.com

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

7

帖子

3

粉丝