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

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

3天内不再提示

基于MM32L0130的低功耗电子时钟设计

灵动MM32MCU 来源:灵动MM32MCU 作者:灵动MM32MCU 2022-11-04 10:12 次阅读

MM32L0130作为灵动微电子推出的一款低功耗芯片,内置多种省电工作模式保证低功耗应用的要求。前面章节分别对MM32L0130片上外设SLCD和RTC做了相关描述,并列举对应程序实现SLCD驱动LCD显示、RTC日历和闹钟,其实SLCD与RTC都支持在特定的低功耗模式下运行,结合这两个外设特性,在前面实验的基础上,使用EVB_L0136开发板可以轻松实现一个低功耗电子时钟设计。本次微课堂通过讲述MM32L0130 PWR电源控制模式,以及SLCD 和RTC外设配置,实现低功耗应用场景。

1MM32L0130 PWR简介

电源控制 PWR(Power Controller)主要涉及芯片的供电系统、电源管理器和低功耗模式等功能。

1.1 供电系统

芯片由两种电源提供供电:

由VDDA和VSSA提供的模拟电源,为芯片模拟模块提供电压,用于ADC模块、内部基准电压、内部温度传感器和 PLL 等。

由VDD和VSS提供的数字电源,用于数字部分和I/O引脚工作。

0cfa4950-5b65-11ed-a3b6-dac502259ad0.png

电源控制功能框图

VDD 域主要给 LSE, HSE, PMU, POR, PVD 和部分 I/O 上的唤醒逻辑供电,在上电后保持工作状态。

备份域主要为 RTC、 LCD、 IWDG、备份寄存器和内部低速时钟振荡器 LSI 供电。

VDD_Core 域主要给芯片的内核、内存和外设提供供电,在上电后默认是开启状态,在进入低功耗待机模式时,芯片会硬件选择关闭该 VDD_Core 域,在唤醒后芯片会自动开启。主要有以下几种工作状态:

运行模式

VDD_Core 域以正常的功耗模式运行,内存、外设都正常工作。

低功耗运行模式

VDD_Core 域以低功耗模式运行,内存、外设都以低功耗工作。

睡眠模式

VDD_Core 域以正常功耗模式工作, CPU 进入睡眠模式,内存、外设都以正常的功耗模式工作。

低功耗睡眠模式

VDD_Core 域以低功耗睡眠模式工作, CPU 进入低功耗睡眠模式,内存、外设都以低功耗工作。

停机模式

VDD_Core 域以低功耗模式工作,只保持寄存器和 RAM 的内容。

深度停机模式

VDD_Core 域以更低功耗模式工作,只保持寄存器和 RAM 的内容。

待机模式

VDD_Core 域停止供电。除了备份域外,其他所有寄存器和 SRAM 的内容全部丢失。

关机模式

VDD_Core 域、备份域停止供电。

1.2 MM32L0130低功耗模式

MM32L0130有6种低功耗模式:包括低功耗运行模式,睡眠模式,低功耗睡眠模式,停机模式,待机模式,关机模式:

低功耗运行模式

进一步降低 MCU 在运行模式下的功耗,可以通过配置 PWR_CR1 寄存器的 LPR 位将电压稳压器设置为低功耗模式。该模式下系统频率不应超过 2MHz。

Sleep Mode 睡眠模式

CPU 进入睡眠模式,内存、外设都以正常的功耗模式工作。在睡眠模式下,所有的 I/O 引脚都保持在运行模式时的状态。中断或事件发生后,睡眠模式立即被唤醒。

Low Power Sleep Mode 低功耗睡眠模式

CPU 进入低功耗睡眠模式,内存、外设都以低功耗工作。在睡眠模式下,所有的 I/O 引脚都保持在运行模式时的状态。中断或事件发生后,睡眠模式立即被唤醒。

Stop Mode 停机模式

停机模式下,CPU 进入深度睡眠模式, VDD_Core 域的所有时钟都被停止, PLL、 HSI 和 HSE 振荡器的功能被禁止, SRAM 和寄存器内容被保留下来。

DeepStop Mode 深度停机模式

深度停机是在 CPU 深度睡眠模式的基础上结合了外设的时钟控制和电压稳压器控制机制的一种低功耗模式。在深度停机模式下, VDD_Core 域的所有时钟都被停止, PLL、 HSI 和 HSE 振荡器的功能被禁止, SRAM 和寄存器内容被保留下来。

Standby Mode 待机模式

