一:AI内部比较器知识:
Ai8051U 系列单片机内部集成了一个比较器。比较器的正极可以是 P4.6端口、P5.0端口、P5.1端口或者 ADC 的模拟输入通道,而负极可以P4.4端口或者是内部 BandGap 经过 OP 后的 REFV 电压(内部固定比较电压)。通过多路选择器和分时复用可实现多个比较器的应用。
比较器内部有可程序控制的两级滤波:模拟滤波和数字滤波。模拟滤波可以过滤掉比较输入信号中的毛刺信号,数字滤波可以等待输入信号更加稳定后再进行比较。比较结果可直接通过读取内部寄存器位获得,也可将比较器结果正向或反向输出到外部端口。将比较结果输出到外部端口可用作外部事件的触发信号和反馈信号,可扩大比较的应用范围。
特别说明: 由于 USB 的 UCAP 管脚占用了 P4.4 的 Pin 脚,所以目前的LOFP48 和LOFP44 脚都没有 P4.4 口,所以比较器的负端只能选择内部 1.19V 的参考电压
二:原理图如下所示:

输入电压被电阻 R1 和 R2 分压到比较器正极输入端 CMP+,CMP+端输入电压低于内部 1.19V 参考信号源,此时可产生比较器中断,这样在掉电检测时就有充足的时间将数据保存到 EEPROM 中。当稳压块 7805前端的直流电压高于8.5V 时,该前端输入的直流电压被电阻 R1 和 R2 分压到比较器正极输入端 CMP+,CMP+端输入电压高于内部 1.19V 参考信号源,此时 CPU 可继续正常工作。
三:软件代码如下所示:
/********************** 低压中断函数 ************************/
void LVD_Routine(void) interrupt 6
{
u8 i;
P_HC595_SER = 0;
for(i=0; i<16; i++) //先关闭显示,省电
{
P_HC595_SRCLK = 1;
P_HC595_SRCLK = 0;
}
P_HC595_RCLK = 1;
P_HC595_RCLK = 0; //锁存输出数据
// P42 = 0;
#if (LargeCapacitor > 0) //滤波电容比较大,电容保持时间比较长(50ms以上),则在中断里擦除
EEPROM_SectorErase(EE_ADDRESS); //擦除一个扇区
#endif
tmp[0] = (u8)(Test_cnt >> 8);
tmp[1] = (u8)Test_cnt;
EEPROM_write_n(EE_ADDRESS,tmp,2);
// P42 = 1;
while(LVDF) //检测是否仍然低电压
{
LVDF = 0; //低压检测标志清0
for(i=0; i<100; i++) ; //延时一下
}
}AI8051的ISP下载配置如下所示:

四:LVD使用注意事项:
4.1 LVD模块使能:
确认电源电压范围,使能对应的LVD检测电路(通常通过寄存器LVDCON或类似控制位)。
注意某些型号需同时开启电源监控模块(如PCON或PMU相关位)。
4.2 阈值电压选择
根据数据手册提供的阈值级别(如2.7V、3.0V、4.2V等)配置寄存器。
注意阈值精度(典型误差±5%),设计时需留有余量。
4.3 滤波与响应时间
启用内部滤波(如设置LVD_FLT位)避免电压抖动误触发。
注意检测响应时间(通常几十微秒级),在快速掉电场景需提前动作。
我要赚赏金
