www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導讀]摘要在嵌入式設計中,許多應用設計都需要使用EEPROM 存儲非易失性數(shù)據(jù),由于成本原因,某些單片機在芯片內部并沒有集成EEPROM。MSP430G 系列處理器是TI 推出的低成本16 位處理器,在MSP430G 系列單片機中并不具備EE

摘要

在嵌入式設計中,許多應用設計都需要使用EEPROM 存儲非易失性數(shù)據(jù),由于成本原因,某些單片機在芯片內部并沒有集成EEPROM。MSP430G 系列處理器是TI 推出的低成本16 位處理器,在MSP430G 系列單片機中并不具備EEPROM。為了存儲非易失性數(shù)據(jù),MSP430G 系列處理器在芯片內部劃分出了256 字節(jié)的Flash 空間作為信息Flash,可用于存儲非易失性數(shù)據(jù),但是由于Flash 與EEPROM 在擦寫壽命上存在一定差距,所以在實際應用中,這種應用方式并不能夠滿足所有客戶的需求。本應用筆記介紹了使用代碼區(qū)域Flash 來模擬EEPROM,通過一定的軟件處理算法,可以大大增加數(shù)據(jù)存儲周期的一種方法。本文給出了實現(xiàn)上述功能的軟件流程。

1. 嵌入式Flash 存儲介質與EEPROM 的主要特性對比

電可擦除和編程只讀存儲器(EEPROM)是在絕大多數(shù)嵌入式應用中都會使用到的用于保存非易失性數(shù)據(jù)的關鍵器件,用于在程序運行期間保存數(shù)據(jù)。Flash 閃存(Flash Memory,簡稱為"Flash")是一種非易失性( Non-Volatile )存儲器,廣泛應用于各種嵌入式處理器中,用于存儲程序代碼。

由于硬件成本原因,在許多嵌入式處理器中并沒有集成EEPROM 模塊,通常我們可以采用在片內Flash 存儲器中保存非易失性數(shù)據(jù)的應用方式來達到使用要求。對一些普通的應用場合,這種使用方式可以滿足要求。

表一 EEPROM與Flash 對比分析

1.1 寫訪問時間

由于EEPROM 和Flash 的工作特性不同,所以寫訪問時間也不相同。Flash 具有更短的寫訪問時間,所以更適用于對存儲速度有要求的場合。

1.2 寫方法

外置EEPROM和采用Flash 模擬EEPROM的最大不同之處在于寫的方法。

EEPROM:對EEPROM 的寫操作不需要額外的操作,只需要提供電源供給;但是一旦啟動寫操作流程后,寫操作不能夠被打斷。所以需要外接電容器等措施來保證在芯片掉電時能夠維持供電,保證完成數(shù)據(jù)操作。

Flash 模擬EEPROM:當芯片上電后,寫操作可以被電源掉電和芯片復位打斷。和EEPROM 相比,需要應用設計者增加相關的處理來應對可能存在的異常。

1.3 擦寫時間

EEPROM和采用Flash 模擬EEPROM在擦除時間上存在很大的差異。

與Flash 不同,EEPROM 在進行寫操作之前不要擦除操作。由于Flash 需要幾個毫秒時間進行擦除操作,所以如果在進行擦除操作的過程中出現(xiàn)電源掉電的情況,需要軟件做相關的保護處理。為了設計一個健壯的Flash 存儲器的管理軟件,需要深入的了解和掌握Flash 存儲器的擦除過程特性。

2. 增加Flash 模擬EEPROM 擦寫壽命的方法

可以根據(jù)用戶的需求采用不同的方法實現(xiàn)Flash 存儲器模擬EEPROM。

2.1 虛擬地址加數(shù)據(jù)方案

通常需要兩個頁以上的Flash 空間來模擬EEPROM。上電后,初始化代碼先查找出有效頁,同時將另外一個頁初始化為擦除狀況,以提供字節(jié)寫的能力,并用作備份和隨時準備執(zhí)行寫入操作。需要存儲EEPROM 的變量數(shù)據(jù)首先寫入有效頁,當有效頁寫滿后,需將所有數(shù)據(jù)的最后狀態(tài)保存到備份頁,并切換到備份頁進行操作。每一頁的第一個字節(jié)通常用來指示該頁的狀態(tài)。

每個頁存在3 種可能狀態(tài):

擦除態(tài):該頁是空的。

已寫滿數(shù)據(jù)狀態(tài):該頁已經(jīng)寫滿數(shù)據(jù),準備切換到下一個頁進行操作。

有效頁狀態(tài):該頁包含著有效數(shù)據(jù)并且標示狀態(tài)尚未改變,所有的有效數(shù)據(jù)全部拷貝到了已經(jīng)擦除的頁。

