适用对象:
HC32L110系列:HC32L110C6UA、HC32L110C6PA、HC32L110C4UA、HC32L110C4PA、HC32L110B6PA、HC32L110B4PA
HC32F003系列:HC32F003C4UA、HC32F003C4PA
HC32F005系列:HC32F005C6UA、HC32F005C6PA、HC32F005D6UA
1、摘要
本篇应用笔记主要介绍如何使用HC32L110/HC32F003/HC32F005系列的 LVD 模块进行低电压检测。
2、LVD 简介
低功耗 MCU 大多数应用在以电池为电源的环境中。当电池消耗能量时,电池电压会缓慢下降。当电压下降到一定阀值后,会导致系统工作异常,因此有必要实时检测电压,当电压下降到预定阀值后系统进行保护处理或给予警报。
3、LVD 模块
3.1 简介
HC32L110 / HC32F003 / HC32F005 系列 MCU 内部集成 LVD 模块,用于低电压检测功能。
3.2 说明
HC32L110 / HC32F003 / HC32F005 内部集成的 LVD 具有以下特性:
- 支持四路输入电压可供选择:工作电压 VCC,以及外部引脚 P0.3, P2.3 和 P2.5 的输入电压;
- 支持软件可配置的检测电压,共有 16 阶可供选择;
- 支持软件可配置的输出选择,产生复位信号或中断信号;
- 支持软件可配置的中断触发方式:高电平触发/上升沿触发/下降沿触发;
- 支持幅度迟滞以增强芯片的抗干扰能力;
- 支持软件可配置的滤波时间以增强芯片的抗干扰能力。
3.2.1 寄存器介绍
对于 LVD 模块的操作主要通过以下寄存器进行:
1) 配置寄存器:主要用来配置 LVD 模块
2) 中断寄存器:中断标志
3.2.2 工作流程介绍
在本章节主要介绍 LVD 的设置和运行流程:
4、样例代码
4.1 代码介绍
用户可以根据上述的工作流程编写自己的代码来学习验证该模块,也可以直接通过华大半导体的网站下载到设备驱动库(Device Driver Library, DDL)的样例代码并使用其中的 LVD 的Example 进行验证。
以下部分简要介绍该代码(DDL → Example → LVD → lvd_detect_high_irq)的各个部分的功能:
1) LVD 时钟使能:
//LVD时钟使能
Clk_SetPeripheraLGAte(ClkPeripheralVcLvd, TRUE);
2) 若使用外部引脚电压输入,配置管脚:
//配置LVD输入脚(以P0.3为例)
Clk_SetPeripheralGate(ClkPeripheralGpio, TRUE);
Gpio_SetAnalog(0, 3, TRUE);
3) 初始化 LVD:
//初始化LVD
stcLvdCfg.bLvdReset = FALSE;
stcLvdCfg.enInput = LvdInputP03;
stcLvdCfg.enThreshold = LvdTH3p0V;
stcLvdCfg.bFilter = TRUE;
stcLvdCfg.enFilterTime = LvdFilter20ms;
stcLvdCfg.enIrqType = LvdIrqHigh;
stcLvdCfg.pfnIrqCbk = LvdIrqCallback;
Lvd_Init(&stcLvdCfg);
4) 配置中断并使能:
//配置中断并使能
stcLvdCfg.enIrqType = LvdIrqHigh;
Lvd_EnableIrq(stcLvdCfg.enIrqType);
5) 使能 LVD 检测:
//使能LVD检测
Lvd_Enable();
通过以上代码即可配置并使能 LVD。
4.2 代码运行
用户可以通过华大半导体的网站下载到 LVD 的样例代码,并配合华大 Starterkit SK-L110-TSSOP20(本节说明以 HC32L110 系列为例)运行相关代码学习使用 LVD 模块。
|