打印
[DemoCode下载]

计算掉电時储存512字节数据所需时间和电容值

[复制链接]
1324|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
此份文件介绍如何在掉电过程中储存512字节的数据,并使用欠压检测(BOD)功能及外挂电容于VDD管脚上,利用延长放电时间使所需数据能顺利储存在数据内存里,内容包含原理介绍、数据分析以及使用建议。附录提供范例程序以及函式库。
NuMicro® Cortex®-M0/M4全系列,本文以NuMicro® Mini51 DE系列为例。



使用特权

评论回复
沙发
dongnanxibei|  楼主 | 2019-5-12 22:37 | 只看该作者
1 简介
在许多产品设计上都希望有数据保存的功能,在关机时将系统执行中的部分数据储存下来,例
如储存目前模式的设定以及其调整的参数,以便下次开机可用此数据来回复系统为掉电前的状
态。
但在产品使用上总会有突然停电或断电的情况,若突然断电可能来不及储存所需的参数,造成
系统重新上电后必须重新设定模式或参数。因此我们利用欠压检测 (BOD)功能侦测系统是否掉电与VDD外挂电容来延长掉电的时间,并将系统所需之数据储存于数据内存中,即可于掉电期间完成储存数据的动作,使系统再次上电后依然可以维持为掉电前的状态。
本**着重于使用BOD进行电压侦测时,对所需电容值进行分析,并提供范例程序,利于计算出测量储存数据所需时间,以及对应的电容。

使用特权

评论回复
板凳
dongnanxibei|  楼主 | 2019-5-12 22:38 | 只看该作者
2 掉电储存分析
本节将介绍,如何计算储存512字节数据的机制原理,以及储存耗费的时间,并且依据Mini51
的规格书提供之数据,计算掉电后至储存完512字节数据所需外挂电容值。
2.1 机制原理
开启欠压检测 (BOD) 功能,侦测电源是否为掉电状态,进入BOD中断后即开始对数据内存进行数据写入,若储存时间足够,则可以在工作电压之内完成写入。为使系统掉电后有足够时间进行储存,必须在VDD上外接电容,使放电的时间延长至足以储存完数据。
 掉电侦测
NuMicro® Cortex®
-M0/M4全系列皆提供欠压检测 (BOD) 的功能可以用来侦测是否为掉电,
Mini51的BOD可供选择的电压为 4.4 V / 3.7 V / 2.7 V / 2.2 V,我们可依据系统电压来选择,判
定为掉电的电压为多少,当侦测到掉电时,即可开始储存数据至数据内存的工作。
 外挂电容延长掉电后可储存数据时间
由于储存数据至数据内存需要时间,Mini51保证的工作电压在2.5 V ~ 5.5 V,当系统电压下降过快低于2.5V时,其放电时间可能无法储存完需要的数据;当低于2V时,则会产生低电压复位(LVR),我们可以透过外加电容推迟放电的速度,来改善储存时间不足的情况。放电状况比较
图如下:

使用特权

评论回复
地板
dongnanxibei|  楼主 | 2019-5-12 22:38 | 只看该作者
2.2 BOD 电压选取
由于BOD的侦测电压为4.4 V / 3.7 V / 2.7 V / 2.2V,若系统电压为5V,通常BOD选用4.4V来侦
测是否为掉电状态,若BOD选用3.7V来侦测,则储存数据的时间会更少。
2.3 电容值选取
本节介绍如何藉由实验来计算储存完512字节数据所需之外挂电容值
2.3.1 减少所需电容
由Mini51的规格书所提供的表格 2-1可得到,页擦除(Page)耗时20ms,写一个字(Word)耗时60 us,计得写一页512字节需耗时 7.68 ms,所以总计擦除并写一页至少需要约30 ms 的时间,才能保证系统在掉电过程中,将数据储存至数据内存。
由于页擦除的时间较长,若是在系统掉电后才执行页擦除动作,则须要更大的电容。因此当系统上电后先进行页擦除,掉电时就只需要执行写入动作,可大幅减少所需时间与电容量。

使用特权

评论回复
5
dongnanxibei|  楼主 | 2019-5-12 22:39 | 只看该作者
2.3.2 计算所需电容
由于Mini51的保证工作电压为2.5 V ~ 5.5 V,所以为了留有多的余量,我们希望可以在2.7 V以
上时,完成储存512字节数据的动作,所需的电容值,与系统电压及耗电流有关,可以透过电
容公式 (Q=CV=It) 计算出来,计算过程如下:
Q:电荷量、C:外挂电容量、V:所选BOD电压减2.7V、I:系统电流、t:储存512字节所
需时间
假设BOD选取4.4 V,则 V = 4.4 V - 2.7 V = 1.7 V
依表格 2-1可得编程电流为 8 mA,则 I = 8 mA、
依表格 2-1可得一个字(Word)的编程时间为 60 us,则 t = 60 × 128 = 7.68 ms

