0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

软开关设计:典型电路及软件代码

m3eY_edn_china 来源:未知 作者:邓佳佳 2018-03-01 11:29 次阅读

何为软开关?软开关是相对于硬开关而言。硬开关顾名思义,电源的开断完全取决于硬件,是物理层上的开合;而软开关,则是必须借助于软件,准确地说是借助软件来进行关闭。两者各有优劣。

前者因为是物理层的操作,可以讲电源和系统部分完全阻隔,所以关闭时漏电流非常小,但缺陷是关闭时无法给予软件任何通知信息;而后者的关闭只是电平的操作,关闭后无法将电源部分与系统部分隔离,因此相对而言,漏电流会比较大,但优点在于,关闭是由软件进行控制,所以能在关闭前做好相应的准备工作。正是因为此特性,故电子设备来说采用硬开关的设计非常少,更多的是软开关。举个简单的例子,我们常用的家用电脑就是软开关设计。试想加入电脑采用的是硬开关的设计,会是什么结果?

结果估计就如同我们在正常使用电脑时,突然将插头给拔掉一样。这样,对于电脑的设备,特别是硬盘而言,所造成的损害是不可估量的。

软开关设计 硬件篇

对于软开关而言,在我们按下那一瞬间,因为还没有给CPU上电,不存在任何程序执行的可能,所以注定“打开”这一个操作只能用硬件完成。当系统跑起来以后,此时软件已经开始运作,我们就能通过对GPIO进行操作来关闭设备。综上所述,如果要实现软开关,我们必须具备两个GPIO口。一个为DETECT_KEY,作为输入,用来检测按键是否按下;另一个为GPIO_SHDW,作为输出,用来控制电源的闭合。

现在,我们来看一个典型的软开关电路(图一,以下讲解都以电路图的标号为指代):

该电路很简单,对外的节点有四处,分别如下:

PWR_ON:用来控制系统的电源。当其为high时,系统正常供电

VDD33D:直接接3.3V电压

GPIO_SHDW:当其为low时关闭系统电源

DETECT_KEY:检测按键S1的状态。

我们现在根据开机到关机的过程来一步一步来分析该电路:

1.未开机,S1未按下。

此时GPIO_SHDN为low,直接控制了Q1和Q2的控制脚(PIN1),令VDD33D的电压无法输出到POW_ON端。而D1因为S1未按下,该二极管也处于阻隔状态,S1端的VDD33D也无法输送到POW_ON端。故整个系统还处于关闭状态。

2.S1按下,开机。

S1按下,二极管D1导通,S1端的VDD33D电压输送到PWR_ON端,系统开始启动。系统启动时,将GPIO_SHDN置high。此时PWR_ON已经输入了R2,R3端的VDD33D电压,D1两边电压基本上处于平衡状态,D1相当于断开,S1端的电压无法加载到PWR_ON。

3.S1放开,系统正常运行。

S1放开,D1不可能再导通,而此时电压已经主要是从R2,R3端的VDD3D输入,令PWR_ON一直保持high状态,故系统一直处于正常运行状态。

4.S1按下,系统正常运行。

因为S1按下,导致Q3导通,拉低R6端下方的电压,此时DETECT_KEY这个GPIO口检测到电平为low,软件开始进入计时状态。

5.S1放开。

因为S1已经放开,Q3不再导通,R6下端电压恢复,DETECT_KEY检测到电平为high。此时软件和阈值做比较,如果超过预定的阈值,则关闭系统;否则,将本次操作忽略。在这里之所以和阈值进行比较,是出自于防抖的需要。因为在实际使用中,可能R6端会有微小的极为短暂的电压降,如果软件不设置阈值,检测到该电压降就会关闭,这对于产品而言是不允许的。

软开关设计 软件篇

相对于硬件来说,软开关的软件代码更为简单,只需要检测DETECT_KEY即可。该功能的实现主要是通过GPIO,而wince并没有对GPIO做上层定义,并且每款CPU的GPIO的操作方式又各自不同,所以本文无法给出一个完整可用的代码,只能用伪代码作为示例讲解。虽然是伪代码,但对于了解其流程还是有一定的意义。

void Power_On()

{

...

//设置GPIO_SHDN为high

SetGPIO_HIGH(GPIO_SHDN);

...

}

DWORD PWR_IntrThread(PVOID pParam)

{

....

//使能中断

EnableInterrupt();

//初始化中断

InterruptInitialize(btnSysIntr, hNotifyEvent, 0, 0)

while(TRUE)

{

//等待中断事件

dwRet = WaitForSingleObject(hNotifyEvent, INFINITE);

if(dwRet == WAIT_OBJECT_0)

{

//中断处理完毕,让中断再次进入处理

InterruptDone(btnSysIntr);

//再次等待中断处理事件

dwRet = WaitForSingleObject(hNotifyEvent, 1000);

if(dwRet == WAIT_TIMEOUT)

{

//当其位WAIT_TIMEOUT时,意味着为长按,进入poweroff函数

EnterPowerOff();

}

}

}

....

}

void EnterPowerOff()

