大家在GD32 MCU應(yīng)用時,是否會碰到以下應(yīng)用需求:希望在MCU掉電時保存一定的數(shù)據(jù)或標(biāo)志,用以記錄一些關(guān)鍵的數(shù)據(jù)。
以GD32E103為例,數(shù)據(jù)的存儲介質(zhì)可以選擇內(nèi)部Flash或者備份數(shù)據(jù)寄存器。
如下圖所示,片內(nèi)Flash具有10年的保存壽命,10萬次擦寫,頁擦除時間在3.5ms,字寫入時間在40us左右,F(xiàn)lash特性決定Flash需要先擦后寫,擦寫要求的電壓范圍為供電范圍:1.8V-3.6V.
GD32 MCU基本都支持備份數(shù)據(jù)寄存器,GD32E103系列支持84字節(jié)數(shù)據(jù)寄存器,可以在VDD掉電,VBAT有電的情況下進(jìn)行數(shù)據(jù)保存,備份數(shù)據(jù)寄存器不需要擦除可以直接寫入,數(shù)據(jù)更新速度較快。
下面為大家介紹數(shù)據(jù)掉電保存的實現(xiàn),電源掉電的檢測可以選擇使用LVD低壓檢測功能,如下圖所示,LVD 的功能是檢測 VDD / VDDA 供電電壓是否低于低電壓檢測閾值,該閾值由電源控制寄存器(PMU_CTL) 中的 LVDT[2:0]位進(jìn)行配置。 LVD 通過 LVDEN 置位使能,位于電源控制和狀態(tài)寄存器(PMU_CS) 中的 LVDF 位表示低電壓事件是否出現(xiàn),該事件連接至 EXTI 的第 16 線,用戶可以通過配置 EXTI 的第 16 線產(chǎn)生相應(yīng)的中斷。
使用LVD檢測到掉電事件后,從LVD閾值到PDR電壓之間會有一個時間窗口,可用以實現(xiàn)掉電數(shù)據(jù)保存,這個時間由掉電速度決定,因而對數(shù)據(jù)保存的時間要求很高。若系統(tǒng)供電只有VDD供電,VBAT外部未接電池或者需要保存的數(shù)據(jù)比較多的情況下,可以選擇使用內(nèi)部Flash作為存儲介質(zhì),為了節(jié)省數(shù)據(jù)更新的時間,可以采用雙備份的方式,在系統(tǒng)運(yùn)行的過程中,先擦除一個備份,檢測到掉電事件后,節(jié)省擦除時間,直接向備份區(qū)域?qū)懭敫聰?shù)據(jù);若系統(tǒng)供電VBAT外接了電池,且更新的數(shù)據(jù)小于84字節(jié),可以選擇將數(shù)據(jù)寫入備份數(shù)據(jù)寄存器,其更新速度更快。另外如果評估下來掉電時間過快來不及更新數(shù)據(jù)的話,可以從硬件上減緩掉電速度,以預(yù)留更長的時間窗口。
如果您有其他更好的方案,也喚醒評論區(qū)留言討論!
-
單片機(jī)
+關(guān)注
關(guān)注
6026文章
44454瀏覽量
630835 -
mcu
+關(guān)注
關(guān)注
146文章
16798瀏覽量
349342 -
GD32
+關(guān)注
關(guān)注
7文章
403瀏覽量
24049
發(fā)布評論請先 登錄
相關(guān)推薦
評論