新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 提高MSP430G系列單片機的Flash擦寫壽命的方法

提高MSP430G系列單片機的Flash擦寫壽命的方法

作者: 時間:2012-12-06 來源:網(wǎng)絡 收藏

2.2 劃分子頁方案

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

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

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

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

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

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

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

提高MSP430G系列單片機的Flash擦寫壽命的方法

2.2.1 軟件描述

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

提高MSP430G系列單片機的Flash擦寫壽命的方法
提高MSP430G系列單片機的Flash擦寫壽命的方法

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

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

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

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流程圖描述如下。

提高MSP430G系列單片機的Flash擦寫壽命的方法

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

pos機相關文章:pos機原理




評論


相關推薦

技術專區(qū)

關閉