简介

LVD的功能是检测 单片机VDD / VDDA 引脚上的供电电压是否低于低电压检测阈值,该阈值由电源控制寄存器(PMU_CTL)中的LVDT[2:0]位进行配置。有以下几种阈值可选:

低压检测阈值选择LVDT[2:0]

  • 000:2.2V
  • 001:2.3V
  • 010:2.4V
  • 011:2.5V
  • 100:2.6V
  • 101:2.7V
  • 110:2.8V
  • 111:2.9V

LVD的检测结果就是以标志位LVDF的形式体现的,当芯片的VDD 和VDDA引脚输入的电压低于PMU_CTL寄存器中的LVDT[2:0]位进行配置的阈值电压时,LVDF标志硬件置1,否则LVDF硬件清0。可见LVDF标志只读,完全由硬件改写。

以下是简化后的LVD阈值波形图。手册上的图强调了LVD有100mV的迟滞电压,也就是说在掉电阶段,实际触发低压检测事件的阈值是比设置的阈值低100mV左右的。为了方便理解,这里忽略这个因素。

从下图可以发现,在上电阶段,电源引脚电压上升,LVDF会从1变为0,但是我们一般不检测这个阶段,所以可以忽略。在断电阶段,电源引脚电压下降,LVDF会从0变为1,触发低压事件。

PMU的配置

LVD低压检测属于电源管理单元(PMU)中的一部分,所以要使用LVD,需要打开PMU的外设时钟。

rcu_periph_clock_enable(RCU_PMU);        //使能电源管理单元时钟

LVD的配置

LVD的寄存器很简单。RCU模块中,与LVD相关的只有3处寄存器位段:PMU_CTL.LVDT[2:0] 、 PMU_CTL.LVDEN 以及 PMU_CS.LVDF。

  • PMU_CTL.LVDT[2:0]:配置低压检测阈值
  • PMU_CTL.LVDEN:用于使能或者关闭LVD功能
  • PMU_CS.LVDF:低压事件标志位,由硬件设置,软件只读

标准库中提供了一个函数用于配置LVD,如下:

//文件:gd32f1x0_pmu.c
//功能:设置低压检测阈值,并使能LVD功能
void pmu_lvd_select(uint32_t lvdt_n)
{PMU_CTL &= ~PMU_CTL_LVDEN;  /* disable LVD */PMU_CTL &= ~PMU_CTL_LVDT;  /* clear LVDT bits */PMU_CTL |= lvdt_n;          //设置LVD检测阈值PMU_CTL |= PMU_CTL_LVDEN;   //使能低压检测机制
}

通过EXTI来使用LVD中断

LVD事件连接至EXTI的第16线,用户可以通过配置EXTI的第16线产生相应的中断,即通过低压标志位LVDF的高和低的变化来触发EXTI Line16的中断。所以LVD中断必须借助EXTI去完成。EXTI Line16只用于服务LVD,没有其他的触发源可选。

由于我们通常只关注掉电阶段的低压检测事件,因此应该配置EXTI的检测沿为上升沿触发。

注意,虽然LVD中断是通过EXTI 来实现的,但是其中断在名义上却是LVD中断:要开启LVD中断使能,并编写LVD中断服务函数。

