《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信与网络 > 设计应用 > 利用基于闪存的MCU实现用户数据存储
利用基于闪存的MCU实现用户数据存储
摘要: 采用微控制器的大多数设备还需要某种机制来存储在断电时仍要被记住的那些设置数据。用户希望喜爱的电台、预设温度、参数选择和其他永久性信息能长久保存下来供每次开机时直接取用。 为了满足这种用户需求,设计师一般使用串行EEPROM。这些器件又小又便宜,具有很长的历史,设计工程师用起来得心应手。但在今天对成本极其敏感的市场下,即使这样一个廉价的器件也可能突破成本预算。因此许多设计师试图寻求并利用已经包含在微控制器芯片中的资源:程序闪存中剩余的空间。
Abstract:
Key words :

采用微控制器的大多數(shù)設(shè)備還需要某種機(jī)制來(lái)存儲(chǔ)在斷電時(shí)仍要被記住的那些設(shè)置數(shù)據(jù)。例如,在更換電池后記不住預(yù)設(shè)電臺(tái)的收音機(jī)肯定不會(huì)在市場(chǎng)上取得很大的成功。用戶希望喜愛(ài)的電臺(tái)、預(yù)設(shè)溫度、參數(shù)選擇和其他永久性信息能長(zhǎng)久保存下來(lái)供每次開(kāi)機(jī)時(shí)直接取用。

為了滿足這種用戶需求,設(shè)計(jì)師一般使用串行EEPROM。這些器件又小又便宜,具有很長(zhǎng)的歷史,設(shè)計(jì)工程師用起來(lái)得心應(yīng)手。但在今天對(duì)成本極其敏感的市場(chǎng)下,即使這樣一個(gè)廉價(jià)的器件也可能突破成本預(yù)算。因此許多設(shè)計(jì)師試圖尋求并利用已經(jīng)包含在微控制器芯片中的資源:程序閃存中剩余的空間。

過(guò)去,許多微控制器使用ROM或可紫外線擦除的EPROM來(lái)存儲(chǔ)程序指令。但現(xiàn)在越來(lái)越多的微控制器轉(zhuǎn)用閃存技術(shù)存儲(chǔ)代碼。選擇閃存的主要理由是,如果在程序代碼中發(fā)現(xiàn)錯(cuò)誤,閃存數(shù)據(jù)很容易被擦除和更新。

大多數(shù)微控制器具有讀取程序空間中存儲(chǔ)數(shù)據(jù)的機(jī)制。基于馮·諾伊曼架構(gòu)的處理器,如TI MSP430,可以使用任何尋址模式讀取程序閃存。哈佛架構(gòu)處理器一般利用特殊的機(jī)制將數(shù)據(jù)從程序空間傳送到數(shù)據(jù)空間。具有閃存管理功能的其他MCU包括:

1. 包含MOVEC(移動(dòng)常數(shù))指令的非常流行的8051處理器系列;

2. 包含TBLRD和TBLWR(表讀和表寫)指令的Microchip PIC18系列;

3. 具有偽馮·諾伊曼架構(gòu)的美信MAXQ微控制器系列,它們?cè)试S通過(guò)簡(jiǎn)單的MOVE指令訪問(wèn)閃存程序存儲(chǔ)空間(見(jiàn)圖1)。

圖1:在像美信MAXQ2000這樣的偽馮·諾伊曼MCU中采用的數(shù)據(jù)交換允許任何存儲(chǔ)器塊被用作代碼或數(shù)據(jù)存儲(chǔ)器。

但即使能夠從隨機(jī)閃存位置讀取數(shù)據(jù),完整的非易失性存儲(chǔ)器子系統(tǒng)也必須能夠隨機(jī)修改閃存中的數(shù)據(jù)。這意味著需要解決兩個(gè)問(wèn)題:首先,一旦某個(gè)閃存位置被寫入,那個(gè)位置的數(shù)據(jù)只能通過(guò)擦除整個(gè)閃存塊(通常128字節(jié)或以上)進(jìn)行修改;其次,閃存的讀寫次數(shù)非常有限。

本文將介紹如何構(gòu)建一個(gè)能夠解決這些問(wèn)題、并使用閃存塊模擬隨機(jī)寫入的機(jī)制。雖然本文的用例是MAX2000,但原理適用于支持讀寫和擦除閃存的用戶代碼的任何處理器。本文討論的方案已經(jīng)被用于采用MAXQ3180三相模擬前端和MAXQ2000的三相電表參考設(shè)計(jì)。

閃存管理的基本知識(shí)

