历史上的今天
返回首页

历史上的今天

今天是:2024年10月09日(星期三)

正在发生

2019年10月09日 | MSP430程序库<十二>SVS(电源电压监控器)模块

2019-10-09 来源:eefocus

电源电压监控对于单片机来说,也是经常要用的模块。当需要稳定的工业级产品时,经常要对电源电压监控,以保证单片机系统工作于正常环境或范围中。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函数移植,比之前做了稍微更改,这些在注释中说明的已经很详细了,这里不在细说。


推荐阅读

史海拾趣

Aerovox Corporation公司的发展小趣事

Aerovox Corporation成立于1922年,是一家专业生产电容器和电子元件的公司。以下是关于Aerovox Corporation发展的五个相关故事:

  1. 成立与初期发展: Aerovox Corporation于1922年在美国马萨诸塞州波士顿成立,最初名为"Northeast Electric Company",后来改名为"Aerovox Corporation"。公司的创始人是W·H·J·Gilbert先生,他致力于开发高性能的电容器。起初,Aerovox主要生产电感线圈和电容器,为无线电和电视等新兴行业提供支持。

  2. 二战期间的发展: 在二战期间,Aerovox Corporation转向军事市场,为美国军方生产电容器和其他电子元件,支持军事通信和雷达系统的发展。这一时期,公司迅速扩张并积累了丰富的技术经验。

  3. 技术创新与扩张: 随着电子技术的不断发展,Aerovox Corporation不断进行技术创新,推出了一系列具有创新性的产品,包括高压电容器、电感器和电源解决方案。公司不仅在军事领域取得了成功,还在民用市场上获得了广泛的应用。

  4. 全球化和市场拓展: Aerovox Corporation通过建立全球销售网络和合作伙伴关系,拓展了国际市场。公司在美国以外的地区设立了生产基地和销售办事处,提供定制化的解决方案,满足客户不断增长的需求。

  5. 持续创新与领先地位: 如今,Aerovox Corporation仍然致力于持续创新,不断开发新的产品和解决方案,以满足不断变化的市场需求。公司在电力电子、医疗设备、工业自动化、交通运输等领域拥有广泛的应用,保持着行业领先地位。

这些故事展示了Aerovox Corporation作为一家具有悠久历史和丰富经验的电子公司,在不同时期和领域的持续发展和创新。

华宇创公司的发展小趣事

面对不断变化的市场环境和客户需求,华宇创始终将创新作为企业发展的核心动力。公司不断投入研发资源,探索新的技术方向和应用场景。同时,华宇创还关注行业发展趋势和未来市场需求,及时调整产品策略和市场布局。展望未来,华宇创将继续秉承创新、品质、合作的理念,致力于成为全球领先的智能电子设备供应商和服务商。

AXSEM公司的发展小趣事

面对不断变化的市场环境和客户需求,华宇创始终将创新作为企业发展的核心动力。公司不断投入研发资源,探索新的技术方向和应用场景。同时,华宇创还关注行业发展趋势和未来市场需求,及时调整产品策略和市场布局。展望未来,华宇创将继续秉承创新、品质、合作的理念,致力于成为全球领先的智能电子设备供应商和服务商。

微芯(CMOSIC)公司的发展小趣事

随着全球化的加速发展,微芯生物也积极开展国际合作与交流。他们与国际知名医药企业、科研机构以及高校建立了紧密的合作关系,共同开展新药研发和技术创新。通过国际合作与交流,微芯生物不仅吸收了国际先进的研发理念和技术经验,还为公司的发展带来了更广阔的市场空间和合作机会。

EXXELIA Group公司的发展小趣事

为了进一步提升研发实力和市场竞争力,微芯生物开始了并购之路。他们先后收购了多家在生物医药领域具有优势的企业,包括专注于生物制品生产和销售的企业、创新药物研发企业以及提供全方位生物医药研发生产外包服务的企业等。通过并购整合,微芯生物不仅增强了自身的研发实力和市场占有率,还进一步完善了公司的产业链和战略布局。

Altera (Intel)公司的发展小趣事

随着产品线的逐渐丰富和技术的不断进步,微芯生物开始积极拓展市场。他们与多家国内外医药企业建立了合作关系,将自主研发的药物推向市场。同时,公司也积极参与各类学术会议和展览,提升品牌知名度和市场影响力。通过不懈的努力,微芯生物逐渐获得了市场的认可和信赖。

问答坊 | AI 解惑

我也是做单片机的,愿意和大家分享学习心得和资料

http://www.51icjm.com http://www.51icjm.com.cn 北京致芯科技是一家专业从事芯片解密和单片机解密技术研究的公司,主要领域包括:单片机解密、专用IC解密、芯片解密,PLD解密,CPLD解密、DSP解密等单片机开发服务、鉴定芯片型号。 部分解密的品 ...…

查看全部问答>

数字集成电路设计入门--从HDL到版图

数字集成电路设计入门7 @4 q; c  e5 s --从HDL到版图 于敦山 北大微电子学系( G. n# y9 N8 T+ B/ F …

查看全部问答>

OR1200存储空间问题

现在基于OR1200的SOPC用了太多外围的器件(如Flash、SDRAM),限制了它在中、小规模嵌入式系统中的应用。 有个想法不知是否可行? 1)将程序的代码和常量放在FPGA片外的NOR Flash芯片中,变量使用FPGA片内的SRAM,省掉SDRAM芯片。 2)OR1200有指 ...…

查看全部问答>

LED通电电流不变,电压逐渐降低

今天调试反激电源的时候发现一个问题: 4*1W的LED通电电流不变350MA,压降13.2V;随着通电时间的增加,电压逐渐降低到12.5V; 这种情况是不是可以解释为 :是不是 LED的阀门电压时随着温度的身高而降低;  …

查看全部问答>

有没有谁用过OSEK/VDX相关的RTOS?有那些?是否有源码的?

有没有谁用过OSEK/VDX相关的RTOS?有那些?是否有源码的?用于那种目标CPU?…

查看全部问答>

请教:单片机读取flash芯片上的命令数据?

我想实现一个功能,就是用一个单片机(如:AVR的),一个flash闪存芯片(容量大的,类似U盘上的那种),我想让单片机通过I/O接口读取放在flash芯片上的命令数据(一个2进制的文件?),然后经过单片机的CPU处理,执行命令,完成指定动作。目的:( ...…

查看全部问答>

结束一个进程后,焦点回主界面了.有分回报

我做了一个主界面程序,点相应按钮就打开一个进程,但关闭进程后,焦点没有停在原按钮上,而是回父窗口了..如何保留焦点,,急啊..大哥们…

查看全部问答>

8kHz/16bits PCM 语音回放失真问题

   最近做一个语音播放的东东,8KHz/16bits PCM 语音信号经过一个16bitPCM DAC 以8KHz的sampling rate playback.发现语音失真很严重,还伴随有噪音.人的语音都变调了很难听.小弟以前没做过语音相关的,不知道怎么解决?还望各位帮忙.   ...…

查看全部问答>

太阳能空调

北方大部分地方冬天都有暖气,因此空调通常都是用在夏天制冷的。但是在环保意识逐渐增强的今天,放着炽热的阳光不利用,让它白白浪费,还要额外花费能量来抵消太阳光产生的热量多少有点令人不解。别着急,我们专利之家今天为大家介绍的这款产品就是 ...…

查看全部问答>

LM3S8962数据表

不知道以前有木有贴过,看到了就放上来了哈…

查看全部问答>