1. 哪些情況需要用到掉電保護功能
在大多數工控應用中,由于各種復雜的環境因素,使工控設備不可避免的會面臨供電突然斷掉的情況。為了可以保證系統運行狀態確定性以及記錄數據完整性,當系統供電恢復后,現場數據可以及時恢復,避免應用系統產生混亂。為了保證保存數據的實時性,現場數據的存儲頻率還會非常高,因此還要求數據保存的速度應足夠快,從而不影響應用程序的正常運行。
對目前的非易失性存儲器,NandFlash、NorFlash、EEPROM,有一定的擦寫壽命限制,而且寫入速度也不高,不利于現場數據實時保存。但是成本較低。
對于一些成本較高的非易失性存儲器,例如鐵電存儲器,不利于降低產品的成本;而且容量也不大。
對目前的易失性存儲器如DDR,數據寫入和讀取速度都非常的高,不過掉電后,數據將會全部掉失。如果使用一個后備電池的話,使得DDR一直通電,數據就不會掉失。但是電池有充電和放電時間,使用壽命的限制。也不利于產品的維護和降低成本。
因此本文提出一種“NandFlash + DDR + 法拉電容(又叫超級電容)”的低成本,高可靠性的解決方案。NandFlash(SLC)具有擦除次數高,達10萬次,數據存儲時間長,成本低等特點,被大多數嵌入式工控機所使用。
2. 實現的原理
如果能預知掉電的發生,并能夠利用超級電容繼續為最小系統供電2秒鐘。側可以在有外電時把實時性比較高的數據保存在內存DDR里。獲得掉電發生時,在超級電容供電的2秒鐘里,把內存的一些重要的數據和現場運行狀態數據打包成文件保存到NandFlash存儲器。以保證工控設備在供電回復后能繼續正常運行。基于這個原理廣州市微嵌計算機科技有限公司生產的8寸WINCE工業平板電腦(WLT_TFT8060_080)已經實現了這個掉電保護功能。只需要在購買時選配這個掉電保護模塊就可以了。
上圖中的+5V為外部供電電源,+3.3V給CPU、NandFlash和DDRII 供電,C3為超級電容(法拉電容)。外部供電后,D3導通前,通過R1,R2充電;D3導通后,通過R1、D3快速通電;電容電壓上升到4.7V左右后,通過R1、R2緩慢充電。+5V系統掉電時, U1是一個復位芯片,電壓低于4.2V后,RST腳立刻產生一個低電平通知CPU,同時 C3通過D2放電,維持核心系統工作至少2S。CPU可以有2S以上的時間充分保存現場的數據。
4. 軟件的編程
本公司提供一個動態庫“PwLostSave.dll”,用戶只需要在應用程序中使用該庫的兩個函數即可。
“PwLostSave.dll”的函數定義在“PwLostSave.h”頭文件中。提供了兩個函數:
BOOL InitPowLostSave(void (*lpfnNotify)(void), DWORD dwpriority);
功能說明:注冊和初始化掉電通知功能,該函數只能執行一次。
BOOL CheckPowerOn(DWORD dwChkTimes);
功能說明:用于檢測外部電源是否重新供電。一般用于 用戶編寫的函數lpfnNotify(回調函數)中。
5. 軟件說明
一般掉電保護是強實時性的任務,可以通過觸發中斷的方式來獲得Windows CE操作系統的服務。
用戶在回調函數“lpfnNotify”中實現自己編寫的掉電處理程序即可。
6. 總結
使用廣州市微嵌計算機科技有限公司生產的8寸WINCE工業平板電腦(WLT_TFT8060_080),測試結果如下。在上電2分鐘后,電容充電,掉電后可以保存到Nandflash的數據大小約為800Kb;上電10分鐘后,電容充分充電,可以保存到Nandflash的數據大小約為3Mb。當然,如果用戶在回調函數“lpfnNotify”中處理過多的內容,則影響保存數據量。
對于實時采集數據的用戶來說,應先將數據保存到DDR中,當達到一定大小,例如1M,立刻將數據寫入到NandFlash。系統掉電時候,將剩余的數據在“lpfnNotify”中保存到NandFlash即可。
技術支持企業QQ:800005447
附件:
新款WLT_TFT8060_080使用說明.pdf http://dl.dbank.com/c0glnjhjz3