由 It = CV→ 8 mA × 7.68 ms = 1.7 V × C
故 C = 36.14 uF
所以我们可以选择最接近且常用的47 uF作为外挂电容,就可以在掉电时储存完512字节数据,
若有其他负载,可以参考 2.3.3.3 或 2.3.3.4 的计算方法

使用特权

评论回复
6
dongnanxibei|  楼主 | 2019-5-12 22:40 | 只看该作者
2.3.3 实验
如表格 2-2,我们将进行五个实验,来观察外挂电容值大小,是否能够成功在掉电时储存完
512字节数据,实验电路板为图2‑2新唐官方所出品的NuTiny-Mini51L与NuTiny-Nano102S,并
移除不需要的负载(Power LED),实验步骤如下, P0.1用于标示流程进度:
1. 电源供电用示波器量测 VDD电压 (CH1) ,及显示状态用的 P0.1 (CH2,预设输为 1)
2. 当电源断开时,MCU 尚在工作,BOD 侦测电压值是否低于设定值,当符合即进入中断
3. 进入中断后,将 P0.1 设为 0,并且开始进行 512 字节的数据写入动作
4. 当 512 字节的数据写入完成后,将 P0.1 设为 1 并离开中断
5. 当 P0.1 于 VDD下降到 2.7V 前完成 1 → 0 →1,即代表所选取外挂电容的放电时间可以顺利储存完 512 字节数据

使用特权

评论回复
7
dongnanxibei|  楼主 | 2019-5-12 22:40 | 只看该作者

使用特权

评论回复
8
dongnanxibei|  楼主 | 2019-5-12 22:41 | 只看该作者
上表说明一个问题,一定要提前做好测试实验,再打最终的板子。

使用特权

评论回复
9
dongnanxibei|  楼主 | 2019-5-12 22:41 | 只看该作者

使用特权

评论回复
10
dongnanxibei|  楼主 | 2019-5-12 22:42 | 只看该作者
2.3.3.1 实验一:IC:Mini51、工作电压:5V、BOD:4.4V、电容:10 uF
如图2‑3,外挂电容10 uF,由于掉电后 P0.1 并没有于VDD下降到 2.7 V 前完成1 → 0 → 1,所以掉电后无法储存完512字节数据。


使用特权

评论回复
11
dongnanxibei|  楼主 | 2019-5-12 22:43 | 只看该作者
2.3.3.2 实验二:IC:Mini51、工作电压:5V、BOD:4.4V、电容:47 uF
由2.3.2所计算出之电容C = 36.14 uF,我们选择常用的47 uF来做为外挂电容,可以看到波形掉电后P0.1于VDD下降到2.7 V前完成 1  0  1,所以掉电后可以储存完512字节数据。
另外我们可以看到编程时间是8.44 ms,与表格 2-1所计算出来的7.68 ms有些差距,是因为除了数据内存的的编成时间之外还要再加上程序执行的时间,但由于我们选取的电容通常都大于计算出的电容,因此我们在计算所需电容值的时候,可以忽略此部分。

使用特权

评论回复
12
dongnanxibei|  楼主 | 2019-5-12 22:43 | 只看该作者

使用特权

评论回复
13
dongnanxibei|  楼主 | 2019-5-12 22:54 | 只看该作者
2.3.3.3 实验三:IC:Mini51、工作电压:5V、BOD:4.4V、电容:100 uF、并加LED负载本次实验点亮如图2‑2的IO LED作为负载,由于增加LED作为负载,所以电流已经不能由表格2-1的编程电流来计算,必须先量测系统电流,再透过电容公式 (Q = CV = It) 计算出来,计算
过程如下:Q:电荷量、C:外挂电容量、V:所选BOD电压减2.7V、I:系统电流、t:储存512字节所需时间
假设BOD选取4.4V,则 V = 4.4V - 2.7V = 1.7 V、
如图2‑8,使用电表量测包含编程与LED负载的系统电流为13 mA,则 I = 13 mA、
依表格 2-1可得写一个字(Word)的编程时间为 60 us,则 t = 60 × 128 = 7.68 ms
由 It = CV  13 mA × 7.68 ms = 1.7 V × C,得到 C = 58.72 uF
所以我们只能选择最接近且常用的100 uF作为外挂电容,用于完成掉电时储存512字节数据。

使用特权

评论回复
14
dongnanxibei|  楼主 | 2019-5-12 22:54 | 只看该作者

使用特权

