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端,所以系统还是无法关闭。

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

    关注

    5

    文章

    175

    浏览量

    29992

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

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

收藏 人收藏

    评论

    相关推荐

    两种典型的电池供电电路的设计方案

    本文从设计手持产品的工作实践出发,讨论两种 典型的电池供电 电路的设计情况。## 开关电路的开/关机的过程分为两种情况。
    发表于05-08 11:52 6965次阅读

    几种典型开关电路分享

    开关损耗增大、效率下降和电磁干扰增大等影响。 这就引出了我们今天要讨论的话题—— 开关技术:降低 开关损耗和 开关噪声; 大幅度提高
    发表于04-11 12:01 1.1w次阅读
    几种<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 2896次阅读
    什么是<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 1332次阅读
    <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

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

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

    一种运用开关的Boost电路

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

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

    Boost 电路的一种 开关实现方法 摘要:提出了一种Boost 电路 开关
    发表于07-11 10:12 7310次阅读
    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 22次下载
    <b class='flag-5'>软</b><b class='flag-5'>开关</b>技术的学习课件免费下载

    Buck ZCS开关电路实验

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

    全桥开关

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

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

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

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

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