[综合信息] 【分享】HC32F072的LVD模块试用心得(用于掉电检测)

[复制链接]
2546|4
 楼主| caizhiwei 发表于 2020-9-2 14:10 | 显示全部楼层 |阅读模式
HC, stc, tc, VDC
挺好用的,直接就用上了,看看手册就搞定了!最大的优点是可以选择不同的引脚。

LVD 简介
LVD 可用于监测 VCC 及芯片管脚的电压。当被监测电压与 LVD 阈值的比较结果满足
触发条件时,
LVD 会产生中断或复位信号,用户可根据该信号执行一些紧急任务。
LVD 具有以下特性:
 4 路监测源, AVCCPC13PB08PB07
 16 阶阈值电压, 1.8V~3.3V 可选;
 8 种触发条件,高电平、上升沿、下降沿组合;
 2 种触发结果,复位、中断;
 8 阶滤波配置,防止误触发;
具备迟滞功能,强力抗干扰。  


关键核心代码:
  1. void BSP_Lvd_Init(void)
  2. {
  3.     stc_lvd_cfg_t stcLvdCfg;

  4.     DDL_ZERO_STRUCT(stcLvdCfg);     //变量清0

  5.     Sysctrl_SetPeripheralGate(SysctrlPeripheralVcLvd, TRUE);    //开LVD时钟

  6.     stcLvdCfg.enAct        = LvdActMskInt;              ///< 配置触发产生中断
  7.     stcLvdCfg.enInputSrc   = LvdInputSrcMskVCC;        ///< 配置LVD输入源AVCC
  8.     stcLvdCfg.enThreshold  = LvdMskTH3_3V;              ///< 配置LVD阈值电压
  9.     stcLvdCfg.enFilter     = LvdFilterMskEnable;        ///< 滤波使能
  10.     stcLvdCfg.enFilterTime = LvdFilterMsk28_8ms;        ///< 滤波时间设置
  11.     stcLvdCfg.enIrqType    = LvdIrqMskRise;             ///< 中断触发类型
  12.     Lvd_Init(&stcLvdCfg);
  13.    
  14.     ///< 中断开启
  15.     Lvd_EnableIrq();
  16.     Lvd_ClearIrq();
  17.     EnableNvic(VC0_1_2_LVD_IRQn, IrqLevel3, TRUE);              ///< NVIC 中断使能
  18.    
  19.     ///< LVD 模块使能
  20.     Lvd_Enable();
  21. }



  22. ///< LVD 中断服务函数,写参数wheel.jinwei到flash.
  23. void Lvd_IRQHandler(void)
  24. {
  25.     Lvd_ClearIrq();
  26.    
  27.     //delay1ms(100);
  28.     //Gpio_WriteOutputIO(GpioPortA, GpioPin3, TRUE);    //中断受触发设置限制,LVD输出不受限制

  29. }

掉电检测需要配置 上升沿,原因是内部有反相器了。


评论

掉电检测需要配置 上升沿……是因为LVD的内部比较器,检测端是反相输入的,参考电压在正相输入……  发表于 2020-9-3 09:42
zeshoufx 发表于 2020-9-2 15:21 | 显示全部楼层
谢谢分享【HC32F072的LVD模块试用心得】
不知道取啥名 发表于 2020-12-30 11:13 | 显示全部楼层
谢谢分享
aoo 发表于 2020-12-31 17:16 | 显示全部楼层
千人QQ群:206032332
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

856

帖子

16

粉丝
快速回复 在线客服 返回列表 返回顶部