如何使用GD32A503模拟EEPROM
#申请原创# #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的操作成功。 注:如果想操作数据闪存部分,操作方法跟操作主闪存块一样。
学习了,可以提供例程学习一下嘛,非常感谢! 这个可以提供源码吗? 如何使用片上flash来模拟EEPROM 擦除页时要关闭中断? 编写针对EEPROM数据的读写函数,实现对EEPROM数据的读取、写入、修改等操作。需要注意的是,在进行数据写入时,需要先将Flash解锁并进行擦除操作,然后才能进行写入。 Flash有一定的擦写次数限制 需要谨慎使用擦除操作,避免误操作导致Flash损坏。 flash可以模拟eeprom,那为什么还需要外置eeprom 用flash模拟EEPROM 找些例程看看,部分代码 FLASH能用来做eeprom吗?可用多少 GD32A503的flash当EEPROM用要分大端小端么 根据所选用的单片机型号和Flash规格,选择一个Flash区域作为EEPROM模拟区域。 需要合理设计EEPROM数据的布局和结构,尽量减少写入次数,以延长Flash寿命。 在GD32单片机中,可以使用Flash来模拟EEPROM 先要了解stm32内部flash的使用过程,需要解锁,擦除页,再确定flash地址,向这一地址写入需要保存的数据,写好后再上锁就可以了。 根据实际应用需求,定义EEPROM数据存储的布局和结构。可以使用结构体或数组来管理EEPROM数据。 学习了,可以提供例程学习一下嘛,非常感谢! 楼主好,我正在调eeprom这个功能,但是老有问题,可以发一下源码参考下吗?感谢!lifengzhi467@163.com
页:
[1]
2