MSP430單片機(jī)Flash存儲(chǔ)器的特性及應(yīng)用
以單片機(jī)為核心的儀表常要考慮發(fā)生突然掉電時(shí)的數(shù)據(jù)保存問題,一般有兩種對(duì)策:一是用后備電源維持單片機(jī)持續(xù)工作,稱為硬保護(hù);另一種是在檢測(cè)到掉電后,在電源完全失效前保護(hù)現(xiàn)場(chǎng)數(shù)據(jù),上電后再恢復(fù)工作,稱為軟保護(hù)。本文主要討論后者。
本文引用地址:http://m.butianyuan.cn/article/201611/320134.htm目前,設(shè)計(jì)掉電軟保護(hù)功能時(shí),數(shù)據(jù)存儲(chǔ)介質(zhì)常選用兩類:一類是E2PROM,但寫入時(shí)間較長(zhǎng),難以寫入較多數(shù)據(jù);另一類是帶有后備電池的小容量SRAM構(gòu)成的非易失性存儲(chǔ)器,寫入速度快,但增加了電路的復(fù)雜性。掉電電壓的檢測(cè)電路可用分立元件構(gòu)成,也可用專用芯片來實(shí)現(xiàn)。前者增加了電路復(fù)雜性且降低了系統(tǒng)可靠性;后者增加了成本。
TI公司的Flash型單片機(jī)MSP430F11x1系列、MSP430F13x系列和MSP430F14x系列具有片內(nèi)的Flash存儲(chǔ)器??梢杂糜趯?shí)現(xiàn)儀表的掉電數(shù)據(jù)保護(hù),同時(shí)可以簡(jiǎn)化系統(tǒng)結(jié)構(gòu),提高系統(tǒng)可靠性。
本文采用TI公司的Flash型16位超低功耗單片機(jī)MSP430F1121,利用其片內(nèi)的Flash存儲(chǔ)器和模擬比較器,只需外接1組分壓電阻進(jìn)行分壓取樣,即可實(shí)現(xiàn)系統(tǒng)的掉電軟保護(hù)。
一、
MSP430F11x1為20引腳,采用SOWB封裝,如圖1所示。它有14位具有中斷功能的I/O端口;有1個(gè)16位的WatchDog,可用作系統(tǒng)故障復(fù)位或定時(shí)器;有1個(gè)帶有3組捕捉/比較寄存器的16位定時(shí)器Timer_A。有1個(gè)模擬電壓比較器Compare_A;它的定時(shí)器和比較器功能豐富,可以實(shí)現(xiàn)多種用途。例如,外接電阻和電容后可以構(gòu)成1個(gè)高精度的A/D轉(zhuǎn)換器。
MSP430F13x和MSP430F14x同為64引腳,采用PQFP封裝,芯片為1cm2的正方形,如圖2所示。它有48位I/O端口;有1個(gè)16位的WatchDog;有2個(gè)帶有多組捕捉/比較寄存器的16位定時(shí)器Timer_A、Timer_B;有1個(gè)模擬比較器Compare_A;有1~2個(gè)串行接口;有1個(gè)12位的多通道A/D轉(zhuǎn)換器。F14x還具有1個(gè)硬件乘法器,可實(shí)現(xiàn)16位乘16位的操作。
二、
Flash型單片機(jī)的工作電壓為1.8~3.6V??赏饨?2kHz~8MHz晶振,并由內(nèi)部DCO振蕩器實(shí)現(xiàn)主時(shí)鐘。有5種低功耗模式,在2.2V、32kHz晶振、1MHz主頻、活動(dòng)模式時(shí)工作電流為160μA;當(dāng)僅保持RAM數(shù)據(jù)時(shí)為0.1μA。它的Flash存儲(chǔ)器使用尤為方便。
F1121片內(nèi)除256B RAM外,還有4KB+256B的Falsh存儲(chǔ)器。Flash存儲(chǔ)器為分段結(jié)構(gòu),分為主存儲(chǔ)器(main memory)和信息存儲(chǔ)器(information memory),如圖3所示。F13x和F14x的片內(nèi)存儲(chǔ)容量更大,RAM在256B到2KB之間,F(xiàn)lash儲(chǔ)存器在8KB到60KB之間,也包含主存儲(chǔ)器和信息存儲(chǔ)器,分段方法及控制方法與F1121相同。
Flash存儲(chǔ)器主要用作程序存儲(chǔ)器,可經(jīng)JTAG接口下載程序。程序運(yùn)行時(shí)能對(duì)其中的1段或多段進(jìn)行擦/寫操作,因此兼有數(shù)據(jù)存儲(chǔ)器功能。Flash存儲(chǔ)器的擦/寫次數(shù)為105次,數(shù)據(jù)在室溫下可保存100年。
以下針對(duì)具體的應(yīng)用,詳細(xì)介紹F1121的Flash存儲(chǔ)器用法。
1
Flash存儲(chǔ)器按段分布:主存儲(chǔ)器每段為512個(gè)字節(jié),共8段(0~7段);信息存儲(chǔ)器每段為128個(gè)字節(jié),共2段(A,B段)。最小擦除單位為1段。主存儲(chǔ)器和信息存儲(chǔ)器的特性除分段大小外基本相同。
2
有3個(gè)16位控制寄存器:FCTL1,F(xiàn)CTL2,F(xiàn)CTL3。為了防止誤操作,寫入時(shí)高字節(jié)必須為0A5H,但讀出時(shí)為096H。
(1)
定義對(duì)Flash存儲(chǔ)器的擦/寫操作。
Erase 和MEras 位控制擦除操作,置位后,往定義的區(qū)域范圍內(nèi)任一地址進(jìn)行寫操作(寫入任意數(shù))后該段即被擦除。前者每次只擦除一段,后者擦除所有段。
WRT和SEG WRT位控制寫操作:前者每次寫1個(gè)字節(jié),后者可在段內(nèi)連續(xù)寫入。
(2)
定義Flash時(shí)鐘發(fā)生器的時(shí)鐘源和頻率,一般可取上電復(fù)位時(shí)的缺省值。
(3)
指示對(duì)Flash存儲(chǔ)器操作過程中的出錯(cuò)狀態(tài)。
其中,較重要的是BUSY位,置位表示不能對(duì)Flash存儲(chǔ)器操作;否則會(huì)出錯(cuò)。在每次進(jìn)行擦/寫操作前都要測(cè)試該位。
3
進(jìn)行擦/寫操作的編程電壓(VPP)由片內(nèi)產(chǎn)生;擦/寫時(shí)鐘由Flash時(shí)鐘發(fā)生器產(chǎn)生。在擦/寫時(shí)不能有中斷產(chǎn)生,也不能執(zhí)行位于將被擦/寫區(qū)域的程序。如果想要保留原數(shù)據(jù),應(yīng)在擦除前先把數(shù)據(jù)轉(zhuǎn)存入RAM中,擦除后再寫回。
擦除時(shí),先在FCTL2中設(shè)定時(shí)鐘;如果沒有特殊要求,可用上電時(shí)的缺省值。然后測(cè)FCTL3的BUSY位。等到BUSY復(fù)位,在FCTL1中設(shè)定Erase(1段擦除)或MEras位(多段擦除),再往目標(biāo)地址范圍內(nèi)任一地址寫入任意數(shù)據(jù)后,即完成對(duì)這一段的擦除。
寫入操作類似于擦除操作,只是往目標(biāo)地址中寫入的是實(shí)際值。
對(duì)Flash存儲(chǔ)器的讀操作與RAM和ROM完全一樣。
三、
1.
掉電保護(hù)功能是針對(duì)一個(gè)工業(yè)時(shí)間繼電器設(shè)計(jì)的,有關(guān)部分的電路如圖4所示。電源電壓為5V,穩(wěn)壓電壓為3.3V加至F1121的VCC。比較器A的反向輸入端(P2.4)取自分壓電阻(圖中分壓值為20V);同向輸入端為參考電壓,設(shè)為內(nèi)部電壓(由軟件設(shè)定,這里為VCC/2,即1.65V)。正常工作時(shí)比較器A輸出為低,由圖中參數(shù)可算出。當(dāng)電源電壓降為4.125V時(shí),VCC仍穩(wěn)定在3.3V;但比較器A輸出將翻轉(zhuǎn),產(chǎn)生中斷。
Flash存儲(chǔ)器寫入時(shí)電壓必須保持在2.7~3.6V,因此2.7V是處理的下限。1段(512個(gè)字節(jié))的寫入時(shí)間為3ms。據(jù)此,可選擇合適的電容,由RC放電電路可得:
式中,V0= 3.3V,V(t)=2.7V,t=3ms,R=5MΩ,則:
經(jīng)實(shí)際測(cè)試,在取C=1μF時(shí)即能正常工作。為可靠起見,可取C=10μF。如果寫入的數(shù)據(jù)較多,需要更長(zhǎng)的處理時(shí)間,可以加大電容容量,并在供電回路中串接二極管,以限制反向放電。
從正常工作狀態(tài)到臨界狀態(tài),電壓有0.875V(5.0V-4.125V)的緩沖,因此,電源電壓的變動(dòng)將不會(huì)引起誤操作。
2.
程序分為上電復(fù)位初始化程序和掉電中斷處理程序,如圖5及圖6所示。
程序初始化時(shí),必須先讀取掉電保護(hù)標(biāo)志來決定程序流向,然后把掉電標(biāo)志復(fù)位。在中斷處理程序中,對(duì)Flash存儲(chǔ)器寫入數(shù)據(jù)前都應(yīng)先擦除標(biāo)志所在區(qū)域;但為節(jié)省中斷處理時(shí)間,可在初始化時(shí)預(yù)先進(jìn)行擦除操作,以備下一次的掉電處理寫入。
掉電處理程序中必須完成兩件事:掉電保護(hù)標(biāo)志置位(也應(yīng)寫在Flash存儲(chǔ)器中);將待保護(hù)數(shù)據(jù)寫入Flash存儲(chǔ)器中。一般可把數(shù)據(jù)存入信息存儲(chǔ)器中,如果數(shù)據(jù)量大,可寫入沒有被程序占用的主存儲(chǔ)器中。寫入時(shí)要關(guān)閉所有中斷,同時(shí)對(duì)原系統(tǒng)當(dāng)前執(zhí)行的程序作相應(yīng)的現(xiàn)場(chǎng)保護(hù)處理。
應(yīng)用掉電保護(hù)功能的工業(yè)時(shí)間繼電器,需保存16字節(jié)預(yù)置參數(shù)和16字節(jié)掉電瞬間運(yùn)行狀態(tài)參量以及1字節(jié)的掉電保護(hù)標(biāo)志,即總的保存數(shù)據(jù)為33字節(jié)。其中,16字節(jié)的預(yù)置參數(shù)在運(yùn)行過程中設(shè)定,同時(shí)已寫入B段中。因此,中斷處理程序只須將17字節(jié)的狀態(tài)參量寫入A段中。經(jīng)多次實(shí)際斷電試驗(yàn),工業(yè)時(shí)間繼電器均能在重新上電時(shí)正確恢復(fù)斷電時(shí)的保護(hù)數(shù)據(jù)。
參考文獻(xiàn)
1
評(píng)論