廣東工業(yè)大學(xué) 楊應(yīng)志 鐘其源 許錦標(biāo)
基于STM32斷電保護(hù)的研究與分析
廣東工業(yè)大學(xué) 楊應(yīng)志 鐘其源 許錦標(biāo)
以STM32F103ZET單片機(jī)為例,通過(guò)對(duì)幾種掉電保護(hù)方法的分析對(duì)比,詳細(xì)地介紹了其掉電保護(hù)電路的設(shè)計(jì)原理及硬、軟件實(shí)現(xiàn)方法,并分析了該系統(tǒng)的可靠性。
STM32;單片機(jī);掉電保護(hù)
以單片機(jī)為核心的控制系統(tǒng)終端已廣泛應(yīng)用于很多領(lǐng)域,而對(duì)于系統(tǒng)運(yùn)行中所采集或產(chǎn)生的數(shù)據(jù)常常要求在電源掉電時(shí)不被丟失,重新加電后系統(tǒng)能恢復(fù)原來(lái)的工作狀態(tài)。掉電保護(hù)通常有2種方法:1、加備用電源(如:電池),使系統(tǒng)在掉電后仍能正常工作;2、不采用備份電源,使用法拉電容[1]的延遲放電特性,使得系統(tǒng)在掉電時(shí)將需要保護(hù)的數(shù)據(jù)存儲(chǔ)到非易失存儲(chǔ)器(如:FLASH)中。
對(duì)于這兩種方法,各有其優(yōu)缺點(diǎn),第1種方法由于使用電池,電源掉電時(shí)可保存大量數(shù)據(jù),但需有相應(yīng)的充放電電路,成本也相應(yīng)的高,其使用壽命于電池充放電次數(shù)相關(guān)。第2種方法,電路搭建簡(jiǎn)單,電容的充放電次數(shù)大于電池,但由于是使用電容作為儲(chǔ)能元件,系統(tǒng)在掉電后能繼續(xù)運(yùn)行的時(shí)長(zhǎng)受限于系統(tǒng)電路的功耗以及電容的容量;對(duì)于一般的工業(yè)控制、數(shù)據(jù)量較小的,該方法完全能夠勝任。本研究采用STM32F103ZET作為主控芯片,使用第2種掉電保護(hù)方法,使得系統(tǒng)在掉電時(shí),能存儲(chǔ)不低于16K字節(jié)的數(shù)據(jù)到芯片內(nèi)部FLASH[2]。
2.1 基于STM32系統(tǒng)硬件電路
本研究所搭建的硬件電路主要組成元件有STM32F103ZET芯片、MAX809L掉電檢測(cè)芯片、法拉電容,其電路圖如2-1所示。
2.2 STM32F103ZET簡(jiǎn)介
STM32F103ZET基于ARM32位的Cortex-M3內(nèi)核,最高72MHz工作頻率,在存儲(chǔ)器的0等待周期訪問(wèn)時(shí)可達(dá)1.25DMips/MHZ,512K字節(jié)的閃存程序存儲(chǔ)器,64KB RAM,LQFP-144腳封裝。
對(duì)于設(shè)計(jì)掉電保護(hù)系統(tǒng)所涉及的芯片參數(shù)主要有三點(diǎn):
(1)芯片工作電壓,STM32的工作電壓(VDD)為2.0~3.6V。
(2)芯片的功耗,STM32F103ZET的最大電流IVDD=150mA(該值是流進(jìn)VDD/VDDA的電流值)。
(3)芯片內(nèi)部FLASH讀寫速度,寫入16位數(shù)據(jù)最大時(shí)間為70uS,擦除1頁(yè)(2k字節(jié))最大時(shí)間為40mS。
2.3 MAX809L掉電檢測(cè)特性
圖2-1 掉電保護(hù)硬件電路
MAX809L是一種檢測(cè)芯片,常常用來(lái)監(jiān)控?cái)?shù)字電路電源,且其具有很高的穩(wěn)定性和較低的功耗。
MAX809L在本系統(tǒng)當(dāng)中主要是檢測(cè)5V外部電源,當(dāng)5v電源掉電跌至4.65v時(shí),MAX809L的reset端會(huì)變?yōu)榈碗娖剑ㄏ到y(tǒng)正常供電時(shí)是高電平),而這時(shí)STM檢測(cè)到該信號(hào),開(kāi)始數(shù)據(jù)保存。
根據(jù)以上數(shù)據(jù)資料,計(jì)算系統(tǒng)在2~4.65v之間電容的放電時(shí)間,根據(jù)電容充放電公式[3],留有一定時(shí)間裕量,本系統(tǒng)選用1F的電容作為掉電后維持系統(tǒng)運(yùn)行的儲(chǔ)能元件。
為測(cè)試掉電保護(hù)系統(tǒng)的可靠性,將STM32的外部輸入PE1(圖2-1中用來(lái)檢測(cè)掉電的接口)設(shè)置為中斷形式,且搶占優(yōu)先級(jí)設(shè)置為最高優(yōu)先級(jí),使得系統(tǒng)在掉電時(shí)第一時(shí)間進(jìn)入中斷保存數(shù)據(jù)。具體軟件流程圖如圖3-1所示,系統(tǒng)在進(jìn)入中斷后,先擦除8頁(yè)的FLASH,然后寫數(shù)據(jù)進(jìn)入這8頁(yè)數(shù)據(jù)(本實(shí)驗(yàn)填充的是FF),接著進(jìn)入死循環(huán),即每500ms反轉(zhuǎn)一次LED
圖3-1 掉電系統(tǒng)測(cè)試流程圖
通過(guò)觀測(cè)LED閃爍的次數(shù),可得出在系統(tǒng)保存完16K字節(jié)數(shù)據(jù)后最大時(shí)長(zhǎng)25s的時(shí)間裕量。對(duì)于此處時(shí)間裕量只有最大值是由于系統(tǒng)在掉電后能運(yùn)行的時(shí)間主要是與電容存儲(chǔ)的電量相關(guān),在實(shí)際的應(yīng)用中可對(duì)系統(tǒng)的上電運(yùn)行做個(gè)延時(shí),以便電容存儲(chǔ)夠相應(yīng)的電量后進(jìn)入主程序,而對(duì)于中斷程序則添加檢測(cè)到系統(tǒng)完成電容充電后才會(huì)進(jìn)行保存工作(以5v/2A的外部電源為例,本系統(tǒng)上電延時(shí)10秒后可確保16K字節(jié)數(shù)據(jù)的保存)。
[1]江健琦.法拉電容在掉電保護(hù)中的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2007(6):49-50.
[2]郝雯,沈金鑫,梅成等.基于STM32單片機(jī)的存儲(chǔ)式數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2013,21(17):80-82
[3]王剛,李桂林.基于電容充放電原理的納秒級(jí)時(shí)間精度測(cè)量技術(shù)[J].化工自動(dòng)化及儀表,2010,37(8):69-71.
楊應(yīng)志,海南人,廣東工業(yè)大學(xué)碩士研究生,研究方向:智能樓宇。
鐘其源,廣東人,廣東工業(yè)大學(xué)碩士研究生,研究方向:智能樓宇。
許錦標(biāo),廣東工業(yè)大學(xué)教授,研究方向:智能樓宇。
Taking STM32F103ZET microcontroller as an example,analy zing and contrasting several power-fail protection circuits,the paper discusses the entire system from hardware and software,and analyzes it's credibility in detail.
STM32;microcontroller;power-fail protection circuits