电子产业一站式赋能平台

PCB联盟网

搜索
查看: 90|回复: 0
收起左侧

单片机Flash模拟EEPROM

[复制链接]

560

主题

560

帖子

6720

积分

高级会员

Rank: 5Rank: 5

积分
6720
发表于 2025-1-24 11:45:00 | 显示全部楼层 |阅读模式
介绍
有些应用场景下,我们可能需要用到EEPROM的功能,但有些单片机内部没有EEPROM,那怎么办呢?

瑞萨Virtual EEPROM模块简称VEE模块,该VEE模块可以基于Flash模拟基本的EEPROM功能,支持读和写操作两种常见的数据操作。在应用程序的整个生命周期内,保留存储扇区的擦除计数,擦除计数可以随时访问。驱动函数会自动做磨损均衡处理,延长Flash的使用寿命。

主要内容

本文以开发板RA2单片机为例,使用VEE模块存取数据。

5uczobrd2gs6404097617.jpg

5uczobrd2gs6404097617.jpg


1、创建新工程

bhy3phv1i316404097717.png

bhy3phv1i316404097717.png


2、工程创建完成后,通过FSP配置Virtual EEPROM

2.1 添加Virtual EEPROM Stack
选择配置标签页 Stack → New Stack → Storage → Virtual EEPROM on Flash(rm_vee_flash)

vvl3snqsewy6404097817.png

vvl3snqsewy6404097817.png


2.2 配置Virtual EEPROM Stack
在生成的Stack框图中,点击 Virtual EEPROM on Flash(rm_vee_flash),可以看到e2 studio左下角出现属性栏,按照如图所示配置。

wvxpaywipau6404097917.png

wvxpaywipau6404097917.png


2.3 配置g_flash0 flash(r_flash_lp)
点击框图中g_flash0 flash(r_flash_lp),并按下图所示,设置Flash Ready Interrupt Priority。此处工程设置为Priority 1,可根据实际需要调整。

ivxuasv5dt06404098017.png

ivxuasv5dt06404098017.png


按照上面步骤配置配置完成后,点击

rcaqbzhxcms6404098117.png

rcaqbzhxcms6404098117.png

FSP就会生成工程Virtual EEPROM以及相关的初始化代码。

3、编写示例代码,验证Virtual EEPROM功能。

在工程中打开scr/hal_entry.c文件,void hal_entry(void) 函数由main函数调用,我们自己的代码由hal_entry调用,这样做符合瑞萨软件的架构,方便以后使用RTOS。

在hal_entry.c文件中添加下面的代码

0eercwxautx6404098217.png

0eercwxautx6404098217.png

m1mrq44b3ml6404098317.png

m1mrq44b3ml6404098317.png


然后在hal_entry函数调用上面的rm_vee_example函数

es105iatrsx6404098417.png

es105iatrsx6404098417.png


接下来就可以编译调试程序,当程序正常运行起来之后,就可以看到绿色LED灯亮起,说明存到Flash中的数据再读取出来,经过对比确认数据正确。也可以在调试状态下,将全局变量添加到观察窗口,单步调试,观察数据的变化。

程序运行前

zcjs2uod1ux6404098517.png

zcjs2uod1ux6404098517.png


程序运行起来之后
可以看到右侧相关变量的数值已经有改变

dyskqdwyywy6404098618.png

dyskqdwyywy6404098618.png


在后面附加了如何在调试过程中观察全局变量数值变化。

*附:观察全局变量的方式

选中要观察的数据名称,右击,选择添加监看表达式

gtu5snfskfj6404098718.png

gtu5snfskfj6404098718.png

stveq4f11ee6404098818.png

stveq4f11ee6404098818.png


可以在调试界面看到相关表达式的值,随着程序运行,可以在这里观察数值的变化。

kk5y04yad4n6404098918.png

kk5y04yad4n6404098918.png


结论
使用VEE模块,可以方便地使用Flash存取数据。不再需要自己去考虑数据存储的位置以及磨损均衡等问题,可以把精力专注于实现功能上。
------------ END ------------
推荐阅读:
瑞萨RA8系列教程 | 初识瑞萨 RA8 系列单片机
瑞萨RA8系列教程 | 瑞萨 RA8 开发环境搭建,并点亮一个LED
瑞萨RA8系列教程 | 基于 Keil 开发 RA8单片机
瑞萨RA8系列教程 | 学习RA8常用哪些文档手册?
瑞萨RA8系列教程 | 瑞萨RA8单片机IO中断配置
瑞萨RA8系列教程 | 基于e2s在RA8上跑RTOS实现的方法
瑞萨RA8系列教程 | 基于e2s实现RA8串口输出配置
瑞萨RA8系列教程 | RA8单片机SysTick使用描述
瑞萨RA8系列教程 | RA8输出PWM实现方法
瑞萨RA8系列教程 | RA8基于e2s实现RTC实时时钟功能
······
回复

使用道具 举报

发表回复

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

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表