早期的存儲器只能寫一次,隨后紫外線擦寫的存儲器問世,支持上千次讀寫操作。
隨著技術(shù)的發(fā)展,閃存的讀寫越來越快,讀寫次數(shù)也越來越多。十萬次讀寫已經(jīng)是目前最低配置,百萬次讀寫將成為標配。
如今,存儲器的價格已不再是20年前昂貴買不起的價格,基本可以用“白菜價”來形容了。所以,現(xiàn)在MCU內(nèi)部集成存儲的容量越來越大,性能也越來越高。
今天結(jié)合瑞薩RL78系列單片機支持百萬次讀寫的數(shù)據(jù)閃存(Data Flash)給大家講述一下其讀寫方法。
數(shù)據(jù)閃存(Data Flash)概述
最近這些年推出的大部分MCU,基本都有供用戶可編程和使用的Flash,RL78系列MCU也是類似的Flash,官方叫數(shù)據(jù)閃存(Data Flash)。
數(shù)據(jù)閃存(Data Flash)可供用戶存儲產(chǎn)品的標定參數(shù)、運行數(shù)據(jù)等,這樣就可以免去片外存儲器件,有效的降低了用戶的硬件成本。
Data Flash特點:
用戶能基于瑞薩官方提供的庫來使用MCU內(nèi)部的數(shù)據(jù)閃存,雖然MCU內(nèi)部的閃存仍以1K字節(jié)塊作為單位,但是用戶可以按照字節(jié)進行讀寫。
RL78資源的不同,對應的內(nèi)部數(shù)據(jù)閃存的大小也不盡相同,一般大小在2K-8K字節(jié)范圍之間,就單個地址,當前讀寫次數(shù)能達到1,000,000次,可在1.8-5.5伏電壓范圍內(nèi)進行操作。
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內(nèi)部RAM相關(guān)區(qū)域:
根據(jù)MCU的硬件手冊和《Self RAM list of Flash Self-Programming Library for RL78 Family》規(guī)定,有些MCU的RAM部分區(qū)域不能被數(shù)據(jù)庫使用,因此需要在section設置進行避開,否則編譯會出錯,不同MCU要求也不盡相同,以R5F100LE為例,閃存庫僅能使用RAM FFE00H ~ FF2FFH以外的區(qū)域,如下。
如下是基于R5F100LE在CS+上的具體section配置,以避開相應的區(qū)域,其他型號的MCU也可參考。
Data Flash測試
把RL78閃存庫加載到應用工程里,然后調(diào)用初始化和讀寫函數(shù)進行數(shù)據(jù)的操作,當前使用RL78G13硬件板型號是“YRPBRL78G13”。然后在R5F100LE Data Flash的起始地址連續(xù)寫一串數(shù)據(jù)“0x11,0x22,0x33, … 0xCC,并把它們讀出出來,數(shù)據(jù)定義以及應用代碼如下:
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”上運行測試結(jié)果如下,執(zhí)行正確。
審核編輯:劉清
-
單片機
+關(guān)注
關(guān)注
6040文章
44605瀏覽量
637221 -
mcu
+關(guān)注
關(guān)注
146文章
17269瀏覽量
352059 -
FlaSh
+關(guān)注
關(guān)注
10文章
1641瀏覽量
148367 -
存儲器
+關(guān)注
關(guān)注
38文章
7522瀏覽量
164127
原文標題:MCU百萬次讀寫閃存測試
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論