当前位置: 首页 > news >正文

晟矽微LVD低电压检测案例分析

/******************************************************************************

;  *       @型号                 : MC32F7361

;  *       @创建日期             : 2021.12.21

;  *       @公司/作者            : SINOMCU-FAE

;  *       @晟矽微技术支持       : 2048615934

;  *       @晟矽微官网           : http://www.sinomcu.com/

;  *       @版权                 : 2021 SINOMCU公司版权所有.

;  *----------------------摘要描述---------------------------------

;  *               LVD(需外部供电)

;  *               VDD电压低于4V,P10输出低,反之输出高                                             

******************************************************************************/

#include "user.h"

/************************************************

;  *    @函数名          : CLR_RAM

;  *    @说明            : 清RAM

;  *    @输入参数        :

;  *    @返回参数        :

;  ***********************************************/

void CLR_RAM(void)

{

    for (FSR0 = 0; FSR0 < 0xff; FSR0++)

    {

        INDF0 = 0x00;

    }

    FSR0 = 0xFF;

    INDF0 = 0x00;

}

/************************************************

;  *    @函数名            : IO_Init

;  *    @说明              : IO初始化

;  *    @输入参数          :

;  *    @返回参数          :

;  ***********************************************/

void IO_Init(void)

{

    IOP0 = 0x00;                       //io口数据位

    OEP0 = 0x3F;                       //io口方向 1:out  0:in

    PUP0 = 0x00;                       //io口上拉电阻   1:enable  0:disable

    PDP0 = 0x00;                       //io口下拉电阻   1:enable  0:disable

    P0ADCR = 0x00;                     //io类型选择  1:模拟输入  0:通用io

    IOP1 = 0x00;                       //io口数据位

    OEP1 = 0xFF;                       //io口方向 1:out  0:in

    PUP1 = 0x00;                       //io口上拉电阻   1:enable  0:disable

    PDP1 = 0x00;                       //io口下拉电阻   1:enable  0:disable

    P1ADCR = 0x00;                     //io类型选择  1:模拟输入  0:通用io

    IOP2 = 0x00;                       //io口数据位

    OEP2 = 0x0F;                       //io口方向 1:out  0:in

    PUP2 = 0x00;                       //io口上拉电阻   1:enable  0:disable

    PDP2 = 0x00;                       //io口下拉电阻   1:enable  0:disablea

    PMOD = 0x00;                       //P00、P01、P13 io端口值从寄存器读,推挽输出

    DRVCR = 0x80;                      //普通驱动

}

/************************************************

;  *    @函数名            : LVD_Init

;  *    @说明              : LVD初始化

;  *    @输入参数          :

;  *    @返回参数          :

;  ***********************************************/

void LVD_Init(void)

{

    LVDCR = 0x70;//4V

    LVDEN=1;

}

/************************************************

;  *    @函数名            : Sys_Init

;  *    @说明              : 系统初始化

;  *    @输入参数          :

;  *    @返回参数          :

;  ***********************************************/

void Sys_Init(void)

{

    GIE = 0;

    CLR_RAM();

    IO_Init();

    LVD_Init();

    GIE = 1;

}

/************************************************

;  *    @函数名            : main

;  *    @说明              : 主程序

;  *    @输入参数          :

;  *    @返回参数          :

;  ***********************************************/

void main(void)

{

    Sys_Init();

    while (1)

    {

        if(LVDF == 1)                  //电压过低

        {

            P10D = 0;

        }else

        {

            P10D = 1;

        }

    }

}

/************************************************

;  *    @函数名            : interrupt

;  *    @说明              : 中断函数

;  *    @输入参数          :

;  *    @返回参数          :

;  ***********************************************/

void int_isr(void) __interrupt

{

__asm

    movra _abuf

    swapar _PFLAG

    movra _statusbuf

__endasm;

__asm

    swapar _statusbuf

    movra _PFLAG

    swapr _abuf

    swapar _abuf

__endasm;

}

/**************************** end of file *********************************************/

知识点:

低电压检测 LVD

芯片内置低电压检测模块 LVD,可通过寄存器位 LVDEN 开启,通过 LVDVS 选择电压检测阀值。当

VDD 电压降至电压检测阀值以下时检测状态标志位 LVDF 将被置 1;因 LVD 电路的回滞特性(回滞电压

典型值为 6%),VDD 电压需恢复至电压检测阀值+6%后 LVDF 才被清 0。

注:开启 LVD 或切换电压检测阀值等操作,需待电路稳定(时间>2ms)后 LVD 输出才有效。


http://www.mrgr.cn/news/65456.html

相关文章:

  • 为啥学习数据结构和算法
  • 2-143 基于matlab-GUI的脉冲响应不变法实现音频滤波功能
  • Java第九天(实训学习(八)练习题)
  • 【深度学习】用LSTM写诗,生成式的方式写诗系列之一
  • 手游和应用出海资讯:可灵AI独立APP即将上架;Rollic在英国推出芭比合并解谜手游
  • C++之数组和字符串
  • 请你谈一谈闭包?详细解释闭包的概念、形成原因、作用及与作用域、垃圾回收机制的关系
  • Python并发编程库:Asyncio的异步编程实战
  • 一文搞懂python虚拟环境配置及使用pyenv进行python多版本管理
  • 【AI】【提高认识】通往通用人工智能之路:现实与幻想的交汇
  • 学习RocketMQ(记录了个人艰难学习RocketMQ的笔记)
  • 宠物用品市场分析,宠物用品什么最好卖?
  • unity3d————点乘概念
  • 衡石分析平台系统分析人员手册-业务指标
  • DPDK 简易应用开发之路 5:实现虚拟自学习交换机
  • 【系统集成项目管理工程师】各章考点分析与分值预测
  • C++算法练习-day32——222.完全二叉树的节点个数
  • 使用redis存储签到记录
  • qt管理系统框架(好看界面、漂亮界面、好看的界面、漂亮的界面)
  • 刘艳兵-DBA023-控制文件是Oracle 数据库用来查找数据库文件,控制文件包含以下哪些信息:
  • Java开发者的Python快速实战指南:探索向量数据库之文本搜索
  • <<SQL必知必会>>读书笔记(自用)
  • Python OpenCV形态学处理和图像梯度
  • 【计算机方向】中科院一区TOP顶刊,国人发文量友好、IF:13.8,晋升神刊!
  • ValueError: set_wakeup_fd only works in main thread
  • uniapp 使用vue/pwa