APM32芯得 | 基于APM32F411控制的一个软开关电路设计分享
《APM32芯得》系列内容为用户使用APM32系列产品的经验总结,均转载自21ic论坛极海半导体专区,全文未作任何修改,未经原文作者授权禁止转载。
1. 前言
说明:本文介绍的软开关电路,并不是开关电源里面的软开关概念,而是系统供电的开关,结合MCU等控制芯片,控制系统供电的开启或关断。
在某些电子产品的场合,我们经常会需要用到按键长按进行开机,然后按键长按进行关机,或者按键长按之后有触摸屏的可以弹出关机菜单,然后进行关机的操作。这个操作的过程就是软开关电路在控制的。
比如说可穿戴的手环设备,就有一个按键可以长按开机,这时松开了开机键之后也不会掉电。开机之后,长按按键,如果有UI界面的话,可以弹出关机选项,然后选择关机,又或者MCU检测到长按,直接输出控制,关断系统的供电。开机之后,进行关机的操作,就是由这个软开关电路进行控制的。
2. 硬件设计
根据上面的介绍,软开关并不能都只依靠软件来完成,因为当系统电源处于关闭状态时,MCU都还没有供电,此时就只能通过按下开关键,然后等待MCU上电后进行电源的控制,当软件运行起来之后,就算开关键松开了,也可以控制住电源不会掉电。
总结起来,软开关电路的设计需要下面一些条件:
当整个系统处于断电状态,有一个按键可以控制开机
系统开机之后,有一个 GPIO 口可以控制系统电源的打开和关闭
系统开机之后,可以检测到按键长按的状态,然后进行关机动作(如果有UI界面,也可以是UI界面控制关机的动作)
根据上面总结的几个条件,下面我分享一个基于 APM32F411 MCU 控制的一个软开关电路的设计。
2.1 电路原理图
软开关电路设计的思路有很多,我的设计想法是控制电源芯片的 EN (使能)脚,控制使能脚的供电开关,从而控制电源芯片输出电压,给到整个系统进行供电。
下图就是软开关电路的总体电路图:
总体介绍:
该电路的电源输入有:3.7V 电池和 USB 供电两种方式。
软开关控制的思路是,控制SPX3819电源芯片的使能引脚的供电,使能引脚上有电压时,SPX3819 就会有 3.3V 输出,从而给整个系统供电。
当 SW1 按键没有按下时,PMOS管 Q2 的源极和栅极电位相等,Vgs = 0V,不能导通,所以没有电压通过 SPX3819 的使能脚,也就没有 3.3V 输出给系统。
2.2 原理分析
软开关电路控制部分,主要位于左下角的电路。下面我分几种状态,对该电路如何实现了软开关功能进行详细分析。
1)系统关机,SW1按键未按下
当系统处于掉电状态,而且此时 SW1 按键也没有按下,而且控制 NMOS 管 Q3 的栅极控制信号 SYS_POWER_LOCK 此时也是处于低电平的状态,所以 NMOS 管 Q3 关闭。所以,Q2 的 PMOS 管此时的G极(栅极)和S极(源极)电位相等, 即 Q2管 的 Vgs = 0V,也就是说 Q2 管是关闭的,所以 VIN 电压不可能输入到电源芯片的 SPX3819 的使能脚,也就不可能有 3.3V 的输出给整个系统供电,所以此时系统没有供电。
此状态下的等效电路图如下:
2)系统关机,SW1按键按下
当系统处于掉电状态,但是SW1按键按下时,此时的 PMOS 管 Q2 的栅极电压就是二极管 D3 1N5819 的管压降电压,我这里就算它有 0.7V 好了,那么也就是说 Q2 的栅极电位是 Vg = 0.7V,而此时 Q2 的源极电压是 VIN(电源输入电压,3.7V或者5V)。所以 Vgs = -4.3V,Q2 导通,也就是有电压输入到 SPX3819 芯片的使能脚,从而有3.3V电源给整个系统供电。
所以,按下SW1按键,系统开机。
此时的等效电路如下:
3)系统开机,SYS_POWER_LOCK控制信号输出高电平,SW1按键松开
SW1下,有电源给整个整个系统供电之后,此时MCU软件运行,然后马上对 SYS_POWER_LOCK 控制信号,输出高电平,控制 NMOS 管 Q3 导通。
然后这时,用户松开 SW1 按键,但是由于此时 Q3 导通,所以 Q2 管的栅极(G极)电压基本接近 GND (取决于Q3的管压降)。所以,Q2 管依然保持导通的状态,系统供电正常。
此时的等效电路图如下:
4)系统开机,SW1按键按下
当系统已经开机后,此时已经有了3.3V给整个系统供电了。这时再按下SW1按键,又或者是松开 SW1 按键,已经不会再影响系统的电源的开关了,因为此时已经通过 MCU 控制 Q3 NMOS 管导通了,系统的电源会一直保持导通状态。
而此时按下的 SW1 按键,已经可以作为一个普通按键给 MCU 进行识别了,比如是按下状态,是长按状态等,MCU都可以识别。反正此时可以作为一个普通的用户按键使用。
此时的等效电路图如下:
此处需要注意的就是 D2 1N5819 二极管的管压降大小,需要查看MCU数据手册的低电平阈值标准,如果管压降太大,按键按下 MCU 可能也会不认为是低电平。
5)系统开机之后,SYS_POWER_LOCK控制信号输出低电平
系统开机之后,如果 MCU 检测到 SW1 按键的长按状态(又或者有触摸界面的,可以通过触摸界面关闭系统电源),那么 SYS_POWER_LOCK 就输出低电平,此时 Q3 就不导通了。然后这时用户松开 SW1 按键,系统就彻底的断电了,就回到了最前面介绍初始状态 —— 系统断电,SW1按键松开的情况了。
3. 软件设计
软开关电路的设计,相比于硬件而言,软件其实是更简单的,无非就是通过 MCU 控制 SYS_POWER_LOCK 信号的高或者低就可以了。系统开机之后,如果还需要通过检测按键进行关机的,那么还需要检测 SW1 按键的代码。
下面是基于 APM32F411 控制软开关的简单代码示例。
1、 控制 SYS_POWER_LOCK 信号代码,从而控制系统的供电开关。
2、
void power_control_gpio_config(void)
{
GPIO_Config_T gpioConfigStruct;
/* Enable GPIO clock */
RCM_EnableAHB1PeriphClock(RCM_AHB1_PERIPH_GPIOA);
gpioConfigStruct.pin = GPIO_PIN_15;
gpioConfigStruct.mode = GPIO_MODE_OUT;
gpioConfigStruct.speed = GPIO_SPEED_100MHz;
gpioConfigStruct.otype = GPIO_OTYPE_PP;
gpioConfigStruct.pupd = GPIO_PUPD_NOPULL;
GPIO_Config(GPIOA, &gpioConfigStruct);
GPIO_ResetBit(GPIOA, GPIO_PIN_15);
}
/* 系统开机 */
void power_enable(void)
{
GPIO_SetBit(GPIOA, GPIO_PIN_15);
}
/* 系统关机 */
void power_disable(void)
{
GPIO_ResetBit(GPIOA, GPIO_PIN_15);
}
2、检测按键 SW1 按下或者长按的代码,从而决定是否执行关机动作。
static struct Button key1;
static struct Button key2;
static struct Button key3;
void key_gpio_config(void)
{
GPIO_Config_T gpioConfigStruct;
/* Enable GPIO clock */
RCM_EnableAHB1PeriphClock(RCM_AHB1_PERIPH_GPIOB);
/* KEY1/2/3 : PB0/1/2 */
gpioConfigStruct.mode = GPIO_MODE_IN;
gpioConfigStruct.pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2;
gpioConfigStruct.pupd = GPIO_PUPD_UP;
GPIO_Config(GPIOB, &gpioConfigStruct);
}
uint8_t read_key_gpio(uint8_t key_id)
{
uint8_t temp = 1;
switch(key_id)
{
case 0:
temp = GPIO_ReadInputBit(GPIOB, GPIO_PIN_0);
break;
case 1:
temp = GPIO_ReadInputBit(GPIOB, GPIO_PIN_1);
break;
case 2:
temp = GPIO_ReadInputBit(GPIOB, GPIO_PIN_2);
break;
default:
temp = 1;
break;
}
return temp;
}
void key1_callback(void *button)
{
uint32_t btn_event_val;
btn_event_val = get_button_event((struct Button *)button);
switch(btn_event_val)
{
case PRESS_DOWN:
printf("************* key1 press down! *************\n");
break;
case PRESS_UP:
printf("************* key1 press up! *************\n");
break;
case PRESS_REPEAT:
printf("************* key1 press repeat! *************\n");
break;
case SINGLE_CLICK:
printf("************* key1 single click! *************\n");
break;
case DOUBLE_CLICK:
printf("************* key1 double click! *************\n");
break;
case LONG_PRESS_START:
printf("************* key1 long press start! *************\n");
LCD_Fill(0,0,LCD_W,LCD_H,BLACK);
LCD_ShowString(60,LCD_H/2,(uint8_t*)"Shutdown",WHITE,BLACK,32,1); // LCD输出关机提示
delay_ms(1500);
power_disable(); // 检测到按键长按,系统关机
//while (1);
break;
case LONG_PRESS_HOLD:
printf("************* key1 long press hold! *************\n");
break;
}
}
void multi_button_register(void)
{
button_init(&key1, read_key_gpio, 0, KEY1_ID);
button_init(&key2, read_key_gpio, 0, KEY2_ID);
button_init(&key3, read_key_gpio, 0, KEY3_ID);
button_attach(&key1, (PressEvent)PRESS_UP, (BtnCallback)key1_callback);
button_attach(&key1, (PressEvent)LONG_PRESS_START, (BtnCallback)key1_callback);
button_start(&key1);
}
4. 效果演示
以上介绍的软开关电路,已经把对应的实物电路做出来了,而且经过了测试验证,测试没有发现什么问题,可以正常使用。
不过上面的分析也不一定正确,或者电路有什么缺陷还没注意到,如果有错误的地方大家一起讨论。
下面是补充的演示效果图:
首先是系统关机状态,然后长按按键开机,然后 MCU 上电运行程序,屏幕输出开机界面提示,并且 MCU 输出控制信号锁住电源,让系统一直保持供电。这时再松开按键,整个系统的供电依然正常。
开机之后,再长按按键,MCU 检测到按键的长按状态,就会执行关机的操作,然后 LCD 界面输出关机提示,用户看到 LCD 已经提示关机了,这时就松开按键,这时整个系统就断电了。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由samsara转载自Geehy极海半导体公众号,原文标题为:APM32芯得 EP.41 | 基于APM32F411控制的一个软开关电路设计分享,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关研发服务和供应服务
相关推荐
tandby模式下,如何唤醒MCU APM32的RTC与WKUP?
APM32F103系列低功耗模式有三种:睡眠模式、停止模式和待机模式。通过关闭内核、时钟源、设置调压器来降低功耗。本文极海半导体解析了APM32的tandby模式下的RTC唤醒与WKUP唤醒功能如何实现。
设计经验 发布时间 : 2024-01-27
APM32芯得 | 基于极海APM32E103系列MCU的SPI转CAN芯片MCP2515移植测试
极海半导体APM32E103系列MCU支持CAN协议2.0A和2.0B,通信波特率最大为1Mbit/s,并且拥有双CAN接口,能适应更多的应用场合。将杜邦线按照引脚配置,接好线后仿真就能测试回环模式下收发数据了。可以看到断点打到接收部分,可以接收到CAN数据,与发送的数据一致。
设计经验 发布时间 : 2024-11-15
还可以这样玩?极海半导体APM32F411系列MCU与pyocd的火花
前段时间笔者学习了一下如何使用pyocd配合APM32F411VCTINY板在命令行下给它进行各种骚操作,在使用一段时间后就想着:pyocd是基于python的,那是不是也可以使用python脚本+pyocd使用起来呢?本文中极海半导体与大家分享能够自动化完成重复操作的设计经验。
设计经验 发布时间 : 2024-08-29
【应用】极海半导体MCU APM32F103系列用于HMI人机界面,可满足HMI功耗调整、蓝牙通信等需求
本文推荐采用极海半导体推出的APM32F103系列MCU作为HMI人机界面的主控,最高96MHz工作频率,FLASH 256K,SRAM 64K,支持FPU单元;资源丰富,有CRC/RTC/DMA通道,两个DMA;通信接口丰富。
应用方案 发布时间 : 2023-05-25
【选型】APM32F411 MCU的电机控制方案可实现PMSM的无感FOC双电机控制,支持三电阻、单电阻电流采样
面向电机市场,极海半导体APM32F411 双电机控制系统提供了高适用性与高性价比的单芯片控制方案,以满足高端消费电子与工业控制领域的不同需求。随着电机应用产品智能化及物联网升级,极海半导体将持续在产品、方案与支持等各方面寻求创新,为用户打造优质的应用生态环境。
器件选型 发布时间 : 2023-08-22
【视频】极海APM32F407xG系列MCU培训
型号- APM32F405VGT6,APM32F091VCT6,APM32F051K6T6,APM32F091CCT6,APM32F003F6P6,APM32F051K8T6,APM32F103CCT6,APM32F405RGT6,APM32F003F6P7,APM32F103VET6,APM32E103VCT6,APM32F051C8T6,APM32F103RCT6,APM32E103ZET6,APM32F103RCT7,APM32F103VCT6,APM32F103ZET6,APM32E103RCT6,APM32E103VET6,APM32F415RGT6,APM32F407RGT6,APM32F030RCT6,APM32F091RCT6,APM32F003F6U7,APM32E103CET6,APM32F407RET6,APM32F407VGT6,APM32F415VGT6,APM32F407VET6,APM32F051K8U6,APM32F051C8U6,APM32F103TBU6,APM32F417VGT6,APM32F103RET6,APM32F051R8T6,APM32F417ZGT6,APM32F405ZGT6,APM32F051K6U6,APM32F030CCT6,APM32F030C8T6,APM32F103CBT6,APM32F103C8T6,APM32F030K6T6,APM32F030R8T6,APM32F103VBT6,APM32F103RBT6,APM32F407ZET6,APM32F407ZGT6,APM32F072VBT6,APM32F072RBT6,APM32F072RBT7,APM32F415ZGT6,APM32F407IET6,APM32F072CBT6,APM32F407IGT6,APM32F030K6U6,APM32E103RET6
极海半导体APM32F407系列MCU支持国密算法,助力国产安全可控,适用于新能源等领域
极海推出的APM32F407系列MCU,结合当前环境要求,设计出了支持国密算法(SM2,SM3,SM4)的IP, 符合国家密码管理局认定和公布的密码算法标准及其应用规范,并凭借显著的性能优势,已应用至新能源、工业控制、医疗设备等众多领域。
原厂动态 发布时间 : 2023-01-07
极海车规级MCU凭借可靠的产品品质,斩获“2023汽车芯片50强”与“MCU创新先锋”两项大奖
近日,极海车规级MCU凭借可靠的产品品质、专业周到的客户技术支持服务,以及量产级解决方案良好的市场表现,相继斩获“2023汽车芯片50强”、“MCU创新先锋奖”两项行业大奖。作为国内领先的32位车规级芯片设计企业,极海积极布局以服务汽车智能化、电动化、网联化的快速融合。
原厂动态 发布时间 : 2023-11-30
极海半导体(Geehy Semiconductor)微控制器MCU选型指南(英文)
描述- Geehy Semiconductor Co., Ltd. is an IC Fabless company dedicated to developing industrial & automotive-grade MCUs, analog & mixed-signal ICs, and SoCs.
型号- APM32F030,APM32F051K6T6,APM32F4,APM32F405RGT6,APM32F003F6P6,APM32F003F6P7,APM32F103VET6,APM32E103,APM32F103VET7,APM32F051C6T6,APM32F0,APM32 SERIES,APM32F103RCT6,APM32F103RCT7,APM32E103RCT6,APM32E103VET6,APM32F105RCT6,APM32F035,APM32F407RGT6,GALT61120,APM32F030RCT6,APM32E103CET6,AGW32F103T4T6S,GW8811,APM32F407VET6,APM32A407ZGT7,GURC01,APM32A091RCT7,APM32F003F4U6,APM32A091,APM32F411VET6,APM32F051C6U6,APM32F103TBU7,APM32F103TBU6,APM32F107RBT6,G32A1445,APM32F051R8T6,APM32F417ZGT6,APM32F411CET6,G32A,APM32F405ZGT6,APM32F051K6U6,APM32M3514C8T7,APM32F030C8T6,G32A1445UAT0MLL,AGM32F103T4T6S,G32A1445UAT0MLH,APM32F103C8T6,APM32F103RBT7,APM32F411,GW3323HGU6,APM32F030K8T6,APM32F103RBT6,APM32A407,APM32F417,APM32F091CBU6,APM32M3514,APM32F407ZET6,APM32F072VBT6,APM32M3514C8U7,APM32E1,APM32,APM32F091CCU6,APM32E103CEU6,APM32F072R8T6,APM32F003F4M6,GW SERIES,APM32F107RCT6,APM32F072CBT6,APM32F407IGT6,APM32F003,APM32A103VET7,APM32F072CBT7,APM32F105RBT6,APM32F407,APM32F405,APM32F091,APW32F103T4T6S,APM32F405VGT6,APM32F035C8T7,GHD,APM32F072,APM32E103CCT6,APM32F103CCT6,APM32F051K8T6,APM32E103VCT6,APM32F051C8T6,APM32F072CBU6,APM32E103ZET6,GHD3125R,APM32F103VCT6,APM32F103ZET6,GEEHY-LINK,AP/GM/W32F103T4T6S,APM32F107VBT6,APM32A407VGT7,APM32A103,APM32F003F6U7,APM32F407RET6,APM32F407VGT6,GW3323,APM32F003F6U6,APM32F417IGT6,APM32F103T8U6,APM32F051K8U6,APM32F051C8U6,APM32F107,APM32F4T1RET6,APM32F105,APM32F105VCT6,APM32F103,APM32F417VGT6,GHD3440R5,APM32F051R6T6,APM32F103RET6,GHD3440R3,APM32F003F4P6,APM32F035K8T7,GURC,APM32F030CCT6,APM32F030C6T6,APM32F103R8T6,GALT,APM32F051,APM32F103CBT7,G32A1465UAT0MLL,APM32F103CBT6,GHD3440QE,G32A1465UAT0MLH,APM32F030K6T6,APM32F030R8T6,APM32F103VBT6,APM32F030K6T7,APM32F072C8T6,APM32F107VCT6,APM32F103T4T6S,APM32A103CBT7,APM32EF1,APM32F411CEU6,GW8811KEU6,GW8811CEU6,APM32F407ZGT6,APM32F072RBT6,APM32F072RBT7,APM32F003F6M6,GHD3440PF,APM32F407IGH6,APM32E103CCU6,GHD1620T,APM32A103RET7,APM32F105VBT6,APM32F030K6U6,GW,APM32E103RET6,APM32F072C8U6,G32A1465,APM32F072V8T6
【应用】国产极海半导体APM32系列工业级MCU助力推动新型工业化发展
工业级MCU应用场景范围十分广泛,并对使用寿命、温度、湿度、电磁辐射等有着严格的品质要求。极海半导体长期深耕中高端工控市场,本文就以绝对值编码器、高性能伺服驱动器及变频器方案为例,详细介绍极海半导体32位APM32位工业级MCU在工控领域的出色表现。
应用方案 发布时间 : 2022-11-02
【应用】国产工业级高性能MCU APM32F407VGT6用于PLC工控板,主频168MHz,通信外设丰富
某客户主要做各种工业自动控制系统装置,其中一款国产PLC工控板主控要更换成国产物料,推荐极海工业级高性能MCU APM32F407系列,主频高达168MHz、通信外设资源丰富,工作温度范围-40℃到+85℃。
应用方案 发布时间 : 2023-03-14
基于极海半导体APM32F411工业级高适配型MCU的移动电源控制板应用方案
随着技术的发展,消费者对移动电源产品品质和体验提出了更高要求,除了储电量、安全性、便携度等基本要求,更具美观、多功能、人性化等优势的产品才能赢得消费者的青睐。采用极海APM32F411RET6工业级高适配型MCU作为主控的移动电源控制板方案,满足性能、功能、体积等综合设计需求,可帮助客户打造更具性价比和市场竞争力的移动电源产品。
应用方案 发布时间 : 2024-08-14
【应用】极海32位MCU用于光伏逆变器,内置3个精度12位的ADC,主频高达168MHz
极海半导体APM32F407VGT6在硬件上标准LQFP100封装,高达168MHz的主频,独立FPU模块,高达82个I/O,操作简单,提供标准DEMO驱动程序等优点,是光伏逆变器应用或者其他通用MCU场景的优秀选择。
应用方案 发布时间 : 2022-12-23
【应用】基于APM32F030x8系列MCU的手持式激光测距仪应用方案,保障稳定高效运作且提升测量精度
极海半导体APM32F030x8系列MCU手持式激光测距仪应用方案:工业级通用型MCU,基于Arm® Cortex®-M0+内核,集成度高、可靠性好、扩展控制功能强,可满足蓝牙通信、功耗调整以及多样化的测量需求,实现简单、快捷、精准测量。
应用方案 发布时间 : 2022-09-12
极海联亮相2024全球MCU及嵌入式生态发展大会,展出新技术和产品并发表演讲
2024年7月25日,2024全球MCU及嵌入式生态发展大会在深圳君悦酒店举行,由AspenCore主办。极海作为特邀嘉宾在主论坛进行演讲,并展出新技术和产品,包括搭载Arm Cortex M52内核且采用Helium技术的G32R5系列实时控制MCU和针对电机市场的栅极驱动器与APM32M3514系列SoC等新品。
原厂动态 发布时间 : 2024-07-29
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
可烧录IC封装SOP/MSOP/SSOP/TSOP/TSSOP/PLCC/QFP/QFN/MLP/MLF/BGA/CSP/SOT/DFN;IC包装Tray/Tube/Tape;IC厂商不限,交期1-3天。支持IC测试(FT/SLT),管装、托盘装、卷带装包装转换,IC打印标记加工。
最小起订量: 1pcs 提交需求>
登录 | 立即注册
提交评论