GD32待机和深度睡眠模式的区别
非常好的问题 👏,你对GD32的低功耗理解已经进入关键点了——
“Deep-sleep vs Standby 模式到底差多少功耗,哪个最省电?”
下面我给你一个工程师视角的深入分析和功耗对比 👇
🧩 一、三种模式功耗对比(从高到低)
模式 | CPU状态 | 1.2V域 | SRAM/寄存器 | 时钟状态 | 唤醒时间 | 功耗等级 | 典型应用 |
---|---|---|---|---|---|---|---|
睡眠模式 (Sleep) | 停止CPU,外设运行 | 保持供电 | 保留 | 时钟不变 | 最短 | 💡最高功耗 | 等待中断,系统空闲 |
深度睡眠模式 (Deep-sleep) | CPU停止,主时钟关闭 | 保持供电 | 保留 | IRC16M/HXTAL/PLL关闭 | 中等 | ⚙️中等功耗 | 低功耗运行,快速唤醒 |
待机模式 (Standby) | 完全掉电 | 断电(仅备份域供电) | 丢失 | 全部关闭 | 最长 | 🔋最低功耗 | “关机”状态、RTC唤醒 |
⚡ 二、功耗差异分析(定量估计)
下表为 GD32F4系列(Cortex-M4, 240MHz)典型估算值
实际功耗依硬件设计、外设开关、IO状态、LDO配置而异。
模式 | 典型功耗 | 唤醒时间 |
---|---|---|
Sleep Mode | ≈ 2~5 mA(CPU停,外设仍工作) | < 1 µs |
Deep Sleep Mode | ≈ 100~300 µA(LDO低功耗,SRAM保持) | 5~50 µs |
Standby Mode | ≈ 1~5 µA(仅RTC域供电) | 1~10 ms |
🔍 三、核心区别总结
对比项 | 深度睡眠 (Deep Sleep) | 待机 (Standby) |
---|---|---|
1.2V域供电 | 保留 | 关闭 |
SRAM/寄存器 | 保留 | 丢失(除备份SRAM) |
RTC运行 | 可选(需配置LXTAL) | 一般保留(备份域供电) |
外设状态 | 可通过寄存器保留状态唤醒后恢复 | 全部重启,需软件重新初始化 |
唤醒后执行点 | 从睡眠返回点继续执行 | 系统复位,从main() 重新启动 |
功耗级别 | 中 | 最低 |
唤醒速度 | 快(µs级) | 慢(ms级) |
典型场景 | 飞控系统待机、周期唤醒传感器 | 无人机“关机”状态、RTC定时启动 |
⚙️ 四、在无人机系统中的选择建议
需求 | 推荐模式 | 理由 |
---|---|---|
飞行中空闲等待(如任务调度空闲) | Sleep | 外设继续运行,快速唤醒 |
停机但保持任务/数据状态(如地面待机、定期唤醒检测) | Deep Sleep | SRAM保持、唤醒快、功耗低 |
完全关机状态(例如关机储存电池) | Standby | 最低功耗,仅RTC运行 |
🧠 五、一句话总结
功耗排序:Sleep > Deep Sleep ≫ Standby
唤醒速度排序:Standby ≪ Deep Sleep < Sleep所以:
- 想“低功耗运行”→ Deep Sleep
- 想“彻底关机省电”→ Standby
要不要我帮你画一张 三种模式的对比表 + 功耗流向图(标出1.2V域、备份域、外设电源状态)?
这样你能一眼看出 Deep Sleep 和 Standby 在硬件电源分区上的差异。
非常好的追问 👍,这个问题其实是所有做低功耗设计的人最关心的之一。
一句话先说结论:
💡 差别非常大!
不管是功耗、寄存器保留、唤醒机制、系统恢复方式,深度睡眠(Deep-sleep)和待机(Standby)都属于完全不同级别的低功耗模式。
🧩 一、总体对比:不是“更省一点”,而是“完全不同层级”
项目 | 深度睡眠 (Deep-sleep) | 待机 (Standby) | 差距说明 |
---|---|---|---|
1.2V内核域供电 | ✅ 保持供电 | ❌ 断电 | ⚠️ 这是根本性差别:Standby彻底断掉核心电源 |
SRAM/寄存器 | ✅ 全部保留 | ❌ 全部丢失(除备份域) | Standby相当于“掉电重启” |
时钟状态 | 主时钟(PLL/HXTAL)关闭,但IRC16M可唤醒 | 所有主时钟关闭,仅LXTAL或内部低速时钟可保留 | Standby下,几乎只有RTC域在运行 |
唤醒后执行位置 | 从睡眠指令后继续运行 | 从0x00000000 重新启动(复位启动) | Deep-sleep是暂停,Standby是重新开机 |
功耗等级 | 中低(约100~300 µA) | 极低(约1~5 µA) | 相差一个数量级以上 |
唤醒时间 | 快(几微秒到几十微秒) | 慢(毫秒级,需要上电复位) | 约100倍差距 |
唤醒源 | EXTI事件/中断 | WKUP引脚、RTC、NRST、看门狗 | Standby唤醒源更少、更硬件级 |
系统状态恢复 | 内存数据、外设寄存器仍在 | 全部丢失,需重新初始化系统 | Standby无法“继续执行”上次任务 |
典型用途 | MCU周期性休眠、定时唤醒执行任务 | 完全关机/掉电保存、RTC定时唤醒 | 深度睡眠用于“低功耗运行”,待机用于“断电保存” |
🔋 二、功耗差距到底有多大?
以 GD32F450 为例(典型值):
模式 | 功耗(典型) | 差距 |
---|---|---|
深度睡眠模式(LDO低功耗) | ≈ 150~300 µA | — |
待机模式(仅RTC运行) | ≈ 2~5 µA | 🔻 低约 50~100 倍 |
也就是说:
在同样的电池下,进入待机模式的系统理论上可以多待机 数十倍时间。
⚙️ 三、工程上的决策思路
需求 | 推荐模式 | 理由 |
---|---|---|
想要“低功耗运行”——保留RAM状态、快速唤醒 | ✅ 深度睡眠模式 | 唤醒快,不丢数据 |
想要“真正关机”——掉电保存、RTC唤醒 | ✅ 待机模式 | 最低功耗,但系统重启 |
想让系统休眠后继续原任务运行(如FreeRTOS唤醒恢复) | ✅ 深度睡眠 | Standby会复位系统 |
想让电池能放几个月不耗尽 | ✅ 待机 | 极低电流,仅RTC运行 |
🧠 四、形象比喻
模式 | 比喻 |
---|---|
睡眠模式 | CPU“闭眼休息”,外设还在转 |
深度睡眠模式 | CPU“冬眠”,身体机能停了,但生命维持系统(供电)还在 |
待机模式 | 完全“断电关机”,只剩下闹钟能把你叫醒 |
✅ 五、结论总结
项目 | 深度睡眠 | 待机 |
---|---|---|
功耗 | 中等(百微安级) | 极低(微安级) |
唤醒 | 快(µs级) | 慢(ms级) |
RAM保留 | ✅ 是 | ❌ 否 |
系统状态 | 保持 | 丢失 |
RTC运行 | 可选 | 通常保持 |
是否复位 | 否 | 是 |
电源域 | 全保留 | 仅备份域保留 |
适用场景 | 周期性休眠、快速唤醒任务 | 长时间关机、RTC唤醒启动 |
🔹总结一句话:
深度睡眠是“低功耗运行”状态,而待机是“彻底关机”状态。
两者差距非常大——不仅功耗差了几十倍,系统行为也完全不同。
如果你愿意,我可以帮你画一张图(显示Deep-sleep和Standby时 1.2V域、备份域、外设电源状态的区别),
一眼就能看出它们电源级别的不同,要不要我帮你画?