MSP430程序库<十二>SVS(电源电压监控器)模块

2019-10-09来源: eefocus关键字:MSP430  程序库  SVS  电源电压监控器

电源电压监控对于单片机来说,也是经常要用的模块。当需要稳定的工业级产品时,经常要对电源电压监控,以保证单片机系统工作于正常环境或范围中。MSP430F16x提供了一个现成的电源电压监控器模块SVS,方便检测电源电压或者是外部电压,可以设置为电压过低时复位 或置标志位。本程序即完成SVS的设置使用的程序库(msp430f14x没有此模块)。


硬件介绍:

MSP430单片机含有的SVS模块可以很方便的监控电源电压或外部电压。


电源电压监控器(SVS)是用于监控AVCC电源电压或外部电压。 SVS的可配置当电源电压或外部电压下降到低于用户选择的电压级别时设置一个标志,或产生POR复位。


SVS模块有以下特点:可以监控AVCC电压;可选择产生复位信号;可软件设置SVS比较器输出信号;低电压标志可以被锁定或被用户程序访问;有14个可供选择的电压门限;可以监控外部输入电压。SVS模块可以很方便的监控电源电压或系统的其他电压,可以产生复位信号或是置标志位。


SVS模块仅有一个8位的寄存器,使用十分方便。寄存器SVSCTL:


image


高四位VLDx用来设置监控电源电压的门限、关闭SVS或者选择监控外部输入电压。具体含义如下:


    0000 SVS is off     0001 1.9 V 检测AVCC是否低于1.9v,以下类似

    0010 2.1 V          0011 2.2 V

    0100 2.3 V          0101 2.4 V

    0110 2.5 V          0111 2.65 V

    1000 2.8 V          1001 2.9 V

    1010 3.05           1011 3.2 V

    1100 3.35 V         1101 3.5 V

    1110 3.7 V

    1111 检测由SVSIN引脚输入的电压是否低于1.2 V.

当高四位是 0时,SVS模块是关闭的;1-14分别是对电源电压监控的14个门限电压;15时,监控外部电压,门限电压是1.2v。


PORON位设置是否启动电压低于门限时,单片机复位:1 复位 0 置标志位SVSFG


SVSON位,这位和其他模块的ON位不太一样,SVSON位仅仅指示当前SVS模块是否打开,而不是用来开关模块的。


SVSOP位,这位是设置SVS内部比较器输出值:0 输出低电平 1 输出高电平。


SVSFG位,标志位 指示是否检测到低电压 仅PORON 为0时有效 出现低电压后置1;改为不会自动清零,必须软件清零。


另外,SVS模块值得一提的是:SVS门限电压已经设置回差带:每个SVS的水平已经滞后AVCC,接近临界值时,以减少小型电源电压的变化的敏感性。 SVS的操作和SVS /掉电互操作如图:


image


如图:为防止电压在门限附近变动时,SVS过于敏感,每个门限附近都有回差带。这样SVS模块用起来更好用。


程序实现:

程序主要是对SVS模块寄存器SVSCTL的设置和检测。首先是设置SVS函数:


void SVSSetup(char voltageLevel,char reset)

{

    SVSCTL = voltageLevel << 4;

    /*if(voltageLevel == 0x15)            //外部输入 打开对应功能口

    {

        P6SEL |= BIT7;                    //不需要,当用SVSIN时,自动从此脚检测

    }*/

    if(reset <= 1)

    {

        SVSCTL |= reset << 3;

    }

}

voltageLevel:这个参数和寄存器SVSCTL的高四位VLDx意思完全一样,程序仅仅是把它移动到高四位赋值给寄存器SVSCTL,reset参数对应PORON位,也是直接赋值给对应位完成设置。


检测是否有低于门限电压的情况出现:


char SvsFlg()

{

    return (SVSCTL&SVSFG);

}

这个函数更简单,仅仅把标志位SVSFG的值返回,以便用户判断是否出现了低于门限的情况出现。


标志位清零:


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

* 名    称:ClearSvs

* 功    能:电源电压监控器的过低标志

* 入口参数:sync:同步 1:阻塞运行直到该函数电压恢复正常 0:不阻塞,清除即返回

* 出口参数:无

* 说    明: 若传入参数为0 不阻塞 则如果电压没有恢复到正常范围 则标志会立即被

            单片机重新置位(1)

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

void ClearSvs(char sync)

{

    if(!sync)

    {

        SVSCTL &=~ SVSFG;

        return;

    }

    while(SVSCTL&SVSFG)

        SVSCTL &=~ SVSFG;   //清除标志 直到电压正常

}

由于SVSFG标志位不会在处理后自动被清除,所以必须软件清零。这个函数有两种工作方式,同步阻塞等待,直到电压恢复正常后才返回和清零后即返回。


程序实现比较简单,但能够完成SVS的功能。下面介绍如何使用本程序库。


使用示例:

使用程序库的方式还是和以前一样:工程中加入SVS.c文件,源文件中加入对SVS.h的文件包含。


main.c主要内容如下:


#include    //430寄存器头文件

#include

#include "Lcd12864.h"

#include "SVS.h"


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

* 名    称:main主程序

* 功    能:设置串口,输出信息,从串口读计算机键盘输入数据,测试串口收发

* 入口参数:无

* 出口参数:无

* 说    明:复位测试时 每次电压调低再调正常 液晶显示的数据加1

            不复位时 每次调低 输出一个电压过低。

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

