早期的存储器只能写一次,随后紫外线擦写的存储器问世,支持上千次读写操作。
随着技术的发展,闪存的读写越来越快,读写次数也越来越多。十万次读写已经是目前最低配置,百万次读写将成为标配。
如今,存储器的价格已不再是20年前昂贵买不起的价格,基本可以用“白菜价”来形容了。所以,现在MCU内部集成存储的容量越来越大,性能也越来越高。
今天结合瑞萨RL78系列单片机支持百万次读写的数据闪存(Data Flash)给大家讲述一下其读写方法。
数据闪存(Data Flash)概述
最近这些年推出的大部分MCU,基本都有供用户可编程和使用的Flash,RL78系列MCU也是类似的Flash,官方叫数据闪存(Data Flash)。
数据闪存(Data Flash)可供用户存储产品的标定参数、运行数据等,这样就可以免去片外存储器件,有效的降低了用户的硬件成本。
Data Flash特点:
用户能基于瑞萨官方提供的库来使用MCU内部的数据闪存,虽然MCU内部的闪存仍以1K字节块作为单位,但是用户可以按照字节进行读写。
RL78资源的不同,对应的内部数据闪存的大小也不尽相同,一般大小在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以外的区域,如下。
如下是基于R5F100LE在CS+上的具体section配置,以避开相应的区域,其他型号的MCU也可参考。
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”上运行测试结果如下,执行正确。
审核编辑:刘清
-
单片机
+关注
关注
6029文章
44480浏览量
631592 -
mcu
+关注
关注
146文章
16840浏览量
349720 -
FlaSh
+关注
关注
10文章
1613浏览量
147628 -
存储器
+关注
关注
38文章
7413浏览量
163466
原文标题:MCU百万次读写闪存测试
文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论