閃存是一種電可擦除的存儲(chǔ)器,通常主要用于讀操作,也就是說(shuō),雖然是可寫的,但它不希望很頻繁地更新數(shù)據(jù),因此對(duì)這種存儲(chǔ)器的操作大部分是讀操作。大多數(shù)閃存器件是以字(word)為單位寫入數(shù)據(jù)的,但一次只能擦除整個(gè)塊。這使得它們不適用于頻繁變化的存儲(chǔ)應(yīng)用,只適合存儲(chǔ)那些永遠(yuǎn)不變的常數(shù)表。

一共有兩種閃存:NAND閃存和NOR閃存。NAND閃存經(jīng)常用于存儲(chǔ)卡和閃盤。一般來(lái)說(shuō),從NAND器件讀取數(shù)據(jù)需要幾個(gè)周期,并且大部分是用串行方式完成的。

因此NAND閃存不適于存儲(chǔ)程序代碼,因?yàn)榇嫒r(shí)間太長(zhǎng)。而NOR閃存更像是傳統(tǒng)的字節(jié)或字寬的存儲(chǔ)器。可以像讀ROM器件那樣讀NOR閃存中的數(shù)據(jù):使片選和地址線有效,然后等待一段訪問(wèn)時(shí)間后從總線上讀取數(shù)據(jù)。

閃存塊通常被擦除到“1”狀態(tài),因此經(jīng)過(guò)擦除后,塊中的每個(gè)位置都是0xFFFF。“編程”一個(gè)閃存位置是把某些位從“1”狀態(tài)改變?yōu)?ldquo;0”狀態(tài)。為了使編程過(guò)的位返回到“1”狀態(tài),整個(gè)塊必須被擦除。

任何電可擦除的存儲(chǔ)器件都面臨壽命的問(wèn)題。根據(jù)所用技術(shù)的不同,一個(gè)閃存單元在永久失效以前可以承受的擦除-編程次數(shù)少則1000次,多則100萬(wàn)次。使用閃存存儲(chǔ)數(shù)據(jù)的任何方案都必須確保寫入次數(shù)在整個(gè)單元陣列上獲得均勻分布,沒(méi)有一個(gè)位置會(huì)出現(xiàn)太多的擦除和編程次數(shù)。

大多數(shù)閃存器件都允許將前次編程中那些未被編程的位從“1”改為“0”狀態(tài)。例如,大多數(shù)器件允許用0xFFFE編程過(guò)的那個(gè)位置再用0x7FFE進(jìn)行編程,因?yàn)檫@種操作不會(huì)將任何位從“0”改變到“1”。然而如圖1所示的處理器架構(gòu)中使用的閃存不允許這樣做。這種寫入操作的結(jié)果是失敗,內(nèi)存中的數(shù)據(jù)仍然是0xFFFE。

理由很簡(jiǎn)單:因?yàn)橐痪幊痰拇鎯?chǔ)塊主要用作代碼空間,通常禁止對(duì)前面寫過(guò)的位置作任何寫操作。因?yàn)橹噶?xFFFF代表的是無(wú)效的源子譯碼(source sub-decode),不可能出現(xiàn)在有效的代碼塊中。這樣,阻止向以前編過(guò)程的位置寫入數(shù)據(jù)有助于保持代碼塊的完整性。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
主站蜘蛛池模板: 欧美精品在线网站| 国产乱子夫妻xx黑人xyx真爽| 黄色国产精品一区二区三区| 日韩中文不卡| 91精品在线播放| 国产日本欧美视频| 国产自产在线视频一区| 国产精品揄拍500视频| 国产九九精品视频| 国产精品视频网站在线观看| 国产精品区免费视频| 国产传媒久久久| 伊人天天久久大香线蕉av色| 日韩中文字幕精品视频| 欧美激情综合色综合啪啪五月| 精品国产美女在线| 国产噜噜噜噜噜久久久久久久久 | 国产精品高潮在线| 国产精品尤物福利片在线观看 | 亚洲精品中文字幕在线| 日韩亚洲欧美视频| 久久免费一区| 国产精品视频不卡| 亚洲精品乱码视频| 久久久欧美一区二区| 国产精品美女在线播放| 亚洲精品tv久久久久久久久| 欧美精品亚洲精品| 国产精品久久久久久久久免费看| 91高清免费视频| 日本一区二区三区精品视频| 久久99久久亚洲国产| 国产精品久久久久久久久久久久| 亚洲视频导航| 精品国产依人香蕉在线精品 | 亚洲国产欧洲综合997久久| 日本不卡一区二区三区四区| 国产日韩在线视频| 亚洲国产一区二区三区在线播 | 国产www精品| 欧美在线一区二区三区四|