待机模式是在 CPU 深睡眠模式的基础上关闭电压稳压器。整个 VDD_Core 域被切断, PLL、 HSI 和HSE 振荡器也被关闭, SRAM 和寄存器内容丢失,只有备份域的寄存器和待机电路维持供电。唤醒后芯片将复位。

ShutDown Mode 关机模式

在关机模式下,内部所有的稳压器全都被关闭, BOR 关闭,只保留 POR 和少数其他 VDD 域的电路正常工作(PMU 部分逻辑/POR/IO Wakeup 逻辑)。

1.3 功耗模式选择

一般根据最低电源消耗,最快启动时间和可用的唤醒源等条件,选择一种最佳的低功耗模式。相关参数可以参考各系列对应的数据手册,如下数据从数据手册摘取。

1.31 电流消耗

电流消耗是多种参数和因素的综合指标,这些参数和因素包括工作电压、环境温度、 I/O引脚的负载、产品的软件配置、工作频率、 I/O 脚的翻转速率、程序在存储器中的位置以及执行的代码等。本节中给出的所有运行模式下的电流消耗测量值,都是在执行一套精简的代码。

睡眠模式下的典型电流消耗:

0d1c4d16-5b65-11ed-a3b6-dac502259ad0.png

停机模式下的典型电流消耗和最大电流消耗:

0d536e04-5b65-11ed-a3b6-dac502259ad0.png

I/O 状态为模拟输入。

待机模式下的典型电流消耗和最大电流消耗:

0d7c41ee-5b65-11ed-a3b6-dac502259ad0.png

I/O 状态为模拟输入。

关机模式下的典型电流消耗和最大电流消耗:

0da095b2-5b65-11ed-a3b6-dac502259ad0.png
I/O 状态为模拟输入。

1.32 唤醒时间

低功耗模式的唤醒时间:

0dbf264e-5b65-11ed-a3b6-dac502259ad0.png

2实验

2.1 实验说明

MM32L0130的RTC和SLCD外设都支持睡眠模式、停机模式、和待机模式。RTC模块连接到EXTI部分用于低功耗唤醒信号,包括闹钟、唤醒单元、入侵事件。SLCD驱动模块在不需要显示的时候,可以完全关闭 SLCD 驱动以达到降低功耗的目的。

硬件使用灵动微电子设计的EVB-L0136开发板,板载LCD接口可以适配GDC0689液晶屏,以LCD中的6位数码管显示时间时、分、秒,在1s时间范围内完成唤醒并更新显示数据即可,根据需要可以选择停机模式和待机模式,待机模式功耗最低。在STOP模式下, VDD_Core域的所有时钟都被停止, PLL、 HSI 和 HSE 振荡器的功能被禁止,SRAM 和寄存器内容被保留下来,唤醒之后继续执行进入STOP模式指令之后的程序,可以保证各个任务顺利运行,从STOP模式唤醒时间约为20us,时间相当充分,且功耗较正常运行模式降低很多,这里选择STOP模式。

GDC0689液晶屏全显效果图如下:

0dfaa3d6-5b65-11ed-a3b6-dac502259ad0.png    

2.2 唤醒单元

RTC内部包含周期性的唤醒单元,用于唤醒低功耗模式。

RTC 内部包含一个 16 位的递减计数单元,用于周期性产生唤醒标志,该唤醒定时器可扩展至 17 位。通过配置 RTC_CR 寄存器中的 WUTE 位使能。唤醒单元时钟源:

2、4、8 或 16 分频的 RTC 时钟:

当为 LSE 时,可配置的唤醒中断周期介于 122µs 和 32s 之间,且分辨率低至 61µs。

fck_spre(通常为 1Hz 内部时钟):

WUCKSEL[2:1]=10 时为 1s 到 18h;

WUCKSEL[2:1]=11 时约为 18h 到 36h。

当递减计数器计数到 0 时, RTC_ISR 寄存器的 WUTF 标志会置 1,唤醒计数器会重载 RTC_WUTR寄存器值,通过软件清零 WUTF 标志。

使能 RTC_CR 寄存器中的 WTIE,当计数到 0 时,会产生中断输出。

配置 RTC_CR 寄存器中的位 OSEL[1:0]等于 2, WUTF 连接到 RTC_ALARM 输出。配置 RTC_CR寄存器的 POL 位选择 RTC_ALARM 输出极性。

注:系统复位以及低功耗模式(睡眠、停机和待机)对唤醒定时器没有影响。

2.3 外设配置

关于SLCD和RTC的初始化配置在前面两节微课堂已有相关描述,以下外设配置与应用程序在前面代码上进行增添即可。

1)配置低功耗模式要先使能PWR时钟:

RCC_APB1PeriphClockCmd(RCC_APB1ENR_PWREN,ENABLE);

2)在要进入STOP模式的代码后调用相关库函数,选择低功耗模式,中断唤醒:

PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);

3)RTC的时钟源选择LSE(32.768KHZ),可配置的唤醒中断周期介于 122µs 和 32s 之间,且分辨率低至 61µs。此处对RTC时钟进行16分频,1s计数2048个,配置唤醒定时器自动重装载值为256,对应125ms,该值越小,唤醒时间越短。

RTCCAL_WakeUpClockConfig(RTCCAL_WakeUpClock_RTCCLK_Div16);
RTCCAL_SetWakeUpCounter(256);

使能唤醒单元,使能RTC唤醒中断:

RTCCAL_WakeUpCmd(ENABLE);
RTCCAL_ClearFlag(RTCCAL_FLAG_WUTF);
RTCCAL_ITConfig(RTCCAL_IT_WUT,ENABLE);

RTC&BKP 全局中断与连接到 EXTI17,配置RTC中断:

RTCCAL_NVIC_Config();

4)SLCD显示,记录当前日历和时间,使用LCD的6位数码管显示时分秒,左上方的4位数码管显示年份。

voidLCD_DisplayDataUpdate(void)
{
Number1=RTCCAL_tempTime.RTCCAL_Seconds;
Number2=RTCCAL_tempTime.RTCCAL_Minutes;
Number3=RTCCAL_tempTime.RTCCAL_Hours;

LCD_DisplayNumber1(0,'0'+Number3/10,0);
LCD_DisplayNumber1(1,'0'+Number3%10,0);
LCD_DisplayNumber1(2,'0'+Number2/10,0);
LCD_DisplayNumber1(3,'0'+Number2%10,0);
LCD_DisplayNumber1(4,'0'+Number1/10,0);
LCD_DisplayNumber1(5,'0'+Number1%10,0);

LCD_DisplayUnit(8,1);
LCD_DisplayUnit(9,1);

Number4=RTCCAL_tempDate.RTCCAL_Year;
LCD_DisplayNumber2(0,'2',0);
LCD_DisplayNumber2(1,'0',0);
LCD_DisplayNumber2(2,'0'+Number4/10,0);
LCD_DisplayNumber2(3,'0'+Number4%10,0);

}

5)获取当前日历和时间,刷新显示数据,Flag_GainData、Flag_DataUpdate均为时间标志,这里间隔1ms获取数据,间隔10ms刷新数据,Flag_WKUP是中断唤醒标志,数据刷新之后再次进入STOP模式,等待唤醒,刷新时间是影响功耗的主要参数之一,需根据实际应用进行评估。

if(Flag_GainData==1)
{
Flag_GainData=0;
RTCCAL_GetDate(RTCCAL_Format_BIN,&RTCCAL_tempDate);RTCCAL_GetTime(RTCCAL_Format_BIN,&RTCCAL_tempTime);
}
if(Flag_DataUpdate==1)
{
Flag_DataUpdate=0;
LCD_DisplayDataUpdate();
if(Flag_WKUP==1)
{
Flag_WKUP=0;
SystemInit();
PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);
LED2_TOGGLE();
}
}

2.4 演示

板载LD2(绿色LED)闪烁,程序中LD2的控制引脚在从低功耗模式唤醒之后翻转,闪烁表示此时处于低功耗模式进入、唤醒状态。LCD液晶屏显示时、分、秒、年份。

本次微课堂在功能设计上仅是MM32L0130 SLCD与RTC在低功耗模式下的简单应用,如果对此感兴趣者,可以自己配置RTC闹钟功能、SLCD闪烁模式,以及按键调整时间、蜂鸣提醒、LED显示等进一步完善相关功能。

审核编辑:汤梓红

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

    关注

    11

    文章

    197

    浏览量

    24496
  • VDD
    VDD
    +关注

    关注

    1

    文章

    311

    浏览量

    33103
  • 灵动微电子
    +关注

    关注

    7

    文章

    118

    浏览量

    19620
  • MM32
    +关注

    关注

    1

    文章

    106

    浏览量

    744

原文标题:灵动微课堂 (第234讲) | 基于MM32L0130的低功耗电子时钟设计