下圖以采用兩個頁模擬EEPROM的方式為例,描述了頁狀態(tài)字的在頁0 和頁1 之間的切換過程。

采用這種方式,用戶不知道數(shù)據(jù)刷新的頻率。

下面的圖例以采用兩個頁模擬EEPROM 的應用方式為例進行描述。為了方便獲取模擬EEPROM數(shù)據(jù)和更新數(shù)據(jù)內容,每個存儲變量元素都在Flash 里定義了一個操作單元,在該操作單元中對每個存

儲變量元素都分配一個虛擬操作地址,即一個EEPROM 操作單元包含一個虛擬地址單元和一個數(shù)據(jù)單元。當需要修改數(shù)據(jù)單元內容時,新的數(shù)據(jù)內容和之前分配的虛擬地址一同寫入一個新的模擬EEPROM存儲器單元中,同時返回最新修改的數(shù)據(jù)內容。EEPROM存儲單元格式描述如圖二。

使用虛擬地址加數(shù)據(jù)的方案總結如下。

• 為每一個目標存儲變量分配一個虛擬地址,該虛擬地址需一同存入Flash 中。當讀取存儲變量內容時,需根據(jù)該變量的虛擬地址搜索虛擬EEPROM并返回最后更新的內容。

• 在軟件處理上,需要記錄下一次寫入的物理目的地址;在每一次執(zhí)行寫入操作后,根據(jù)EEPROM存儲單元大小(操作粒度),將目的操作指針自動累加。

• 當一個頁(Page)寫滿后,需要將所有變量的EEPROM數(shù)據(jù)拷貝到下一個頁,再執(zhí)行該頁的擦除操作。

• 在嵌入式軟件處理上需加入合適的校驗機制,保證寫入數(shù)據(jù)的正確性并監(jiān)Flash 是否已經(jīng)失效。

2.2 劃分子頁方案

在Flash 中劃分出至少2 個頁(Page)用作模擬EEPROM,根據(jù)應用需求將需寫入EEPROM 進行保存的變量數(shù)據(jù)劃分成一個定長的數(shù)組(子頁),例如16 個字節(jié)或者32 字節(jié),將頁劃分成若干子頁后,需對Flash 中的所有子頁按照地址順序進行逐次編號。每個子頁的第一個字節(jié)通常用來指示該子頁的狀態(tài),子頁狀態(tài)可以為:空、已寫入或者失效。

在芯片上電初始化時,首先查找出第一個尚未寫入數(shù)據(jù)的子頁,并進行標識,在進行寫EEPROM操作時,應用程序需將待寫入EEPROM 子頁的所有數(shù)據(jù)按照事先約定好的順序整理好,再一次性將所有變量數(shù)據(jù)寫入空的子頁中,最后將模擬EEPROM 的操作指針指向下一個空閑的子頁,等待下一次寫入。待將一個頁的數(shù)據(jù)寫滿后,再進行一次擦除操作。需要處理好指向子頁的指針的跳轉。

每個頁存在3 種可能狀態(tài):

擦除態(tài):該頁是空的。

已寫滿數(shù)據(jù)狀態(tài):該頁已經(jīng)寫滿數(shù)據(jù)。

有效頁狀態(tài):該頁包含著有效數(shù)據(jù)并且該頁尚未寫滿,仍可向子頁寫入數(shù)據(jù)。

圖三介紹了使用子頁的方式實現(xiàn)Flash 模擬EEPROM的數(shù)據(jù)處理方法。

2.2.1 軟件描述

在軟件實現(xiàn)上,為了便于軟件處理,建議定義一些關鍵宏定義和結構體,指定Flash 模擬EEPROM 的起始、結束地址、頁的大小、子頁的大小、每個頁的子頁數(shù)目等參數(shù),同時將需要操作的參數(shù)封裝起來,便于軟件操作和管理,不建議定義許多離散的標志變量。

在軟件操作上,F(xiàn)lash 模擬EEPROM模塊需要提供幾個API 接口給應用程序調用。

• 通過typedef 關鍵字定義設備類型,typedef unsigned char u8;

• ChkFstPowerOnInfo()用于檢測芯片是否為第一次上電并初始化EEPROM 參數(shù)到內存,原型如下。

Void ChkFstPowerOnInfo(void);

• FlashWrite()用于寫Flash,傳遞的形參包括指向待寫入數(shù)據(jù)的指針,待寫入數(shù)據(jù)在子頁中的起始字節(jié)編號,寫入數(shù)據(jù)的長度,原型如下。

void FlashWrite( u8 *array, u8 startNum, u8 length );