评论回复
15
dongnanxibei|  楼主 | 2019-5-12 22:55 | 只看该作者
2.3.3.4 实验四:IC:Mini51、工作电压:5V、BOD:4.4V、电容:47uF、加LED负载、BOD
中断关LED
由于实验三掉电时持续点亮LED,造成所需的外挂电容增加至100 uF,所以本实验提出方法来
减少所需的外挂电容。
本次实验,同样的LED上电就点亮,量测电流与实验三同样是13 mA,但不同的是当侦测掉电
时到进BOD中断,我们可以在中断子程序中关闭LED,再开始做储存数据的动作,所以在储存
数据时的总耗电流就不含LED的电流,图2‑10中可以观察到AB两点间与BC两点间的斜率不一
样是因为关闭LED后电流下降所致,接着可以一样用表格 2-1的编程电流来计算。
Q:电荷量、C:外挂电容量、V:所选BOD电压减2.7V、I:系统电流、t:储存512字节所
需时间
假设BOD选取4.4V,则 V = 4.4V - 2.7V = 1.7 V
依表格 2-1可得编程电流为 8 mA,则 I = 8 mA、
依表格 2-1可得写一个字(Word)的编程时间为 60 us,则 t = 60 × 128 = 7.68 ms
由 It = CV  8 mA × 7.68 ms = 1.7 V × C,故 C = 36.14 uF
所以我们可以选择最接近且常用的47 uF作为外挂电容,用于掉电时储存完512字节数据。

使用特权

评论回复
16
dongnanxibei|  楼主 | 2019-5-12 22:55 | 只看该作者

2.3.3.5 实验五:IC:Nano102、工作电压:3.3V、BOD:2.5V、电容:100uF、加LED负
载、BOD中断关LED
本次实验使用NuTiny-Nano102S來做實驗,并移除不需要的负载(Power LED),由于Nano102
的保证工作电压为1.8 V ~ 3.6 V,所以为了留有多的余量,我们希望可以在2.0 V以上时,完成
储存512字节数据的动作。
實驗同样的LED上电就点亮,当侦测掉电时到进BOD中断,即在中断子程序中关闭LED,再开
始做储存数据的动作,接着可以一样用表格 2-3的编程电流来计算。
Q:电荷量、C:外挂电容量、V:所选BOD电压减2.0V、I:系统电流、t:储存512字节所
需时间
假设BOD选取2.5V,则 V = 2.5V – 2.0V = 0.5 V
依表格 2-1可得编程电流为 7 mA,g则 I = 7 mA、
依表格 2-1可得写一个字(Word)的编程时间为 40 us,则 t = 40 × 128 = 5.12 ms
由 It = CV  7 mA × 5.12 ms = 0.5 V × C,故 C = 71.68 uF
所以我们可以选择最接近且常用的100 uF作为外挂电容,用于掉电时储存完512字节数据。

使用特权

评论回复
17
dongnanxibei|  楼主 | 2019-5-12 22:56 | 只看该作者



使用特权

评论回复
18
dongnanxibei|  楼主 | 2019-5-12 22:57 | 只看该作者
3 结论
本篇提出利用开启BOD功能与增加外挂电容,在系统掉电后能够储存512字节内容于数据内存的方法,以避免当系统突然断电,或电池耗尽时对系统造成之影响。
为了能够完整储存所需的数据于数据内存中,如2.3.3.2实验二,我们利用BOD电压设定与Mini51的规格书所提供的数据,来计算出所需之电容。
当系统因有其他负载时必须外挂较大之电容,我们可以如2.3.3.4实验四,于掉电时在BOD中断中关闭其他负载,以减少耗电流,来达成减少外挂电容量的目的,又或者利用如图3‑1的二极管来隔绝其他装置消耗外挂电容与搭配GPIO中断来侦测电源是否为掉电。
對於其他系列的NuMicro® Cortex® -M0/M4系列,如2.3.3.5实验五提出使用Nano102也同样可以使用2.3.3.4实验四的計算方法,于掉电时在BOD中断中关闭其他负载後,使用規格書來計算所需電容量。
由于本篇提出储存数据之储存量为512字节数据量,若不需储存如此多资料,则可以依公式计算,以利再减少所需之电容量。

使用特权

评论回复
19
dongnanxibei|  楼主 | 2019-5-12 22:58 | 只看该作者
附录:范例程序代码
如图 4‑1,在使用此范例程序前,需要先设定好数据内存;4.1提供函式库的程序代码,提供使用此功能需增加的程序代码;4.2提供范例程序代码,以NuMicro® Mini51 DE系列为例,上电后先将512字节的数据内存擦除,当BOD侦测到之后进入中断并开始将512字节的数据写入数据内存。

使用特权

评论回复
20
dongnanxibei|  楼主 | 2019-5-12 22:59 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

201

主题

3587

帖子

16

粉丝