前言
电池备份(vbat)功能的实现方法,一般是使用 mcu 自带的 vbat 引脚,通过在该引脚连接钮扣电池,当系统电源因故掉电时,保持 mcu 内部备份寄存器内容和 rtc 时间信息不会丢失。
本文档介绍了如何基于 cw32 系列 mcu,通过增加简单的外部电路配合软件实现 vbat 功能,在系统电源掉电后仍能保持 rtc 时钟正常计时,以及如何降低系统功耗,从而延长后备电池的使用寿命。
1
电路设计
对于自带 vbat 引脚的 mcu,mcu 内部有对 vbat 电源和系统电源的管理单元,保证在系统电源掉电后,及时切换 vbat 引脚电源给备份域供电,保证 rtc 正常工作。
对于没有 vbat引脚的 cw32,要实现类似的功能,可以在外部进行后备带电池和系统电源的切换,如下图所示:
后备电池(b1)提供的备用电源 vbat 和系统电源 vddin 通过 2 个肖特基二极管(d1)合路,合路后的电源 vdd 给 mcu 的数字域 dvcc 和模拟域 avcc 进行供电。系统电源 vddin 通过 r3、r4 电阻分压得到wakeio 信号,连接到 mcu 的 io 引脚。注意遵循如下规则:
1. vwakeio 要大于 mcu io 口的 vih;
2. vddin 必须高于 vb1 在 0.4v 以上,否则如果 vddin 和 vb1 相等,在系统电源正常时,后备电池也会有一定的泄放电流,不利于节省后备电池电量。
2
程序设计
程序启动后正常初始化时钟、io、rtc 以及 oeld,循环中检测系统电源是否存在,如存在则读取 rtc 时间并显示。
当系统电源 vddin 因故掉电,则关闭 oled 电源,并进入 deepsleep 低功耗睡眠模式。
当系统电源 vddin 恢复供电时,产生高电平中断,唤醒 mcu,退出 deepsleep 低功耗睡眠模式。
3
参考代码
int32_t main(void)
{
rcc_configuration(); // 时钟配置
gpio_configuration(); //gpio配置
oled_init(); //oled显示屏初始化配置
dis_err(rtc_testboard); // 显示
firmwaredelay(5000000); // 增加延时防止过早休眠影响程序烧写
rtc_init(); //rtc时钟初始化
//deepsleep 唤醒时,保持原系统时钟来源
rcc_wakeupclk_config(rcc_sysctrl_wakeupclkdis);
showtime(); // 获取时间数据
displaydatetime(); // 显示当前时间
while(1)
{
if( 0==pb05_getvalue() ) // 循环检测是否掉电
{
pa05_sethigh(); // 关 oled 电源
scb->scr = 0x04; //deepsleep
__wfi(); //mcu 进入deepsleep模式以节省功耗
oled_init(); // 外部电源接入后唤醒,重新初始化 oled
}
else
{
showtime(); // 获取时间数据
displaydatetime(); // 显示当前时间
}
}
}
void gpio_configuration(void)
{
gpio_inittypedef gpio_initstruct= {0};
__rcc_gpiob_clk_enable(); // 开 gpiob 时钟
gpio_initstruct.it = gpio_it_rising; // 使能上升沿中断
gpio_initstruct.mode = gpio_mode_input; // 输入模式
gpio_initstruct.pins = gpio_pin_5 ; //pb05,连接 wakeio 网络
gpio_init(cw_gpiob, &gpio_initstruct); // 初始化 io
gpiob_intflag_clr(bv5); // 清除 pb05 中断标志
nvic_enableirq(gpiob_irqn); // 使能 pb05 中断
}
4
实际测试
使用 cw32l031c8t6 设计了用于测试后备电池功能的评估板
使用 3v 的 cr2032 钮扣电池,实测电池电压为 3.14v;vddin 使用可调节数字电源,设置为 3.54v,保证vddin >= vb1 + 0.4v;d1 实测合路后的电源电压为 3.21v。
4.1 测试数据
实际测试时,断开 j4 跳线接入万用表,设置万用表为电流测试档位。
1. 关闭 vddin 电源输入,mcu 检测到无外电输入,关闭 oled 显示,进入 deepsleep 模式,实测此时b1 电流为 +0.95μa。
2. 打开 vddin电源输入,mcu被高电平中断从 deepsleep状态唤醒到正常状态,oled正常显示当前时间,实测此时 b1 电流为 -75na(负电流是因为 d1 处于反向偏置状态,有小的反向漏电流)。
测试结果符合电路设计预期,以 cr2032 电池容量为 200mah 计算,则电池可用时间为 210526 小时,合计24 年(不考虑电池和产品寿命),可实现超长待机时间,完全满足各种低功耗产品对 rtc 后备电池容量需求。
5
附件
5.1 rtc_testboard 单板原理图
高通投资研发的全球领先的音频技术将如何推动这些趋势
无线网络安全之WiFi Pineapple初探
基于视觉的自主导航移动抓取机器人搭建方案
根系分析系统是什么,它的功能特点是什么
什么是空气自动监测系统
怎样使用CW32实现电池备份(VBAT)功能呢?
热电偶测温基本原理 热电偶的种类及结构形成
一知智能助力开发区数字强“治能” 争当排头兵
最简单的液位控制器电路设计方案
我国工业机器人遇到“寒流” 亟待大力改革以符合市场需求
5G BBU集中机房建设面临“三高”痛点,一体化方案带来显著收益
2023年机器视觉行业调研报告部分
AMD Instinct MI300X已向LaminiAI批量供货
日本计划利用物联网科技推进渔业养殖
基于CW32的308紫外线灯设计
IoT时代的单板计算机的需求及应用
步进电机的优缺点 步进电机的使用寿命
关于自由照明光学系统的简单了解
2019年全球VR/AR融资共达336亿,同比增长58%
最新动态 | 英国Pickering公司发布使用仿真工具减少测试开发时间的策略