你好!欢迎来到深圳市颖特新科技有限公司!
语言
当前位置:首页 >> MM32/灵动微电子 >> 灵动微-MM32 电源管理

灵动微-MM32 电源管理

关键字:灵动微电子 MM32 电源管理 作者: 来源: 发布时间:2022-06-08  浏览:32
在应用开发中,通常需要考虑当出现系统供电电压下降或掉电突发状况时,需对控制系统加以保护,防止出现意外,故在程序中需加入对系统电压的监控。当供电电压降低到某一电压值时,需要系统进入特别保护状态,执行紧急关闭任务:对系统的一些数据保存起来,同时对外设进行相应的保护操作。

MM32L0系列产品的工作电压(VDD)为 2.0V ~ 5.5V。通过内置的电压调节器提供所需的 1.5V 电源。                                             

电压调节


注: VDDA 和 VSSA 必须分别连到 VDD和 VSS。


MM32L0系列产品内部有一个完整的上电复位(POR)和掉电复位(PDR)电路,当供电电压达到 2.0V 时系统才能正常工作。


当 VDD/VDDA 低于指定的限位电压 VPOR/VPDR时,系统保持为复位状态,而无需外部复位电路。


复位状态


POR = Power On Reset 上电复位;PDR = Power Down Reset 掉电复位。


POR的功能是在VDD电压由低向高上升越过规定的阀值之前,保持芯片复位,当越过这个阀值后的一小段时间后(图中的"滞后时间"或表中的"复位迟滞"),结束复位并取复位向量,开始执行指令。当VDD上升越过POR阀值时,内部并不马上结束复位,而是等待一小段时间(Reset temporization)。Reset temporization是为了等待供电电压能够升高到最低可靠工作电压以上,我们看到POR阀值典型值只有1.656V(参考MM32 DS手册表内嵌复位和电源控制模块特性),低于数据手册中给出的最低可靠工作电压2.0V,所以这个滞后时间是十分必要的,如果供电电压上升缓慢,尤其是从1.8V升到2.0V以上超过1~2.5ms,则很可能造成上电复位后MCU不能正常工作的情况。


PDR功能是在VDD电压由高向低下降越过规定的阀值后,将在芯片内部产生复位。


MM32内部自带PVD功能,用于对MCU供电电压VDD进行监控。通过电源控制寄存器中的PLS[12:9]位来设定监控电压的阀值,通过对外部电压进行比较来监控电源。当条件触发,需要系统进入特别保护状态,执行紧急关闭任务:对系统的一些数据保存起来,同时对外设进行相应的保护操作。


用户可以利用 PVD 对 VDD电压与电源控制寄存器(PWR_CTRL)中的PLS[12:9]位进行比较来监控电源,这几位选择监控电压的阀值。

监控电源


PVD = Programmable Votage Detector 可编程电压监测器,它的作用是监视供电电压,在供电电压下降到给定的阀值以下时,产生一个中断,通知软件做紧急处理。


PLS[12:9]位用于选择PVD监控电源的电压阀值: 


0000:1.8V       0101:3.3V        1010:4.8V


0001:2.1V       0110:3.6V  


0010:2.4V       0111:3.9V


0011:2.7V       1000:4.2V  


0100:3.0V       1001:4.5V  


电源控制/状态寄存器(PWR_CSTA)中的 PVDO 标志用来表明 VDD是高于还是低于 PVD 的电压阀值。该事件在内部连接到外部中断的第 16线,如果该中断在外部中断寄存器中是使能的,该事件就会产生中断。当 VDD下降到 PVD 阀值以下和(或)当 VDD 上升到 PVD 阀值之上时,根据外部中断第 16 线的上升/下降边沿触发设置,就会产生 PVD 中断。例如,这一特性可用于用于执行紧急关闭任务。


一、库函数操作流程(中断方式):  


1)、电源接口时钟使能


    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);


2)、PWR_PVDLevelConfig(PWR_PVDLevel_4V2); // 设定监控阀值


3)、PWR_PVDCmd(ENABLE); // 使能PVD 


4)、EXTI_ClearITPendingBit(EXTI_Line16);//清中断


5)、EXTI_InitStructure.EXTI_Line = EXTI_Line16; // PVD连接到中断线16上


6)、EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //使用中断模式


7)、EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;//表示电压上升或下降越过设定阀值时都产生中断


8)、EXTI_InitStructure.EXTI_LineCmd = ENABLE; // 使能中断线


9)、EXTI_Init(&EXTI_InitStructure); // 初始化


 


    EXTI_InitStructure.EXTI_Trigger的赋值可选项: 


 EXTI_Trigger_Rising---表示电压从高下降到低于设定阀值时产生中断;


 EXTI_Trigger_Falling---表示电压从低上升到高于设定阀值时产生中断;


 EXTI_Trigger_Rising_Falling---表示电压上升或下降越过设定阀值时都产生中断。


 
10)、中断优先级配置


    NVIC_InitStructure.NVIC_IRQChannel = PVD_IRQn;


    NVIC_InitStructure.NVIC_IRQChannelPriority = 0;


    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;


    NVIC_Init(&NVIC_InitStructure);


 2、当工作电压低于设定阀值时,将产生PVD中断,在中断程序中进行相应的处理:


 void PVD_IRQHandler(void) 





if( RESET != EXTI_GetITStatus(EXTI_Line16))


{  


EXTI_ClearITPendingBit(EXTI_Line16);  …… // 用户添加紧急处理代码处


WriteToBackupReg(0x3210);//往BKP寄存器里面存数据


}


}


在测试的例程中,我配置的PVD工作方式为中断上升和下降沿触发,当VDD高于预设PVD阈值或者低于阈值而产生边沿触发时,都会形成一次PVD中断,然后读取PWR_CSR的PVDO标志位检查是低电压提醒还是高电压提醒,以此来达到监控MCU供电情况的目的。


二、寄存器操作流程(查询方式):  


1)、电源接口时钟使能


RCC->APB1ENR |= 0x10000000;


2)、设置阈值电压,电源电压检测器(PVD)使能


PWR->CR =0x1010;   //电压检测阈值=4.2v,PVDE=1使能


3)、等待PVDO输出状态


if((PWR->CSR&0x0004) !=0)


         {


              SCB->AIRCR =0x05fa0004;//软件复位


         }


       else


         {


     WriteToBackupReg(0x3210);//往BKP寄存器里面存数据


    return;


         }


 


小结:


1、 MM32L0系列产品 PVD所对应的时钟挂在APB1上,在使用PVD功能时需要使能PWR时钟。


2、 使用寄存器配置如何判断掉电过程还是还是上电过程?


寄存器


可以根据电源控制/状态寄存器(PWR_CSR)的PVDO位来判断,PVDO从1变0表示上电过程,从0变1表示掉电过程,用户可以根据该位来判断是需要上电复位还是掉电复位。

如需要了解更多灵动微MCU产品,请联系灵动微核心代理商-颖特新科技

编辑:ls  最后修改时间:2022-06-08

联系方式

0755-82591179

传真:0755-82591176

邮箱:vicky@yingtexin.net

地址:深圳市龙华区民治街道民治大道973万众润丰创业园A栋2楼A08

Copyright © 2014-2023 颖特新科技有限公司 All Rights Reserved.  粤ICP备14043402号-4