文章出处:【微信号:MindMotion-MMCU,微信公众号:灵动MM32MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于RA6M5开发板的低功耗电子时钟设计

    本项目是基于启明RA6M5开发板搭载2.4寸液晶屏的电子时钟,该电子时钟有两个模式——正常模式和低功耗模式,可以通过开发板的按键改变时钟模式。
    的头像 发表于 12-25 12:26 865次阅读
    基于RA6M5开发板的<b class='flag-5'>低功耗电子时钟</b>设计

    低功耗电子温度计的优点是什么?

    本文设计的超低功耗电子温度计能够通过温度传感器测量和显示被测量点的温度,并可进行扩展控制。该温度计带电子时钟,其检测范围为l0℃~30℃,检测分辨率为1℃,采用LCD液晶显示,整机静态功耗
    发表于 08-13 07:50

    使用MM32L0130 IRM实现红外发码

    1、使用MM32L0130 IRM实现红外发码  红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易于实现等显著优点,被诸多电子设备包括消费电子、家
    发表于 10-21 14:22

    基于MM32L0130低功耗电子时钟设计方案相关资料分享

    1、基于MM32L0130低功耗电子时钟设计  MM32L0130作为灵动微电子推出的一款低功耗芯片,内置多种省电工作模式保证
    发表于 11-09 16:00

    请问有人使用IAR进行过MM32L0130的开发吗?

    我在使用IAR8.30进行MM32L0130开发板试用时遇到了一个棘手的问题,其例程能够下载到开发板(至少在IAR中任何报错,也可以在线调试),可是就是一直开在时钟配置阶段,一直没有配置成功,有人遇到过这样的问题吗?或者在调试其他单片机时是否有类似现象?麻烦指导一下解决办
    发表于 12-18 21:48

    灵动微MM32L0130系列32位微控制器的详细介绍

    全新MM32L0130系列是灵动微电子针对低功耗应用推出的新一代MCU产品,其搭载了Arm®Cortex®-M0+内核,采用了先进的低功耗架构设计和技术手段,实现了最低700nA的RT
    发表于 04-28 16:18 725次阅读

    使用MM32L0130片上IRM模块实现红外发码

    灵动股份推出的MM32L0130系列MCU具有片上IRM红外调制器,该模块使用片上的定时器和串口,实现数据的 FSK/ASK 调制,以满足红外发码的需求。
    的头像 发表于 10-13 17:03 1205次阅读

    MM32L0130 RTC日历和闹钟

    RTC 模块是用于提供时间(时、分、秒、亚秒)和日期(年、月、日)功能的定时计数器,日历以 BCD码的格式显示。内部包含周期性的唤醒单元,用于唤醒低功耗模式。支持夏令时补偿,支持数字校准补偿晶振精度的偏差。灵动微电子推出的MM32L01
    的头像 发表于 10-28 10:37 1272次阅读

    灵动微电子低功耗单片机MM32L0130开发板申请

    低功耗单片机MM32L0130采用的是M0+内核的32位MCU,工作频率高达48兆赫兹,内置64KB Flash,8KBSRAM的高速存储器,内置段码式液晶驱动SLCD,可驱动8x36或4x40个段
    的头像 发表于 11-21 17:15 769次阅读
    灵动微<b class='flag-5'>电子</b><b class='flag-5'>低功耗</b>单片机<b class='flag-5'>MM32L0130</b>开发板申请

    集成段码LCD驱动低功耗系列MM32L0130

    灵动微集成段码LCD驱动低功耗系列MM32L0130搭载了最高主频为48MHz的Arm Cortex-M0+处理器;提供至多64KB的Flash存储空间和8KB的SRAM空间。   灵活易用的段码
    发表于 01-31 15:50 408次阅读

    MM32L0130 产品手册(中文版)

    MM32L0130 产品手册(中文版)
    发表于 02-27 18:24 0次下载
    <b class='flag-5'>MM32L0130</b> 产品手册(中文版)

    MM32L0130 产品手册(英文版)

    MM32L0130 产品手册(英文版)
    发表于 02-27 18:25 0次下载
    <b class='flag-5'>MM32L0130</b> 产品手册(英文版)

    MM32L0130 用户手册(中文版)

    MM32L0130 用户手册(中文版)
    发表于 02-27 18:26 0次下载
    <b class='flag-5'>MM32L0130</b> 用户手册(中文版)

    MM32L0130 用户手册(英文版)

    MM32L0130 用户手册(英文版)
    发表于 02-27 18:26 0次下载
    <b class='flag-5'>MM32L0130</b> 用户手册(英文版)

    使用MM32L0130和HYS1254的电子秤方案验证

    NPI提了需求,需要验证使用友商SDADC芯片和MM32L0130微控制器集成的一个系统应用方案。
    的头像 发表于 10-17 17:16 704次阅读
    使用<b class='flag-5'>MM32L0130</b>和HYS1254的<b class='flag-5'>电子</b>秤方案验证