void main()

{

    // Stop watchdog timer to prevent time out reset

    WDTCTL = WDTPW + WDTHOLD;

    ClkInit();

    LcdInit();

    

    /*//======== 电压过低时复位测试============

    __no_init char ff;      //复位不初始化


    SVSSetup(0x0A,1);       //检测电源电压 3.05v 低于3.05v时单片机复位

    ff++;                   //此变量 每次复位加1

    printf("%d",ff);        // 电压调低(<3.05v)再调高,显示变量将加1

    */

    SVSSetup(0x0A,0);       //测电源电压 3.05v 低于3.05v时单片机 不复位

                            //0x0A 改为0x0f 则对P6.7电压监控 检测是否低于1.2v

    while(1)

    {

        if(SvsFlg()) 

            printf("电压过低");

        //SVSFG位必须 软件清零,如果电压没有回到3.05以上,

        //位的值立即被单片机置为1

        ClearSvs(1);        //清除标志 直到恢复正常电压

    }

}

本程序使用12864液晶来显示电压过低的情况:复位时,设置一个__no_init变量,每次复位加1,可以看到电压调低后,显示数字被加1.不复位置,显示电压过低。这里使用的是12864的底层驱动和printf函数移植,比之前做了稍微更改,这些在注释中说明的已经很详细了,这里不在细说。


关键字:MSP430  程序库  SVS  电源电压监控器 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic476516.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:MSP430程序库<十三>硬件乘法器使用
下一篇:MSP430程序库<十一>定时器TA的PWM输出

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

MSP430程序库<十一>定时器TA的PWM输出
;          //TA PWM输出程序库头文件void main(){    // Stop watchdog timer to prevent time out reset    WDTCTL = WDTPW + WDTHOLD;    ClkInit();        TAPwmInit('A',1,'P','P');   //将定时器TA初始化成为PWM发生器   
发表于 2019-10-09
MSP430程序库<十一>定时器TA的PWM输出
MSP430程序库<十三>硬件乘法器使用
;/***************************************************************************** 名    称:main主程序* 功    能:硬件乘法器程序库使用演示* 入口参数:无* 出口参数:无****************************************************************************/void main( void ){    // Stop watchdog timer to prevent time out reset    WDTCTL = WDTPW + WDTHOLD; 
发表于 2019-10-09
MSP430程序库<十三>硬件乘法器使用
MSP430程序库<十四>DMA程序库
;     case 2: DMA2CTL |= DMAREQ;  break;      //2通道    }}这个和上个函数类似:仅仅设置一个控制位,函数很简单,不再解释啦。程序实现就这么多了,有关详细内容可以下载附件里的程序库,程序的注释很详细。使用示例:使用这个程序时,步骤和原来的相同:工程中加入DMA.c文件,然后源文件中包含DMA.h头文件即可。示例程序主要如下:#include <msp430x16x.h>#include "DMA.h"unsigned int
发表于 2019-10-09
MSP430程序库<十四>DMA程序库
MSP430程序库<十五>Flash控制器
一般,在单片机中的Flash存储器用于存放程序代码,属于只读型存储器。而在MSP430些列的单片机中,都可以通过内置的Flash控制器擦除或改写任何一段的内容。另外,msp430的单片机内部还专门留有一段Flash区域(information memory),用于存放掉电后需要永久保存的数据。利用430内部的Flash控制器,可以完成较大容量的数据记录、用户设置参数在掉电后的保存等功能。硬件介绍:要对Flash读写,首先要了解MSP430的存储器组织。430单片机的存储器组织结构采用冯诺依曼结构,RAM和ROM统一编址在同一寻址空间中,没有代码空间和数据空间之分。一般430的单片机都统一编址在0-64k地址范围中,只有少数高端
发表于 2019-10-09
MSP430程序库<十五>Flash控制器
MSP430程序库<十>ADC12模块
;   ADC12CTL0 &=~ ENC;                      //停止转换        i=0;    }}该程序实现的是多次A0-A2 32次转换,把结果存入results数组。单次时,仅仅采样一次(A0-A2)可用自己更改处理函数。程序部分就完成了,调用时注意要自己实现处理逻辑或存储逻辑。使用示例: 本程序使用方式还是加入C文件,包含H文件;不过和之前的程序不同的是要自己实现中断处理逻辑。使用示例参见程序库中
发表于 2019-10-09
MSP430程序库<十>ADC12模块
基于硅过孔(TSVs)的3D封装技术
  下一代IC设计成本的不断上涨以及随之而来的国外制造技术正在对一种叫“硅过孔(TSVs)”的3D封装技术有浓厚的兴趣。代替了调整,芯片可以通过微小过孔集合垂直堆叠和互连,产生“真实”的3维装置。   IBM、Intel、三星和许多其他的公司都正在致力于此技术,并有充分的理由:基于TSV的3维设计避免了芯片调整过程中的即将发生的“互连危机”。随着互连缩小以至于可以塞进IC设计,他们引起了成问题的时间延迟和电气寄生。早期的基于TSV技术的设计有些昂贵,而且最初瞄准航空航天和军事应用。最终,由于成本的降低,真正的3D芯片可以出现在商业系统,包括下一代蜂窝电话和PDA中。   “产业正在经过可行性(研发)阶段,进入了商业化阶段
发表于 2008-03-16
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved