杭州晶华微:带32位MCU和高精度ADC的SoC产品 ----SD93F系列开发指南(七)

作者: 爱集微 07-31 17:32
来源:晶华微 #晶华微# #SoC#
5712

前言

在开发指南(六)中,我们简单介绍了LBT模块中如何控制DAC准确输出,本章我们再讲解一下如何使用LBT模块的比较器功能实现简单的低电压检测,详细寄存器资料参考应用手册第11章节。

LBT(低压检测)结构框图

我们首先来看一下LBT的结构框图,如下图1:

图1.LBT结构图

从应用手册和LBT结构框图中我们可以得知LBT COMP是一个rail to rail 的输入比较器,比较器正端由COMP[2:0]位控制,比较器负端由DAP[3:0]位控制,比较器的输出 LBTO 上升沿和下降沿都可以产生 LBT中断,比较器使能控制位(LBTCOMPEN),比较器输出滤波控制位(DELAYEN)等。

LBT检测的配置

1、LBT初始化

接下来我们按照图2的LBT初始化程序以及相关寄存器了解一下相关的配置。

第一步:要选择比较器正端输入:可以选择A10/A12/P01/P30/VSS或VBG,实例程序以P30作为比较器正端输入,并将P30设为LBT检测IO。(具体连接的引脚查阅相关原理图)

第二步:选择是否开启2us延时滤波,实例程序开启了延时滤波。

第三步:要选择比较器负端输入:可以选择DAC的分压信号或VBG,合理的选择DAC分压可以实现更精确、范围更全面的电压判断。实例程序以VBG电压作为比较器负端输入,要实现VBG电压的输入,需要将DAP[3:0]设置为1111,即DACP=0x0f。

第四步:开启LBT使能。

图2.LBT初始化程序

LBT检测程序

在配置好LBT初始化后,我们在main函数中编写LBT_TEST();我们需要去实时检测LBT寄存器中LBTO的值来确定比较器的输出。

当P30输入的电压超过VBG电压时,比较器输出LBTO就会置1,于是我们编写简单的测试程序(如图3),当比较器正端电压大于负端电压时,LBTO就会置1,LCD显示‘1’;当比较器正端电压小于负端电压时,LBTO就会置0,LCD显示‘0’,此时我们将P30引脚拉低,LCD显示‘0’,我们将P30引脚接高,LCD显示‘1’。

图3.LBT测试程序

开发问题简析

一般LBT(低电压检测功能)都用在电池电压检测上,用来监测电池电压是否过低,提醒客户进行充电或者更换电池,使用时需注意将IO设置为模拟引脚,软件判断LBTO状态时应注意避开电路存在大电流的时刻,例如驱动喇叭、蜂鸣器响或LED显示刷新等时刻都可能会持续拉低电源电压,导致软件误判,为避免软件误判,建议连续判断一段时间都为低压状态再执行后续操作。

总结

灵活的配置DAC电压,可以获得更宽的电池电压检测范围。

THE END
责编: 爱集微
来源:晶华微 #晶华微# #SoC#
关闭
加载

PDF 加载中...