nvic_irq_enable(LVD_IRQn,2,0);          //使能LVD检测中断//LVD中断函数
void LVD_IRQHandler(void)
{//LVD紧急操作,例如写入重要数据到Flash做掉电存储}

使用LVD中断来实现掉电数据保护

在许多应用场景中,都有在单片机断电前及时将关键数据写入到非易失存储器中保存,以便下次开机再次恢复关键数据的需求。这种需求可以使用LVD中断来实现。当单片机电源断开时,必定导致其VDD/VDDA引脚上的电压缓慢下降,最终为0。尤其是当单片机电源加了大电容时,掉电过程会更加缓慢。那么单片机在触发LVD中断后,就会有更充足的时间去执行数据紧急存储操作。

使用LVD来做掉电存储的优点是无需外加复杂的断电检测电路,同时也避免反复写Flash或者EEPROM存储器,降低存储器寿命,因为只需要在掉电的时候写存储器就行了。

下面是一个例子,使用flag变量来决定LED闪烁的快慢,flag在每次掉电时,取反后存储到片上Flash。每次上电时从Flash读取到变量中。其结果是每断电上电一次,LED的闪烁频率就会改变一次。

#include "gd32f1x0.h"
#include <stdio.h>void delay_ms(uint32_t n)
{uint32_t j;while(n--){j=18888;while(j--);}
}#define LED13_ON    gpio_bit_set(GPIOC,GPIO_PIN_13)
#define LED13_OFF   gpio_bit_reset(GPIOC,GPIO_PIN_13)
#define LED13_TOG   \
do{                 \
if(gpio_output_bit_get(GPIOC,GPIO_PIN_13)) \gpio_bit_reset(GPIOC,GPIO_PIN_13);     \
else                                       \gpio_bit_set(GPIOC,GPIO_PIN_13);       \
}while(0)void RCU_config(void)
{rcu_periph_clock_enable(RCU_GPIOC);  //打开GPIOC外设时钟rcu_periph_clock_enable(RCU_PMU);    //使能电源管理单元时钟}void NVIC_config(void)
{nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0);   nvic_irq_enable(LVD_IRQn,2,0);     //使能LVD检测中断
}void LVD_config(void)
{while(RESET != pmu_flag_get(PMU_FLAG_LVD)) ;  //越过上电阶段pmu_lvd_select(PMU_LVDT_7); //配置检测阈值,使能LVD功能
}void EXTI_config(void)
{//EXTI Line 16 for LVDexti_flag_clear(EXTI_16);exti_init(EXTI_16,EXTI_INTERRUPT,EXTI_TRIG_RISING);  //检测上升沿
}void GPIO_config(void)
{//配置PC13推挽输出gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_13); gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_13); }//掉电存储数据的起始Flash Page
#define USER_FLASH_S_ADDR  (0x08000000 + 32*1024)volatile uint32_t flag;int main(void)
{RCU_config();  //外设时钟初始化NVIC_config(); //NVIC初始化LVD_config();  //LVD初始化EXTI_config(); //EXTI 初始化GPIO_config(); //GPIO初始化flag = REG32(USER_FLASH_S_ADDR);  //从Flash加载数据到内存变量flag//擦除flag所在的page,为掉电存储做准备fmc_unlock();fmc_flag_clear(FMC_FLAG_END | FMC_FLAG_WPERR | FMC_FLAG_PGERR);fmc_page_erase(USER_FLASH_S_ADDR);fmc_lock();while(1){LED13_TOG;if(flag==0){delay_ms(100);}else{delay_ms(500);}}
}//LVD中断函数
void LVD_IRQHandler(void)
{__disable_irq();//将flag取反然后写入到Flash掉电存储fmc_unlock();fmc_flag_clear(FMC_FLAG_END | FMC_FLAG_WPERR | FMC_FLAG_PGERR);fmc_word_program(USER_FLASH_S_ADDR,!flag);   fmc_lock();__enable_irq();exti_interrupt_flag_clear(EXTI_16);   //清除EXTI Line中断标志
}

GD32F130之LVD低压检测相关推荐

  1. 24V低压检测电路 - 低压检测电压

    当电压采样速率低和要求低时,左边电路图即可满足:当采样速率和精度要求比较高时,采用右边电路. Vin=24V低压检测电路,将24V转换到0-3V3之间,实测效果挺好的,电阻使用1%的精度.

  2. STC8A单片机应用开发

    作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 参考 51单片机实现scanf ...

  3. 泰芯TX8C1260TS20 TSSOP20封装(兼容STM8S003F3、新唐N76E003AT20)通用8位MCU单片机

    泰芯TX8C1260TS20可替代兼容ST.新唐.中微.芯圣.赛元等品牌003  泰芯TX8C1260系列是一款高性能低功耗的8051内核MCU,工作主频最高为48MHz,内置16K字节LogicFl ...

  4. 检测心率的体重心率秤方案开发

    心率体脂秤方案规格概述: 开机方式:上秤开机 显示屏:LED显示屏 关机时间:超时关机: 低压检测:一点或两点检测 按键种类:轻触.触摸.拨动 工作电压:4.5V 低电压提示:3.6v±0.1v 单位 ...

  5. 低电压检测类型的电压检测器IC能否用作过电压检测使用?

    可以把电源电压恢复时的复位解除电压作为过电压检测电压使用. 但是,必须注意以下几种用法. <低压检测类型的电压检测器IC作为过电压检测使用时的注意事项> 使用时,电源电压即使瞬间也不能超过 ...

  6. 领芯微基于LCM32F037吹风筒方案

    本调试手册介绍了应用 LCM32F037 系列 MCU 的永磁同步电机(PMSM) 双电阻矢量控制(FOC)基本原理和调试方法.LCM32F037 是一款 32 位基于 ARM-Cortex-M0 内 ...

  7. 单片机的组成以及分类和指标

    单片机的组成 单片机又称单片微控制器,它把一个计算机系统集成到一块芯片上,主要包括微处理器(CPU).存储器(随机访问存储器RAM.只读存储器ROM)和各种输入/输出接口(包括定时器/计数器.并行I/ ...

  8. 【STC头文件】STC8系列之STC8G头文件寄存器注释

    [STC头文件]STC8系列之STC8G头文件寄存器注释 特殊功能寄存器介绍 定时器/计数器工作方式寄存器(TMOD ) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 TMOD(定时器模 ...

  9. 蓝桥杯单片机比赛学习:5、中断系统之外部中断的基本原理

    中断的基本概念 百度百科上是这样说的,当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作 ...

  10. LGT8F328P替代Atmega328P用ArduinoIDE开发完全指导手册

    写在之前 ​ arduino uno R3自发布至今已有10多年,早已风靡全球,它的主控采用的是Atmel公司的Atmega328P主控,这是一颗基于AVR架构的8位单片机,面世有数十年了.得益于ar ...

最新文章

  1. GUI_Download的Codepage参数
  2. 吴恩达《Machine Learning》精炼笔记 6:关于机器学习的建议
  3. Bootstrap4+MySQL前后端综合实训-Day05-AM【MySQL数据库(SQLyog软件基本操作、架构设计器)、eclipse(JDBC开发-添加驱动、构建路径、增删改查基本测试)】
  4. python卸载后安装不上_[宜配屋]听图阁
  5. 解决OracleDBConsoleorcl不能启动【转】
  6. Java se之动态代理
  7. firewall mysql端口_Centos7 firewall开放3306端口
  8. [QGLViewer]3D场景鼠标点击位置
  9. 我的世界之 paper和spigot 的区别 Java服务端开服
  10. 翻译: 图解卡尔曼滤波器的工作原理
  11. ssr使用mysql数据库_MySQL数据库安装与配置详解
  12. java对redis的基本操作 - edisonfeng
  13. 【Photoshop 教程系列第 3 篇】如何在 PS 中修改图片的分辨率和大小(一步一步详细说明)
  14. 2020腾讯广告大赛 :13.5 baseline
  15. HTML常用标签总结 [建议收藏]
  16. Unity Shader混合模式笔记(Blend)
  17. java hadoop是什么_hadoop是什么语言
  18. 笔记本触摸板基本代替鼠标的常用操作
  19. C语言程序设计会员计费系统,C语言课程设计酒店房间登记与计费管理系统总结报告...
  20. 质量团队的组建与升级

热门文章

  1. 产品需求文档到底该怎么写?
  2. mysql键值相同_mysql什么是键值重复
  3. TCGA/癌症基因组图谱数据库|肿瘤简写中英文对照
  4. 全球及中国军用海岸雷达行业研究及十四五规划分析报告
  5. QT 多显示屏获取屏幕分辨率
  6. shopnc nodejs安装
  7. The Preliminary Contest for ICPC Asia Nanjing 2019
  8. 【寻找最佳小程序】13期:心算练习——寓教于乐,练就小朋友强大的算术能力...
  9. 我在故宫修文物大电影B站爬虫
  10. 新开淘宝店铺如何从0到1