这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 国产MCU » 学习AI8051开发板例程:13AI8051的LVD低压检测VCC中断保存EEP

共2条 1/1 1 跳转至

学习AI8051开发板例程:13AI8051的LVD低压检测VCC中断保存EEPROM

高工
2025-12-08 10:53:24     打赏

一: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 的参考电压

二:原理图如下所示:

12-1.png

 输入电压被电阻 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下载配置如下所示:

12-2.png

四:LVD使用注意事项:

4.1 LVD模块使能:

 确认电源电压范围,使能对应的LVD检测电路(通常通过寄存器LVDCON或类似控制位)。

 注意某些型号需同时开启电源监控模块(如PCON或PMU相关位)。

4.2  阈值电压选择

    根据数据手册提供的阈值级别(如2.7V、3.0V、4.2V等)配置寄存器。

    注意阈值精度(典型误差±5%),设计时需留有余量。

4.3  滤波与响应时间

   启用内部滤波(如设置LVD_FLT位)避免电压抖动误触发。

   注意检测响应时间(通常几十微秒级),在快速掉电场景需提前动作。




关键词: AI8051     低压     检测    

院士
2025-12-08 23:22:00     打赏
2楼

一直看着有这样一个功能。现在也一直没有部署这个功能。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]