easyui 网站设计,中企动力员工感受,湖南正规关键词优化报价,医院网站建设官网前言 电池备份#xff08;VBAT#xff09;功能的实现方法#xff0c;一般是使用 MCU 自带的 VBAT 引脚#xff0c;通过在该引脚连接钮扣电池#xff0c;当系统电源因故掉电时#xff0c;保持 MCU 内部备份寄存器内容和 RTC 时间信息不会丢失。
本文档介绍了如何基于 C…前言 电池备份VBAT功能的实现方法一般是使用 MCU 自带的 VBAT 引脚通过在该引脚连接钮扣电池当系统电源因故掉电时保持 MCU 内部备份寄存器内容和 RTC 时间信息不会丢失。
本文档介绍了如何基于 CW32 系列 MCU通过增加简单的外部电路配合软件实现 VBAT 功能在系统电源掉 电后仍能保持 RTC 时钟正常计时以及如何降低系统功耗从而延长后备电池的使用寿命。 1
电路设计 对于自带 VBAT 引脚的 MCUMCU 内部有对 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( 0PB05_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); // 初始化 IOGPIOB_INTFLAG_CLR(bv5); // 清除 PB05 中断标志NVIC_EnableIRQ(GPIOB_IRQn); // 使能 PB05 中断} 4
实际测试 使用 CW32L031C8T6 设计了用于测试后备电池功能的评估板实物如下图所示 使用 3V 的 CR2032 钮扣电池实测电池电压为 3.14VVDDIN 使用可调节数字电源设置为 3.54V保证 VDDIN Vb1 0.4VD1 实测合路后的电源电压为 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 单板原理图