《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 微波|射頻 > 設(shè)計應(yīng)用 > 基于STM8S微處理器內(nèi)部EEPROM的數(shù)據(jù)存儲方法
基于STM8S微處理器內(nèi)部EEPROM的數(shù)據(jù)存儲方法
摘要: EEPROM(ElectricallyErasableProgrammableRead-OnlyMemory)指的是電子擦除式只讀存儲器,,它是一種非易失的存儲器,,供電消失后,,存儲的數(shù)據(jù)依然保留,,要擦除或改寫其中的內(nèi)容只要以電子信號的方式直接操作即可,。EEPROM廣泛應(yīng)用于單片機(jī)數(shù)據(jù)存儲領(lǐng)域,,主要形式是串行I2C總線控制獨(dú)立EEPROM元器件,。隨著單片機(jī)的集成度越來越高,,許多芯片廠家在單片機(jī)的內(nèi)部集成有一定數(shù)量的EEPROM存儲空間,,如Microchip,、ST等等,。
Abstract:
Key words :

  EEPROM" title="EEPROM">EEPROM(Electrically Erasable Programmable Read-Only Memory)指的是電子擦除式只讀存儲器,,它是一種非易失的存儲器,,供電消失后,存儲的數(shù)據(jù)依然保留,,要擦除或改寫其中的內(nèi)容只要以電子信號的方式直接操作即可,。EEPROM廣泛應(yīng)用于單片機(jī)數(shù)據(jù)存儲" title="數(shù)據(jù)存儲">數(shù)據(jù)存儲領(lǐng)域,主要形式是串行I2C總線控制獨(dú)立EEPROM元器件,。隨著單片機(jī)的集成度越來越高,,許多芯片廠家在單片機(jī)的內(nèi)部集成有一定數(shù)量的EEPROM存儲空間,如Microchip,、ST等等,。本文首先介紹了比較典型的串行EEPROM和集成EEPROM的單片機(jī)并比較了各自的優(yōu)點(diǎn)與缺點(diǎn),并在分析單片機(jī)數(shù)據(jù)存儲特點(diǎn)的基礎(chǔ)上引用實(shí)例說明如何采用STM8S" title="STM8S">STM8S內(nèi)置EEPROM設(shè)計數(shù)據(jù)存儲。

  1.器件簡介

  1.1.STM8S系列微處理器

  ST公司的STM8S系列通用8位微處理器" title="微處理器">微處理器采用STM8內(nèi)核,,具備真嵌入式EEPROM和可校準(zhǔn)RC晶振,,大大降低了產(chǎn)品的研發(fā)和生產(chǎn)成本。以STM8S105xx為例,,該微處理器是具備16MHz時鐘主頻的8位單片機(jī),。最大可提供32K字節(jié)ROM和2K字節(jié)RAM。其片內(nèi)的真EEPROM存儲器最大1K字節(jié),,至少可以擦寫循環(huán)30萬次,。同時具備四路定時器和豐富的外設(shè)接口,如UART,、SPI,、I2C等等。

  1.2.串行EEPROM

  串行EEPROM中,,較為典型的有ATMEL公司的AT24CXX系列產(chǎn)品,。AT24CXX支持I2C總線數(shù)據(jù)傳送協(xié)議,最高時鐘頻率400KHz,,器件連接到總線上串行器件不僅占用很少的資源和I/O線,,而且體積大大縮小,同時具有工作電源寬,、抗干擾能力強(qiáng),、功耗低、數(shù)據(jù)不易丟失和支持在線編程等特點(diǎn),。

  1.3.不同存儲方式的比較

  表1中羅列了三種不同存儲方式的不同,,由于片內(nèi)EEPROM和串行EEPROM的存儲介質(zhì)均為EEPROM,所以其擦寫的操作時間是差不多的,,不同之處是串行EEPROM在進(jìn)行寫操作時會受到I2C總線速度的影響。相比而言讀時間則是片內(nèi)器件占有優(yōu)勢,,因?yàn)槠瑑?nèi)EEPROM是直接訪問片內(nèi)地址的方式讀出數(shù)據(jù),,效率上比總線方式訪問會快很多。

  表 1兩種EEPROM的比較

  2.單片機(jī)存儲的特點(diǎn)

  單片機(jī)的數(shù)據(jù)存儲模式與一般計算機(jī)系統(tǒng)的有所不同,,主要特點(diǎn)有數(shù)據(jù)量一般不大,,很少每次刷新整個存儲區(qū)域,如果是作為記錄作用的單片機(jī)系統(tǒng),,一般數(shù)據(jù)呈線性方式增長,,少有刪除或插入的操作。另一方面,,單片機(jī)存儲對數(shù)據(jù)的安全性要求比較高,,要求至少有兩個以上的熱備份數(shù)據(jù)以防止意外造成的數(shù)據(jù)丟失。因此,在實(shí)際應(yīng)用場合時就需要考慮如下幾個方面的因素:存儲的數(shù)據(jù)量的大??;每次更新數(shù)據(jù)量的大小,;數(shù)據(jù)量更新的頻度,;是否為增量數(shù)據(jù)的存儲;對于數(shù)據(jù)校驗(yàn)和冗余的考慮,。

  3.應(yīng)用實(shí)例

  本節(jié)以應(yīng)用實(shí)例分析不同場合的數(shù)據(jù)存儲應(yīng)用,。以下應(yīng)用方案的主控單片機(jī)均采用STM8S105K4,片內(nèi)集成1K字節(jié)EEPROM存儲器,。

  3.1.智能電表應(yīng)用

  在智能電表應(yīng)用中的一個重要的問題就是數(shù)據(jù)的保存和數(shù)據(jù)的安全,,不僅要求數(shù)據(jù)要及時的保存而且要求所保存的數(shù)據(jù)不能有錯誤,所以重點(diǎn)需要考慮的是數(shù)據(jù)的冗余和校驗(yàn),。出于成本和數(shù)據(jù)安全的考慮,,可以采用兩種方案實(shí)現(xiàn)電量計量,一是當(dāng)電量有變化時周期性將當(dāng)前的電量存入EEPROM中,;二是只在意外斷電時將當(dāng)前電量存入EEPROM中,。第一種方案需要考慮的是EEPROM的擦寫次數(shù)是否能滿足使用要求。第二種方案需要考慮的是備用電源的供電時間能否滿足存儲時間的要求,。

  前一種方案,,單片機(jī)每隔10秒向EEPROM存入寫入一次當(dāng)前的電量,如果當(dāng)前電量與前一次寫入的值相等則不寫入以節(jié)約EEPROM的寫入壽命,。存儲時采用不固定的存儲地址,,從0地址開始每次寫入兩次數(shù)據(jù),占用8個字節(jié),,作為備份,。下次寫入時將寫入地址向后移動2個數(shù)據(jù)的寬度,即8個字節(jié),。循環(huán)寫入整個EEPROM的空間,,如此可以計算出(1024 * 300,000次) / 8 = 38,400,000次,每隔10秒存儲一次大約可以使用12年,。

  后一種方案,,單片機(jī)的ADC管腳連接電壓采集轉(zhuǎn)換,利用采集到的ADC值判斷當(dāng)前主電源的供給狀況,。一旦ADC值降低的某一閥值則認(rèn)為主電源斷電,,開始采用備用電源供給。備用電源采用大電容的方案,,單片機(jī)寫入雙備份8個字節(jié)的時間大約為50ms,,寫入時的電流約為2mA,,單片機(jī)的運(yùn)行電流(5V)約為8mA。假設(shè)電容從5V放電到3.8V,,通過計算可以得知0.05s * 0.01A / (5V - 3.8V) = 417uF,。故在系統(tǒng)的供電電源上并聯(lián)兩個470uF的電容即可完全滿足主電源掉電后的存儲電源供給。

  3.2.車載收音機(jī)應(yīng)用

  車載收音機(jī)的應(yīng)用方案需要考慮兩塊存儲空間的安排,,一塊是寄存 器表區(qū)域,,存儲收音機(jī)調(diào)諧器寄存器表的信息。數(shù)據(jù)量大約68個字節(jié),,這部分存儲信息在出廠時寫入后禁止修改,。一塊是用戶參數(shù)值區(qū)域,用于保存收音機(jī)運(yùn)行時用戶設(shè)置值的空間,。大約需要100個字節(jié),,其中包括開關(guān)機(jī)信息、收音機(jī)頻率信息,、音量音色信息等等,,存儲時不會一次刷新整片存儲區(qū)域,一般只會修改幾個字節(jié)的信息,。

 

  按照車載收音機(jī)存儲空間的安排,,可以將1K的EEPROM空間按照128個字節(jié)一塊的大小分割成8個塊。第0塊用于存儲寄存器表,,出廠時一次寫入后禁止改寫,。從第1塊到第7塊組成一個循環(huán)鏈表作為用戶數(shù)據(jù)的存儲,每次上電選擇相鄰的兩個塊作為當(dāng)前存儲空間,,下一次上電選擇的兩個存儲空間向后移一個,。如第一次上電選擇1、2兩個塊,,第二次上電選擇2,、3兩個塊,以此類推,,使得EEPROM的每個塊的擦寫次數(shù)平均化,。EEPROM空間分配如下圖1所示,開機(jī)流程如下圖2所示,,遍歷每個塊直到找到有效的塊并讀出上次斷電前存儲的設(shè)置值,如果直到第7塊都沒有找到有效塊則載入默認(rèn)值,。確定有效的設(shè)置值后初始化寫入主數(shù)據(jù)塊和備份數(shù)據(jù)塊一次,,程序運(yùn)行時如果有設(shè)置值的改變則依次修改主數(shù)據(jù)塊和備份數(shù)據(jù)塊。如果遇到意外斷電,,至少可以保證一個數(shù)據(jù)塊中的內(nèi)容是合法有效的,。

  圖 1存儲塊分配

  圖 2程序開機(jī)流程

  4.總結(jié)

  綜上所述,本文介紹了兩種常見的單片機(jī)存儲應(yīng)用實(shí)例,均通過STM8S內(nèi)置EEPROM實(shí)現(xiàn)存儲,。設(shè)計的方案符合設(shè)計要求并具備低成本,、抗干擾等優(yōu)點(diǎn),適用于一般單片機(jī)存儲的應(yīng)用,。

  參考文獻(xiàn):

  [1]STM8 CPU programming manual, STMicroelectronics, 2009.

  [2]How to program STM8S Flash program memory and data EEPROM, STMicroelectronics, 2009.

  [3]AT24WCxx DataSheet,,ATMEL,2000.

  [4]《一種延長EEPROM使用壽命的方法》,,《航空計算技術(shù)》1995年 第2期

  [5]《24系列串行EEPROM的正確選用》,,《電子技術(shù)(上海)》1998年 第2期

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。