0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用 CW32 实现电池备份(VBAT)功能

武汉芯源半导体有限公司 2023-08-15 13:11 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


前言

电池备份(VBAT)功能的实现方法,一般是使用 MCU 自带的 VBAT 引脚,通过在该引脚连接钮扣电池,当系统电源因故掉电时,保持 MCU 内部备份寄存器内容和 RTC 时间信息不会丢失。

本文档介绍了如何基于 CW32 系列 MCU,通过增加简单的外部电路配合软件实现 VBAT 功能,在系统电源掉 电后仍能保持 RTC 时钟正常计时,以及如何降低系统功耗,从而延长后备电池的使用寿命。

1 、电路设计

对于自带 VBAT 引脚的 MCU,MCU 内部有对 VBAT 电源和系统电源的管理单元,保证在系统电源掉电后,及 时切换 VBAT 引脚电源给备份域供电,保证 RTC 正常工作。

对于没有 VBAT引脚的 CW32,要实现类似的功能,可以在外部进行后备带电池和系统电源的切换,如下图所示:

wKgZomTbCF6AQY5pAAA59eeKwOM150.png

后备电池(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 设计了用于测试后备电池功能的评估板,实物如下图所示:

wKgZomTbCIOALsejAAocsLmZaiM740.png

使用 3V 的 CR2032 钮扣电池,实测电池电压为 3.14V;VDDIN 使用可调节数字电源,设置为 3.54V,保证 VDDIN >= Vb1 + 0.4V;D1 实测合路后的电源电压为 3.21V。

wKgZomTbCJOAHP7VAAojTs9kXBs730.png

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 单板原理图

wKgaomTbCLGAQTNUAAFevw6lJvs033.pngwKgZomTbCMKAJbboAADwDaODQ6Q218.png
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45340

    浏览量

    663550
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18605

    浏览量

    387042
  • 电池
    +关注

    关注

    85

    文章

    11356

    浏览量

    141300
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    可以使用CW32的ChirpIOT来实现芯片固件升级吗

    可以使用CW32的ChirpIOT来实现芯片固件升级吗?这种升级每包有限制吗?一般是多少,可以实现组网内的所有设备同时这种升级吗?
    发表于 12-05 06:51

    使用CW32 MCU来实现UART串口通信与GPIO控制

    最近在项目中使用CW32 MCU,完成了一个简单的UART串口通信和GPIO控制的功能CW32 MCU的资源相对丰富,特别适合一些低成本、低功耗的嵌入式应用。这里分享一下UART通信与GPIO
    发表于 12-04 08:17

    CW32单片机在智能马桶的应用

    水泵的工作和停止。 3.智能电量监控与节能功能 智能马桶内置电池或电源模块,CW32单片机可以实时监测电池的电量,并根据电量情况进行智能的调节。当电量不足时,单片机会通过控制模块对电源
    发表于 12-04 08:01

    使用芯源CW32 MCU来实现低功耗模式下的RTC定时唤醒功能

    最近在项目中,我使用了芯源的CW32 MCU,并成功实现了低功耗模式下通过RTC定时唤醒系统的功能。这篇帖子将分享我的实现过程以及一些代码片段,希望能对大家有所帮助。 1. 项目背景
    发表于 12-04 07:55

    基于芯源CW32 MCU的LED闪烁示例及代码分析

    准备: 芯源CW32开发板 一个LED 电阻及基础连接线 开发环境:我使用的是Keil作为开发环境,同时利用官方提供的CW32库函数,这使得代码更加简洁清晰。 代码实现:这段代码实现
    发表于 12-04 06:52

    CW32实现VBAT功能案例的参考代码

    CW32 实现VBAT功能案例参考代码: int32_t main(void) { RCC_Configuration(); // 时钟配置 GPIO_Configuration
    发表于 12-04 06:06

    CW32 MCU温度监测应用

    最近,我在项目中使用CW32 MCU,来实现一个简单的温度监测系统。CW32的灵活性和性能让我在这个应用中得心应手。以下是我的实现过程和代码示例。 应用简介本项目通过连接一个温度传感器
    发表于 12-03 08:03

    基于芯源CW32 MCU智能家居照明控制系统设计与实现

    高性能、低功耗及丰富的外设资源,成为智能照明系统设计的理想选择。 系统功能设计本系统的核心功能是通过CW32 MCU对灯光的开关和亮度进行智能控制。用户可以通过手机应用、语音助手等方式进行远程操作。此外
    发表于 12-03 06:06

    cw32 systick怎么用?

    cw32 systick怎么用
    发表于 12-01 08:10

    如何在CW32 MCU上优化I2C通信

    在嵌入式系统中,CW32 MCU的I2C接口通常用于与各种外设(如EEPROM、传感器等)进行数据通信。为了实现高效、稳定的I2C通信,必须考虑频率调节和数据完整性的问题。本文将聚焦于如何在CW32
    发表于 11-27 06:25

    deepseek来分析CW32单片机的特点

    应用。 CW32F103:基于Cortex-M3,性能更强,外设丰富。 CW32L052:低功耗型号,适合电池供电场景。 总结[size=16.002px]CW32单片机以其高性能、低
    发表于 11-26 06:33

    使用J-Flash来编程CW32 MCU

    与计算机的连接。 复位MCU并检查其功能是否正常。 请注意,以上步骤可能需要根据你使用的具体J-Flash版本和CW32 MCU型号进行调整。
    发表于 11-25 07:00

    CW32 MCU用什么IDE开发?

    推荐使用IAR Embedded Workbench for ARM、Keil μVision for ARM等IDE开发CW32 MCU应用,其中新版本IAR EWARM直接支持CW32 MCU,Keil MDK-ARM则需要安装CW
    发表于 11-12 07:52

    CW32 MCU有哪些系列?

    目前CW32 MCU有通用高性能MCU、安全低功耗MCU、无线射频MCU等3个系列。其中射频MCU集成了无线收发器,主要包括CW32R031(2.4GHz BLE-Lite)系列和CW32W031(Sub-1G)系列。
    发表于 11-12 07:34

    CW32 MCU用什么仿真器开发?

    理论上各主流IDE枚举的、支持ARM Cortex内核的所有硬件仿真器,比如:J-LINK,ULINK,DAP,ST-Link等,都可以仿真、下载CW32 MCU的应用代码。如果想实现量产或者离线下载应用代码,则必须配套支持CW32
    发表于 11-12 06:01