{

...

while(TRUE)

{

if(IsGPIOHigh(GPIO_DETECT_KEY) != FALSE)

{

//S1已经松开,跳出循环

break;

}

}

//关闭系统电源

SetGPIO_LOW(GPIO_SHDN);

...

}

这里唯一需要注意的是EnterPowerOff函数,在这里必须要检测S1是否已经松开。如果还没有松开S1就将GPIO_SHDN置为LOW,因为S1端还有VDD33D电压输入到PWR_ON端,所以系统还是无法关闭。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软开关
    +关注

    关注

    5

    文章

    176

    浏览量

    30108

原文标题:软开关设计:典型电路及软件代码

文章出处:【微信号:edn-china,微信公众号:EDN电子技术设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    几种典型开关电路分享

    开关损耗增大、效率下降和电磁干扰增大等影响。 这就引出了我们今天要讨论的话题——开关技术:降低开关损耗和开关噪声; 大幅度提高
    发表于 04-11 12:01 1.3w次阅读
    几种<b class='flag-5'>典型</b>的<b class='flag-5'>软</b><b class='flag-5'>开关电路</b>分享

    什么是开关?LLC电路是如何实现开关的?

    与传统PWM(脉宽调节)变换器不同,LLC是一种通过控制开关频率(频率调节)来实现输出电压恒定的谐振电路。它的优点是:实现原边两个主MOS开关的零电压开通(ZVS)和副边整流二极管的零电流关断(ZCS),通过
    发表于 10-26 09:49 4253次阅读
    什么是<b class='flag-5'>软</b><b class='flag-5'>开关</b>?LLC<b class='flag-5'>电路</b>是如何实现<b class='flag-5'>软</b><b class='flag-5'>开关</b>的?

    开关的基本概念及分类 典型开关电路介绍

    开关技术的主要内容有:开关的基本概念、开关电路的分类、
    的头像 发表于 11-22 16:08 2008次阅读
    <b class='flag-5'>软</b><b class='flag-5'>开关</b>的基本概念及分类 <b class='flag-5'>典型</b>的<b class='flag-5'>软</b><b class='flag-5'>开关电路</b>介绍

    开关技术在通信电源中的应用

    开关技术是目前国际国内电力电子领域的研究热点,其在通信电源中也将得到广泛应用。本文综述了开关技术在APFC、DC/DC、DC/AC电路
    发表于 03-10 14:22

    典型电路的Verilog代码介绍

    典型电路的模板1 模板代码1.1 输出时序逻辑的模板代码1.1.1 异步复位的时序电路(用的最多)1.1.2 同步复位的时序
    发表于 02-17 07:11

    开关功率变换器及其应用

    本书对开关功率变换技术进行了较全面详细的讨论,阐述了开关功率变换器发展过程中各阶段典型电路
    发表于 10-23 10:50 0次下载

    开关电源典型电路结构框图

    开关电源典型电路结构框图
    发表于 12-03 21:53 5423次阅读
    <b class='flag-5'>开关</b>电源<b class='flag-5'>典型</b><b class='flag-5'>电路</b>结构框图

    一种运用开关的Boost电路

    一种运用开关的Boost电路 摘要:提出了一种运用开关的Boost电路
    发表于 07-08 11:11 2531次阅读

    Boost电路的一种开关实现方法

    Boost电路的一种开关实现方法 摘要:提出了一种Boost电路开关
    发表于 07-11 10:12 8037次阅读
    Boost<b class='flag-5'>电路</b>的一种<b class='flag-5'>软</b><b class='flag-5'>开关</b>实现方法

    开关技术在通信电源中的应用

    开关技术是目前国际国内电力电子领域的研究热点,其在通信电源中也将得到广泛应用。本文综述了开关技术在APFC、DC/DC、DC/AC电路
    发表于 03-14 23:19 52次下载

    开关技术的学习课件免费下载

    本文档的主要内容详细介绍的是开关技术的学习课件免费下载包括了:第一节 开关的基本概念,第二节
    发表于 11-02 17:30 25次下载
    <b class='flag-5'>软</b><b class='flag-5'>开关</b>技术的学习课件免费下载

    Buck ZCS开关电路实验

    实验目的: 1.加深对零电流准谐振开关电路工作原理的理解; 2.了解零电流准谐振开关电路的调试方法; 3.了解零电流准谐振
    发表于 06-18 14:36 18次下载

    全桥开关

    全桥开关这是我你第一次使用CSDN记录自己的学习历程,今天写一个全桥开关的知识。典型开关电源
    发表于 10-22 11:51 29次下载
    全桥<b class='flag-5'>软</b><b class='flag-5'>开关</b>

    什么是开关?LLC电路是如何实现开关的?

    什么是开关?LLC电路是如何实现开关的? 随着现代电子技术的不断进步和发展,
    的头像 发表于 10-22 12:20 2915次阅读

    什么是硬开关?什么是开关开关开关的优缺点

    什么是硬开关?什么是开关开关开关的优缺点 硬开关
    的头像 发表于 02-20 11:43 7153次阅读