ADC 按键可以用阻值阵列兼顾低功耗唤醒和采样识别

ADC 按键低功耗唤醒设计示意

ADC 按键经常被认为不适合低功耗场景,原因是 MCU 休眠后 ADC 通常关闭,不能持续轮询按键电压。这个判断只看到了采样动作,没有看完整个按键链路。

实际设计可以把 ADC 按键拆成两个阶段:

这样 ADC 不需要一直工作,按键仍然能作为唤醒源。关键点是阻值阵列同时服务两个目标:让每个按键在 ADC 上能分得开,也让每个按键在休眠时都能触发唤醒。

阻值阵列承担两层职责

图中的 ADKEY 节点由 22kΩ 上拉到 3.3V。每个按键按下后,会通过不同的下拉电阻接地:

按键 下拉电阻
SW1
SW2 9.1kΩ
SW3 15kΩ
SW4 24kΩ

这组阻值的选择要同时满足两件事:

因此,ADC 按键用于低功耗应用时,核心设计对象是这组阻值阵列的电压分布。

休眠时不扫描,唤醒后再采样

低功耗按键的工作流程可以压缩成四步:

  1. MCU 进入休眠,ADC 关闭。
  2. WAKE/IRQ GPIO 通过高阻电阻连接到 ADKEY,只负责检测下降沿。
  3. 任意按键按下后,ADKEY 从上拉电平下降到对应分压点,触发中断唤醒。
  4. MCU 醒来后打开 ADC,读取 ADKEY 电压区间,映射为具体按键。

这个流程省电的原因很直接:等待阶段没有 ADC 连续采样,也没有软件轮询。系统只保留中断唤醒路径,真正需要识别按键时才打开 ADC。

图中的 R7 = 220kΩ 用于把 ADKEY 接到 WAKE/IRQ。它的作用是做高阻耦合,让 GPIO 能看到唤醒电平变化,同时尽量不改变原来的 ADC 分压关系。

分压值可以复算

按键按下后的 ADKEY 电压按电阻分压计算:

V_ADKEY = VCC * Rkey / (22k + Rkey)

VCC = 3.3V 时,图中的分压值为:

按键电阻 计算结果 图中标注
0V 0V
9.1kΩ 0.966V ≈ 0.97V
15kΩ 1.338V ≈ 1.34V
24kΩ 1.722V ≈ 1.72V

这些数值与图中标注一致。作为 ADC 识别点,它们之间有足够的间隔,后续可以按电压区间判定 9.1kΩ15kΩ24kΩ 四类按键。

唤醒门限决定最高分压点能不能用

阻值阵列能让 ADC 按键进入低功耗应用,但最终还要受目标芯片的 WAKE/IRQ 输入门限约束。所有有效按键的分压点都要能触发下降沿。

如果芯片低电平输入阈值按常见的 VIL <= 0.3 * VDD 估算,在 3.3V 下大约是 0.99V。此时 15kΩ24kΩ 的分压点会高于这个估算值,可能无法作为可靠低电平。若芯片的唤醒触发门限更高,或 WAKE/IRQ 使用独立比较器阈值,则需要按手册重新判断。

所以这张图的分压计算是正确的,但产品设计还要补一个确认动作:

适用结论

ADC 按键可以用于低功耗应用。省电路径是用阻值阵列把按键动作转换成可唤醒的电平变化,再在 MCU 醒来后短时间采样识别。

这个设计的价值在于复用同一个 ADKEY 节点:

图中的示例可以作为这种思路的说明图使用。使用前需要结合芯片手册确认 WAKE/IRQ 阈值,避免最高电压档只能被 ADC 识别,却不能稳定唤醒系统。

本文由 AI 辅助生成,可能存在错误或遗漏,请以实际资料和官方文档为准。