早期的存儲器只能寫一次,隨后紫外線擦寫的存儲器問世,支持上千次讀寫操作。
隨著技術的發展,閃存的讀寫越來越快,讀寫次數也越來越多。十萬次讀寫已經是目前最低配置,百萬次讀寫將成為標配。
如今,存儲器的價格已不再是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”上運行測試結果如下,執行正確。
審核編輯:劉清
-
單片機
+關注
關注
6032文章
44516瀏覽量
633019 -
mcu
+關注
關注
146文章
16992瀏覽量
350310 -
FlaSh
+關注
關注
10文章
1621瀏覽量
147754 -
存儲器
+關注
關注
38文章
7452瀏覽量
163606
原文標題:MCU百萬次讀寫閃存測試
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論