良许Linux教程网 干货合集 MCU百万次读写闪存测试

MCU百万次读写闪存测试

早期的存储器只能进行一次写操作,后来随着紫外线擦写存储器的问世,它支持了上千次的读写操作。

随着技术的不断发展,闪存的读写速度和次数都在不断提高。如今,即使是最低配置的闪存也能支持十万次的读写操作,而百万次的读写操作已经成为了标准配置。

存储器的价格也随着时间的推移变得越来越亲民,如今基本可以用“白菜价”来形容。因此,现在的MCU内部集成的存储器容量越来越大,性能也越来越高。

在这个背景下,瑞萨RL78系列单片机支持百万次读写的数据闪存(Data Flash)成为了焦点。下面我们来介绍一下其读写方法。

数据闪存(Data Flash)概述

大部分近年推出的MCU基本都提供了供用户编程和使用的Flash,而RL78系列MCU也不例外,其官方称之为数据闪存(Data Flash)。

数据闪存(Data Flash)可以用来存储产品的标定参数、运行数据等信息,这样就可以省去外部存储器件,有效降低了用户的硬件成本。

Data Flash特点:

用户可以基于瑞萨官方提供的库来操作MCU内部的数据闪存。虽然数据闪存仍然以1K字节块为单位,但用户可以按字节进行读写操作。

RL78系列MCU的不同型号拥有不同大小的内部数据闪存,一般在2K到8K字节之间。而每个地址的当前读写次数可达到1,000,000次,并且可以在1.8到5.5伏的电压范围内进行操作。

Data Flash使用说明

Data Flash应用库的下载:

如果你用的是CC-RL编译器,请在如下地址下载应用库和API应用文档:

https://www.renesas.cn/cn/zh/document/upr/data-flash-library-type04-ver105-cc-rl-compiler-rl78-family?language=en

如果你用的是CA78K0R编译器,请在如下地址下载应用库和API应用文档:

https://www.renesas.cn/cn/zh/document/upr/data-flash-library-type04-ver105-ca78k0r-compiler-rl78-family

(提醒:请复制链接到浏览器下载)

避开MCU内部RAM相关区域:

根据MCU的硬件手册和《Self RAM list of Flash Self-Programming Library for RL78 Family》规定,有些MCU的RAM部分区域不能被数据库使用,因此需要在section设置进行避开,否则编译会出错,不同MCU要求也不尽相同,以R5F100LE为例,闪存库仅能使用RAM FFE00H ~ FF2FFH以外的区域,如下。

![图片](data:image/svg+xml,%3C%3Fxml version=’1.0′ encoding=’UTF-8’%3F%3E%3Csvg width=’1px’ height=’1px’ viewBox=’0 0 1 1′ version=’1.1′ xmlns=’http://www.w3.org/2000/svg’ xmlns:xlink=’http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=’none’ stroke-width=’1′ fill=’none’ fill-rule=’evenodd’ fill-opacity=’0’%3E%3Cg transform=’translate(-249.000000, -126.000000)’ fill=’%23FFFFFF’%3E%3Crect x=’249′ y=’126′ width=’1′ height=’1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

如下是基于R5F100LE在CS+上的具体section配置,以避开相应的区域,其他型号的MCU也可参考。

![图片](data:image/svg+xml,%3C%3Fxml version=’1.0′ encoding=’UTF-8’%3F%3E%3Csvg width=’1px’ height=’1px’ viewBox=’0 0 1 1′ version=’1.1′ xmlns=’http://www.w3.org/2000/svg’ xmlns:xlink=’http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=’none’ stroke-width=’1′ fill=’none’ fill-rule=’evenodd’ fill-opacity=’0’%3E%3Cg transform=’translate(-249.000000, -126.000000)’ fill=’%23FFFFFF’%3E%3Crect x=’249′ y=’126′ width=’1′ height=’1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

Data Flash测试

把RL78闪存库加载到应用工程里,然后调用初始化和读写函数进行数据的操作,当前使用RL78G13硬件板型号是“YRPBRL78G13”。然后在R5F100LE Data Flash的起始地址连续写一串数据“0x11,0x22,0x33, … 0xCC,并把它们读出出来,数据定义以及应用代码如下:

unsigned char Execute_status;    
unsigned char W_DataFla_buff[3]  = {0x11,0x22,0x33};
unsigned char W_DataFla_buff1[3] = {0x44,0x55,0x66};
unsigned char W_DataFla_buff2[3] = {0x77,0x88,0x99};
unsigned char W_DataFla_buff3[3] = {0xAA,0xBB,0xCC}; 
unsigned char R_DataFla_buff[12]; 
unsigned long int address=0x00;
         R_FDL_Init(); 
       Execute_status = R_FDL_BlankCheck(0x00,1024);
        if (Execute_status == 0x1b) 
        {
        R_FDL_Erase(0x00);
        }  
        R_FDL_Write(address,&W_DataFla_buff[0],3); 
        address+=3;
        R_FDL_Write(address,&W_DataFla_buff1[0],3); 
        address+=3;
        R_FDL_Write(address,&W_DataFla_buff2[0],3); 
        address+=3;
        R_FDL_Write(address,&W_DataFla_buff3[0],3); 
        address+=3;
        Execute_status = R_FDL_Iverify(0x00,1024);
        if (Execute_status == 0x1b) 
        {
                return;   

        }     
        R_FDL_Read(0x00,&R_DataFla_buff[0],12);
        PFDL_Close();

代码在硬件板“YRPBRL78G13”上运行测试结果如下,执行正确。

image-20240329230854571
image-20240329230854571

![图片](data:image/svg+xml,%3C%3Fxml version=’1.0′ encoding=’UTF-8’%3F%3E%3Csvg width=’1px’ height=’1px’ viewBox=’0 0 1 1′ version=’1.1′ xmlns=’http://www.w3.org/2000/svg’ xmlns:xlink=’http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=’none’ stroke-width=’1′ fill=’none’ fill-rule=’evenodd’ fill-opacity=’0’%3E%3Cg transform=’translate(-249.000000, -126.000000)’ fill=’%23FFFFFF’%3E%3Crect x=’249′ y=’126′ width=’1′ height=’1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部