基于RL78-FDL库实现RL78G13 Data Flash的读写操作

电子说

1.2w人已加入

描述

前 言

在许多实际项目中是需要在MCU掉电前保存一些数据,以供MCU在下一次上电后能读取。而瑞萨的MCU RL78G13能通过瑞萨免费提供的数据闪存编程库(FDL)来简单快捷地实现内部Data Flash的读写操作。

本文是基于CS+(for CC) 开发环境,MCU是R5F100LE,FDL库文件是在瑞萨官网下载的FDL_RL78_Type04_Installer_V200-doc-e.zip。

首先我们先解压安装好FDL库

RL78

选择CC-RL版本

RL78

安装好后在文件夹里有以下4个文件,之后需要添加到工程里面。

RL78

之后新建一个工程,并添加刚才4个文件到工程中,由于FDL库的运行需要用到MCU的内部时钟,所以选择默认的内部时钟(fIH),频率32M。

RL78

选择使用Data Flash,并点击生成代码(Generate Code)

RL78

这样我们就已经生成了基于FDL库的代码,现在直接调用代码中的函数就能实现读写Data Flash。

我们现在来测试一下,本次测试的预想结果是在MCU的dataflash起始地址F1000H写入5个数据,然后再从中读取存放到目标数组中。

首先我们在r_main.c文件中定义两个数组,tx_buf1为写入数据的数组,rx_buf1为读取数据的数组。然后在main函数中调用r_cg_pfdl.c中的一些函数,如下图所示代码:

RL78

在读写Data Flash时,首先调用R_FDL_Open函数来实现启动FDL库,之后我们擦除目标地址的数据,该MCUu是4k的Data Flash,而FDL库每次操作擦除的地址是1k,所以把4k的地址分为4个块,而目标地址F1000H处于块0,即调用R_FDL_Erase(0);然后在F1000H的地址开始写入数组tx_buf1的5个数据,调用R_FDL_Wirte(0x0000, tx_buf1[0],5);0x0000为F1000H的相对地址,此说明在该FDL库的用户手册有写到,如下图:

RL78

从F1000H开始读取之前写入的5个数据存入数组rx_buf1中,即调用了函数R_FDL_Read(0x0000, rx_buf1[0],5)。最后完成擦除写入读取操作,关闭库操作,即调用R_FDL_Close()函数。

代码完成后我们仿真验证一下,通过Memory1看到,写入数据成功,如下图

RL78

而通过查看watch1中rx_buf[1]数组的值可以看到,读取数据成功,如下图

RL78

总结

以上就是基于瑞萨提供的FDL库来实现RL78G13 Data Flash的读写操作,真的是十分的简单快捷,用户无需过多的查看手册都可以十分迅速地掌握。通过瑞萨的开发环境CS+(for CC),可以实现瑞萨RL78系列MCU的外设的选择、配置、代码生成,大大减少了开发人员对于MCU底层的配置,从而缩短了整个项目的开发周期,这也是瑞萨RL78系列MCU深受广大嵌入式开发人员的好评之一。

来源:瑞萨MCU小百科
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理


审核编辑 黄宇

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分