前言
电池备份(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 单板原理图
信号分列反射的具体表现
详解如何验证PAM编码千兆位级串行链路当信号
Modifying the E3 Template Comp
云里物里北交所IPO!7成收入来自蓝牙传感器,募资1.89研发云平台等
泰克示波器TBS1102B测试直流电流方法教程详解
使用 CW32 实现电池备份(VBAT)功能
5G与工业互联网融合将加速中国工业化进程
AR隐形眼镜解决方案提供商Innovega获100万美元融资
天线极化的类别和应用
消夏解暑好帮手,莱克空气调节扇帮你赶走“空调病”
物联网设备是否都需要传感器技术
SIMATIC S7-1500 PLC加减计数器简述
万用表测传感器的两种方法
计算和存储两者如何水乳交融
汽车发动机内部的技术运作原理解析
4月19日仅发布小米6一部手机?当然不止,还有一款隐藏新品
新技能丨FETA40i-C核心板实现高清模拟摄像头720P方案
特斯拉车主引荐计划期限延长,增加两个额外奖励
离子风枪你真的会使用吗?
学校网络视频监控系统的特性功能及应用方案