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