完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
此份文件介绍如何在掉电过程中储存512字节的数据,并使用欠压检测(BOD)功能及外挂电容于VDD管脚上,利用延长放电时间使所需数据能顺利储存在数据内存里,内容包含原理介绍、数据分析以及使用建议。附录提供范例程序以及函式库。
NuMicro® Cortex®-M0/M4全系列,本文以NuMicro® Mini51 DE系列为例。 1 简介 在许多产品设计上都希望有数据保存的功能,在关机时将系统执行中的部分数据储存下来,例 如储存目前模式的设定以及其调整的参数,以便下次开机可用此数据来回复系统为掉电前的状 态。 但在产品使用上总会有突然停电或断电的情况,若突然断电可能来不及储存所需的参数,造成 系统重新上电后必须重新设定模式或参数。因此我们利用欠压检测 (BOD)功能侦测系统是否掉电与VDD外挂电容来延长掉电的时间,并将系统所需之数据储存于数据内存中,即可于掉电期间完成储存数据的动作,使系统再次上电后依然可以维持为掉电前的状态。 本**着重于使用BOD进行电压侦测时,对所需电容值进行分析,并提供范例程序,利于计算出测量储存数据所需时间,以及对应的电容。 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),我们可以透过外加电容推迟放电的速度,来改善储存时间不足的情况。 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 的时间,才能保证系统在掉电过程中,将数据储存至数据内存。 由于页擦除的时间较长,若是在系统掉电后才执行页擦除动作,则须要更大的电容。因此当系统上电后先进行页擦除,掉电时就只需要执行写入动作,可大幅减少所需时间与电容量。 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 的计算方法 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 字节数据 |
|
相关推荐
1个回答
|
|
2 原理介绍
在掉电或断电的情况下,系统上电芯片内存的电容会迅速放电,导致内存中的数据无法保存。因此,需要采取措施来保护数据。 首先,我们需要利用欠压检测(BOD)功能来监测VDD电压。当VDD电压下降到一定程度时,BOD会自动触发中断,告知系统电压已经不足以维持正常运行,此时需要立即采取措施来保护数据。同时,我们需要在VDD管脚上连接一个电容,使得在电源断电时电容能够帮助VDD延长放电时间,从而使数据得以保存。 在具体实现上,我们需要在程序中编写BOD中断函数,在检测到VDD电压低于指定电压值时立即将需要保存的数据写入内存中的Flash或EEPROM中。同时,在启动时需检测内存中是否已经保存有数据,若已有数据,则需将其读取出来并还原系统状态。 3 数据分析 512字节的数据在Mini51系列芯片中,可以选择在Flash或EEPROM中进行存储。其中,Flash容量为32KB,而EEPROM的容量仅有1KB。 在考虑选择存储位置时,需要注意到Flash的写次数有限制,常规的Flash写操作不能连续进行。因此,在需要频繁写入数据的情况下,建议使用EEPROM进行存储。另外,由于EEPROM的写操作需要一定时间,因此在使用EEPROM进行存储时需要考虑到系统的时序问题,避免操作过程中出现系统复位等现象。 4 使用建议 使用BOD功能及外挂电容进行数据存储时,需要考虑到以下几点: 1)在编写BOD中断函数时,需注意所需储存的数据长度,避免数据长度过长导致中断响应时间过长而影响系统正常运行。在具体实现中,可以采用DMA等方式来提高数据传输效率。 2)在选择存储位置时,需根据实际需求来确定存储器的容量大小。如需频繁进行写操作,则建议使用EEPROM进行存储;如存储量较大且需要长期保存,则建议使用Flash进行存储。 3)在使用外挂电容进行数据存储时,需注意电容的电压等级,以免因电容电压过高而影响系统稳定性。 5 结论 在本文中,我们介绍了如何在掉电过程中储存512字节的数据,并使用BOD功能及外挂电容来保护数据。在具体实现过程中,需要注意到中断响应时间、存储位置等问题,并且合理选择电容等外部元件来提高系统稳定性。 |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2956 浏览 16 评论
3458 浏览 1 评论
9000 浏览 16 评论
4051 浏览 18 评论
1109浏览 3评论
572浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2302浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1859浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 12:20 , Processed in 1.708178 second(s), Total 80, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号