我的一款MIDI音箱已经实现了MCU自动关机功能,但必须用上一颗“一键开关”IC,但这款IC型号多,规格很乱,没有统一标准,将来生产时容易出错,而且关机后待机电流达到0.3MA,不理想,于是想改用TP223之类的触摸IC来实现,实验还未开始,先去问了一下AI,AI也知道,给了答案,但我觉得方法太传统,太麻烦,有没有其他更简单的办法呢?
问:如何用TP223触摸芯片实现CPU控制自动关的功能?
AI:要用 TTP223 触摸芯片 实现 CPU(MCU)控制自动关机(软开关/一键开关机且支持超时或程序控制自动切断电源),最核心的逻辑是:利用单片机的 GPIO 引脚和外围开关电路(如 PMOS 管或三极管)来锁定和切断主电源。
因为 TTP223 本身只是一个按键检测芯片,它无法直接在单片机死机或定时到期后主动断开供电,必须由 CPU 配合外围电路实现。
以下是实现该功能最经典的硬件电路设计与软件控制流程:
一、 硬件电路设计(核心原理)
我们需要将 TTP223 配置为点动、高电平有效模式(即不触摸时输出低电平,触摸时输出高电平)。通过一个 PMOS 管(或两级三极管)作为整机的电源总开关。
1. 引脚连接关系
TTP223 配置: 将 A、B 两个模式选择焊盘保持断开(默认状态:点动模式、高电平有效)。
TTP223 供电: TTP223 的 VCC 必须接在开关管之前(即直接接电池或常电 VCC_IN),以确保关机状态下它仍能工作并等待唤醒。
CPU 供电: CPU 及其它外设的电源接在开关管之后(VCC_OUT)。
信号交汇: TTP223 的 I/O (SIG) 输出脚与 CPU 的一个 Power_Hold(电源维持)引脚,通过二极管线或(OR)或者三极管驱动电路共同控制电源开关管。
2. 经典电路原理图(以 PMOS 开关为例)
电池正极(VCC_IN)连接到 PMOS 管 (Q1) 的 S 极,同时为 TTP223 供电。
PMOS 管的 D 极输出(VCC_OUT) 供给 CPU。
PMOS 管的 G 极(栅极) 接入一个上拉电阻到 VCC_IN(默认使 PMOS 关闭),同时 G 极通过一个 NPN 三极管 (Q2) 引脚拉低。
关键控制点: 三极管 Q2 的基极(B极)通过两个隔离二极管(或电阻)分别连接:
TTP223 的 SIG 输出脚
CPU 的 GPIO 引脚(命名为 POWER_HOLD)
二、 自动关机的工作流程
1. 开机阶段(触摸开机)
手指触摸:手触摸感应区,TTP223 的 SIG 脚输出高电平。
导通电源:高电平让 Q2 三极管导通,从而将 PMOS (Q1) 的栅极拉低,PMOS 导通,VCC_OUT 产生电压,CPU 上电初始化。
锁死电源:CPU 刚一开机,必须在几百毫秒内(在人手放开触摸前),立即将 POWER_HOLD 引脚配置为输出高电平。此时即便人手移开、TTP223 的 SIG 变回低电平,由于 CPU 输出的高电平依然顶着 Q2,系统仍能维持供电。
2. 运行阶段
正常工作期间,CPU 一直保持 POWER_HOLD 稳稳输出高电平。
3. CPU 控制自动关机阶段(本题核心)
触发条件:当单片机检测到没有操作超时(如 5 分钟无人触摸),或者电池电量过低、或者程序处理完毕时。
执行关机:CPU 将 POWER_HOLD 引脚拉低(输出低电平或配置为高阻态输入)。
切断总线:Q2 随之截止,PMOS 栅极被上拉电阻拉高而关闭,VCC_OUT 瞬间断电,CPU 彻底断电熄灭,实现全自动零功耗关机。
三、 软件伪代码示例
在 CPU 的程序中,需要做如下控制:
c
#define POWER_HOLD_PIN GPIO_PIN_1 // 维持电源的引脚
void main(void) {
// 1. 上电后第一件事:必须立即锁住电源!防止手松开就断电
System_GPIO_Init();
GPIO_WritePin(POWER_HOLD_PIN, GPIO_PIN_SET);
// 2. 正常的系统初始化
Device_Init();
while(1) {
// 正常业务逻辑...
Run_Application();
// 3. 自动关机条件检测(例如:30秒无操作)
if (Get_Idle_Time() > 30000) {
// 执行关机前的保存操作(如保存EEPROM数据)
Save_Data();
// 4. 释放引脚,切断整机电源
GPIO_WritePin(POWER_HOLD_PIN, GPIO_PIN_RESET);
// 进入死循环等待完全断电
while(1);
}
}
}
Use code with caution.
四、 设计注意事项 ⚠️
按键复用检测:开机后,如果还想用这个触摸键当普通功能键(如短按切换模式、长按手动关机),可以把 TTP223 的 SIG 脚同时接到 CPU 的另一个 Input GPIO 引脚上。当人再次触摸时,CPU 就能读取到高电平信号。
关机防死锁:CPU 执行 POWER_HOLD 拉低后,由于电容放电需要时间,CPU 不会立刻断电。后面必须跟一个 while(1); 死循环,防止 CPU 继续执行其他错误程序。
极低待机功耗:关机后,只有 TTP223 在耗电。根据 TTP223 技术文档,它在低功耗模式下的典型电流仅为 1.5μA - 3.0μA,非常适合电池供电设备。
|