• FlashErase()用于擦除Flash,傳遞的形參是子頁的編號,在擦除函數(shù)中需要根據(jù)子頁的編號判斷是否需要執(zhí)行頁的擦除操作,原型如下。

void FlashErase(u8 seg_sn);

2.2.2 軟件流程圖

軟件啟動后,初始化模擬EEPROM流程圖描述如下。

調用API,向模擬EEPROM 寫入數(shù)據(jù)的軟件流程如圖五所示。在軟件處理中,要特別注意目標指針的切換和保證寫入數(shù)據(jù)的正確性,在代碼空間允許的情況下,可以增加一些校驗算法來保證。

采用劃分子頁的方案總結如下。

• 每次寫入模擬EEPROM的數(shù)據(jù)長度為定長,即為子頁的長度。

• 軟件需要定義一個存儲變量結構體,用于刷新和同步模擬EEPROM內容。在將數(shù)據(jù)寫入模擬EEPROM之前,程序員需要按照約定的數(shù)據(jù)格式,在內存中將所有的目標存儲變量進行整理。

• 在軟件處理上,需要計算當前寫入和下一次寫入的物理地址;在每一次執(zhí)行寫入操作后,根據(jù)子頁長度大小,將指向子頁的目的操作指針自動累加。

• 待一個頁(Page)寫滿后,需要將最后更新的模擬EEPROM數(shù)據(jù)拷貝到下一個頁,再對寫滿頁執(zhí)行一次擦除操作。

• 在嵌入式軟件處理上需加入合適的校驗機制,保證寫入數(shù)據(jù)的正確性并監(jiān)測用于模擬EEPROM功能的Flash 子頁是否已經(jīng)失效。

2.3 兩種方案的對比分析

兩種方案的對比分析見表二。

表二 兩種方案的對比分析

3. 實際的嵌入式應用

根據(jù)軟件需要,建議采用字節(jié)(8bit)做為操作的最小粒度,適用性會更廣泛。

3.1 Flash 存儲器擦寫壽命的提升

對于MSP430G 系列的Flash 存儲器,可以保證至少10000 次的編程和擦除壽命。如圖六所示。

圖六 MSP430G 系列單片機Flash 編程和擦除壽命

采用劃分小頁結合至少分配2 個大頁的操作方式,則可以大大增加Flash 模擬EEPROM 的擦寫壽命。例如,對于MSP430G 系列單片機,如果將每個小頁的尺寸劃分為16 字節(jié),采用2 個大頁(每頁512 字節(jié))作為模擬EEPROM 使用,則可以提供64 個操作子頁((512/16)x2=64),可以保證至少640000 次的擦寫壽命。

3.2 掉電時的異常處理

如果正在進行Flash 數(shù)據(jù)存儲時發(fā)生掉電,數(shù)據(jù)可能會保存不成功,存在異常。為了增強健壯性,在軟件處理上,需要考慮設備異常掉電等可能會導致Flash 擦寫失敗的情況。

在軟件處理中,當成功保存Flash 數(shù)據(jù)后,再寫入該子頁的狀態(tài)標志。單片機上電后,用戶程序將查找最后一次寫入的子頁,再將該子頁的數(shù)據(jù)內容并恢復到內存中的數(shù)據(jù)結構中。

4. 系統(tǒng)可靠性設計

4.1 時鐘源的選擇

由于驅動Flash 的時鐘源(ACLK、MCLK、SMCLK)和時鐘頻率可以設定,為了保證在將數(shù)據(jù)寫入模擬EEPROM時的可靠性,建議在將Flash 的時鐘頻率降低后,再對其進行操作。例如將Flash 的時鐘頻率降低到1MHz 后,進行寫入操作。需要注意,在降低了時鐘頻率后,若此時鐘源也是定時器(Timer)的時鐘源,則可能會影響到定時器的定時準確性,需要軟件上做好處理。

4.2 代碼在RAM中運行

由于向Flash 寫入數(shù)據(jù)操作是通過執(zhí)行Flash 中程序代碼,對Flash 進行擦除和編程操作。由于對Flash 的編程需要mcu 內部執(zhí)行一個升壓操作,所以如果有足夠的內存空間,建議將編程、擦除等關鍵代碼拷貝到RAM中運行,可以使用關鍵字__ramfunc 指定,如下圖七所示。

圖七 使用關鍵字__ramfunc 將程序指定到Ram 中運行

5. 總結

本文從軟件方面,以及安全性方面探討了使用MSP430G 系列單片機在使用Flash 模擬EEPROM方面的應用,提供了兩種不同的方式供選擇。兩種方式都可以大幅度提高模擬EEPROM的編寫、擦除壽命,并且滿足高可靠性的應用設計,用戶可以結合具體的應用進行選擇。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據(jù)LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉
關閉