1、低功耗刷新策略概述:为什么需要低功耗刷新?刷新功耗的来源分析。
各位同学好,我是你们这趟实战课的老朋友。咱们今天开篇先聊一个看似基础、但实际坑特别多的话题——低功耗刷新。
你可能会想:“刷新不就是把数据从内存搬到屏幕吗?能有多大事?” 嗯,我当年也是这么想的。直到有一次做一款智能手表项目,电池撑不过半天,一测功耗,好家伙,显示刷新占了将近 40%。从那以后,我再也不敢小看“刷新”这两个字了。
1.1 为什么需要低功耗刷新?
说白了,低功耗刷新不是“锦上添花”,而是“雪中送炭”。尤其在嵌入式领域,电池容量就那么点,用户可不会管你底层用了什么 DMA 还是 PSRAM,他们只关心一件事:续航。
我给大家列几个典型场景,你品品:
- 智能手表 / 手环:屏幕常亮显示时间,每秒刷新一次,一年 365 天不关机。如果刷新功耗降不下来,用户一天一充,谁受得了?
- 电子价签:商场里几千个价签,靠纽扣电池供电,要撑 3-5 年。每次刷新都是“烧电”,能不省着点用?
- 便携医疗设备:血糖仪、血氧仪,关键时刻没电,那可是要出大事的。
- IoT 传感器节点:部署在野外,换电池成本比设备本身还高。
核心观点:低功耗刷新不是“能不能做”的问题,而是“不做就活不下去”的问题。尤其是在电池供电的设备上,刷新策略直接决定了产品的市场竞争力。
1.2 刷新功耗的来源分析
要解决问题,先得知道“电都去哪儿了”。我习惯把刷新功耗拆成三个大头:接口传输功耗、存储访问功耗、显示面板自身功耗。咱们一个一个说。
1.2.1 接口传输功耗
这是最容易被忽略的一块。你想想看,每次刷新,数据都要从 MCU 或内存通过 SPI、QSPI、MIPI DSI 等接口传到显示驱动 IC。接口频率越高、数据线越多、翻转率越大,功耗就越高。
举个例子,一个 320x240 的 16 位色屏幕,每秒刷新 60 帧:
- 每帧数据量:320 × 240 × 2 = 153,600 字节
- 每秒数据量:153,600 × 60 ≈ 9.2 MB/s
- 如果 SPI 时钟 40 MHz,每传输 1 位数据,IO 口就要充放电一次
你算算,光是 IO 翻转的功耗,在低功耗场景下就已经很可观了。
我的经验:我曾经在一个项目里,把 SPI 时钟从 40 MHz 降到 20 MHz,帧率不变(靠优化刷新策略),接口功耗直接降了 30%。当然,前提是你的显示驱动 IC 支持。
1.2.2 存储访问功耗
刷新数据总得有个地方放吧?要么是 MCU 内部的 SRAM,要么是外挂的 PSRAM 或 Flash。每次读数据,内存都要“动起来”。
不同类型的存储,功耗差异很大:
| 存储类型 | 典型读功耗 | 特点 |
|---|---|---|
| MCU 内部 SRAM | ~0.5 mW/MHz | 速度快,但容量小,贵 |
| PSRAM(伪静态 RAM) | ~1.2 mW/MHz | 容量大,但需要周期性刷新 |
| NOR Flash | ~2.5 mW/MHz | 非易失,读功耗高,写更慢 |
| SDRAM | ~3.0 mW/MHz | 容量大,但需要持续刷新 |
你看,同样是读数据,选错存储类型,功耗可能差 6 倍。我见过有人用 SDRAM 做电子价签的帧缓冲,结果电池一个月就废了——这就是典型的“杀鸡用牛刀”。
1.2.3 显示面板自身功耗
这个就跟你选的屏幕技术强相关了。不同面板,刷新时的功耗模型完全不一样:
- LCD:背光常亮,刷新主要改变液晶偏转角度。背光功耗是大头,刷新率对功耗影响相对小。
- OLED:自发光,每个像素独立控制。刷新率越高,像素充放电次数越多,功耗线性增长。
- 电子纸(E-Ink):刷新时功耗极高(因为要驱动微胶囊翻转),但刷新完后静态显示几乎不耗电。
- MIP(Memory in Pixel):每个像素自带 1-bit 存储,刷新只改变化的部分,功耗极低。
注意:OLED 在显示白色时功耗最高,黑色最低。如果你做的是 OLED 手表表盘,尽量用深色背景——这不是玄学,是物理。
1.3 刷新功耗的“冰山模型”
为了让大家更直观地理解,我画了一张图。你看,水面上的冰山尖是“面板功耗”,谁都看得见。但水面下藏着更大的“接口功耗”和“存储功耗”,这才是真正吃电的大户。
1.4 刷新功耗的数学表达
做工程的,不能光定性,还得定量。我一般用下面这个简化模型来估算刷新功耗:
P_refresh = P_interface + P_memory + P_panel
其中:
P_interface = C_load × V^2 × f_clock × N_bits × FPS
- C_load:IO 口负载电容(pF)
- V:IO 电压(V)
- f_clock:接口时钟频率(Hz)
- N_bits:每帧传输的总位数
- FPS:每秒刷新帧数
P_memory = E_read × N_reads × FPS
- E_read:单次读操作能耗(J)
- N_reads:每帧读操作次数
P_panel = P_static + P_dynamic × FPS
- P_static:面板静态功耗(背光/待机)
- P_dynamic:每帧动态功耗系数
这个公式虽然简单,但足够帮你在方案选型阶段做快速评估。我每次做新项目,都会先拿这个公式算一遍,心里就有底了。
1.5 低功耗刷新的核心思路
知道了功耗从哪来,那怎么降?其实思路就三条:
- 减少不必要的数据传输:只刷新变化的部分,不刷整帧。这就是后面要讲的“局部刷新”和“差分刷新”。
- 降低接口和存储的活跃度:用 DMA 代替 CPU 搬运数据,让 CPU 多睡觉;用低功耗存储,减少读功耗。
- 匹配面板特性:不同面板用不同的刷新策略。OLED 用深色主题 + 低帧率,电子纸用“刷完就睡”模式。
我的习惯:做低功耗刷新,永远先问三个问题——刷什么?什么时候刷?怎么刷? 把这三个问题想清楚,方案就成功了一半。
1.6 本章小结
这一章咱们把“为什么需要低功耗刷新”和“功耗从哪来”这两个基础问题讲透了。说白了,低功耗刷新不是某个单一技巧,而是一整套从硬件选型到软件策略的系统工程。
后面的章节,我会带大家一步步深入:怎么用 DMA 加速传输、怎么设计局部刷新算法、怎么调优帧率…… 每一步都有我踩过的坑和总结的经验。
好,今天就到这儿。记住那个冰山模型,下次你看到屏幕刷新,脑子里就要浮现出水面下那两块大石头——接口功耗和存储功耗。抓住它们,你就抓住了低功耗刷新的命门。