7.2 电源管理与低功耗设计


文档摘要

7.2 电源管理与低功耗设计 本节摘要:低功耗设计的核心是把续航目标翻译成平均电流预算,再让系统的唤醒结构去满足这个预算。本节给出功耗的算术、芯片睡眠档位的取舍模型、任务与唤醒源的配合方法,以及频率调节与截止期的权衡公式。 布设在无人区的一台边坡监测终端,太阳能板在雨季连续两周没见到太阳,项目验收标准却在合同里写得明白:设备必须靠内置电池撑过整个雨季。团队面临的不是「如何省电」的泛泛问题,而是一道算术题——把六十天阴雨换算成微安级的平均电流上限,再倒推出系统每一类唤醒活动的配额。本节就把这道题的解法体系化。 功耗的算术:从续航到微安 一切从平均电流开始。电池容量(毫安时)除以目标续航(小时),得到允许的平均电流;

7.2 电源管理与低功耗设计

本节摘要:低功耗设计的核心是把续航目标翻译成平均电流预算,再让系统的唤醒结构去满足这个预算。本节给出功耗的算术、芯片睡眠档位的取舍模型、任务与唤醒源的配合方法,以及频率调节与截止期的权衡公式。

布设在无人区的一台边坡监测终端,太阳能板在雨季连续两周没见到太阳,项目验收标准却在合同里写得明白:设备必须靠内置电池撑过整个雨季。团队面临的不是「如何省电」的泛泛问题,而是一道算术题——把六十天阴雨换算成微安级的平均电流上限,再倒推出系统每一类唤醒活动的配额。本节就把这道题的解法体系化。

功耗的算术:从续航到微安

一切从平均电流开始。电池容量(毫安时)除以目标续航(小时),得到允许的平均电流;实际平均电流等于各状态电流按时间加权:

平均电流 = 活跃电流 × 活跃占空比 + 睡眠电流 × 睡眠占空比 + 各中间档的加权和 续航 = 电池容量 ÷ 平均电流

算式的戏剧性在数量级:典型 MCU 活跃电流几毫安,深睡电流一到几微安,相差三到四个数量级。这意味着平均电流几乎完全由「醒多久」决定——活跃占空比压到千分之一,平均电流就从毫安级跌到微安级。低功耗设计的全部艺术,因此可以浓缩成一句话:把醒着的时间压到业务允许的极限,把睡着时漏电的门全部关上

睡眠档位:关掉什么、留住什么

芯片的睡眠档位是一组「关掉越多、睡得越深、代价越大」的台阶。浅睡档停掉处理器时钟,内存与外设保持,唤醒最快(几微秒),漏电相对高;深睡档停掉大部分时钟域与主稳压器,内存靠保持电压续命,唤醒要走时钟重启流程(几十微秒到毫秒),只允许少数唤醒源;最深档(待机)连内存都不保留,唤醒等于复位重启,电流最低,唤醒后的恢复时间最长。

选档的依据是两问:下一次要响应什么,多快内要响应。浅睡适合毫秒级就要响应的间隔;深睡适合「下一个事件还有几百毫秒以上」的间隙;待机只用于「下次活动以分钟计且可以接受重启恢复」的场景。6.2 节的 tickless 模式正是让任务世界与这套台阶自动对接的机制:下一个到期事件的时间决定了选哪档台阶。

图:睡眠档位阶梯与典型参数

图:睡眠档位阶梯与典型参数

唤醒结构:谁有权把系统叫醒

深睡之后,能叫醒芯片的只剩少数硬件源:实时时钟(定时唤醒)、外部引脚(事件唤醒)、少数保活外设(低功耗串口收 到起始位即醒)。设计唤醒结构就是把系统的每一类事件映射到正确的唤醒源上,规则有三。周期性业务(每小时采样)全部归实时时钟,合并成一次唤醒完成多件事;外部事件(按键、报警线)归引脚,硬件直接唤醒;通信业务归保活外设,让低功耗串口替主芯片值守(收到起始位即醒)。凡是没有硬件唤醒源支撑的「需求」,要么换硬件方案,要么明确接受轮询的功耗代价并写进预算——最怕的是设计文档里没人问过这个问题。

任务世界的配合责任同样明确:所有任务事件驱动化(3.1 节的两种形态),消灭轮询;空闲钩子里执行档位决策;唤醒后的初始化路径(时钟恢复、外设重配)计入第一次响应的延迟——深睡唤醒的「第一毫秒」经常比活跃时慢,截止期从哪个时刻起算要在需求里说死。

频率调节与截止期的反向纠缠

动态调频调压在通用世界里是省电利器,放进实时系统要先过一道算术:降频即降速,同一任务的执行时间与频率成反比,第三章的 WCET 与利用率全要按最低档重算。两条路线各有拥趸:「冲完就睡」主张用最高频把活干完立刻进深睡,活跃时间最短、总能量往往最低,还让 WCET 分析保持简单;「压着跑」主张按截止期把频率降到刚好够用,换取电压降低的平方级功耗收益,代价是分析复杂。单次任务量小、唤醒频繁的系统选前者,单次计算量大的批处理选后者。无论哪条,调频动作本身的时间(稳压器切换、时钟稳定)都要计入。

本节要点回顾

  • 续航目标先翻译成平均电流预算,活跃占空比是唯一的杠杆支点;
  • 睡眠档位按「关掉什么、留什么、醒多快」取舍,选择由下次事件的时间与响应要求共同决定;
  • 唤醒源三路:实时时钟管周期、引脚管事件、保活外设管通信;
  • 无硬件唤醒源的需求要么换方案、要么显式计入预算,不许默认;
  • 降频延长执行时间,WCET 与利用率必须按最低工作档重算;
  • 「冲完就睡」让分析保持简单,是多数实时小负载的默认答案。

常见问题

问:平均电流怎么实测? 串联一个采样电阻加数据采集(或专用功耗分析器),录制完整业务周期的电流波形,按时间加权求平均。万用表的平均档会错过峰值细节,只能做粗筛。

问:唤醒后的第一件事做什么? 恢复时钟精度(切回晶振或等锁相环稳定),再干正事——这段时间计入响应时间。深睡唤醒后的「慢半拍」需求要说清楚:截止期从唤醒引脚有效起算,还是从业务代码第一行起算,两者差着几十微秒。

问:待机档重启与冷启动有区别吗? 电路上有区别(复位源与保持寄存器可传递少量状态),流程上差不多,都要走完整初始化。选待机档前先确认重启时长在业务允许内。

问:外设的漏电怎么排查? 逐个外设断电对比电流:未配置的悬空引脚、模拟外设的偏置、总线的上拉电阻都是常见漏点。数字外围关时钟只是第一步,模拟部分的偏置要显式关闭。

问:调频的电压档与频率档要成对调吗? 要,频率上去了电压跟不上会不稳定,这是芯片手册给的组合表,跳档按表走。实时侧要做的只是把「最低工作档」的执行时间作为 WCET 输入。

问:太阳能供电的系统还要做低功耗设计吗? 更要做:连续阴雨的续航窗口就是电池容量除以平均电流,采集设备的「最坏天气账本」照样用本节的算式。能量采集只是把预算从「一节电池」放宽到「一块电池加一段天气」,算式不变。

问:睡眠档位能动态调吗? 能且应该:tickless 决策本身就是按「下次事件多久到」逐次选档。把档位选择写成函数而非写死在初始化里,系统才对负载变化有弹性。

一份功耗预算表的样例

把本节的算术落成表格(以边坡监测终端为例):行是活动类型(每小时的采样与发送、按键事件、报警检查),列是单次耗时、单次电荷、频次、日均电荷贡献。汇总日均电荷除以二十四小时得平均电流,对照预算判定通过或裁剪。这张表最大的收益是「可协商」:客户要求把上报周期从小时级缩到分钟级时,表格直接告诉你代价是平均电流翻倍,谈判从感觉之争变成数字之辩。功耗、时间、内存三张预算表,构成了嵌入式系统设计的铁三角账本——本教程的截止期主线,正是其中一张的完整展开。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U