当前位置:首页 > 电源 > 功率器件
[导读]简介:何为软开关?软开关是相对于硬开关而言。硬开关顾名思义,电源的开断完全取决于硬件,是物理层上的开合;而软开关,则是必须借助于软件,准确地说是借助软件来进行关闭。

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

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

软开关设计 硬件篇

对于软开关而言,在我们按下那一瞬间,因为还没有给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端,所以系统还是无法关闭。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