CH592 与 CH585 TMOS 中休眠函数的区别

复制代码
CH592 的低功耗函数 与 CH585 区别    ...... 矜辰所致

前言

上一篇文章,我们以 CH585 为例说明一下 TMOS 模式下的休眠流程以及 TMOS 下外部中断的使用,本来想着去写一下常见应用,串口收发唤醒啊之类的,但是研究了一下发现 CH592 的休眠函数设计与 CH585 不同,觉得有必要研究一下,因为休眠唤醒的流程的不同可能会关系到应用层的设计。

本文我们就来看看 CH592 上的 TMOS 管理的休眠流程与 CH585 上的区别 。

相关博文:
TMOS 自动管理休眠流程说明及外部中断使用

.

我是矜辰所致,全网同名,尽量用心写好每一系列文章,不浮夸,不将就,认真对待学知识的我们,矜辰所致,金石为开!

目录

  • 前言
  • [一、 CH585 休眠流程](#一、 CH585 休眠流程)
  • [二、 CH592 休眠流程说明](#二、 CH592 休眠流程说明)
  • [三、 对实际应用的影响](#三、 对实际应用的影响)
  • 结语

一、 CH585 休眠流程

在上一篇文章 TMOS 自动管理休眠流程说明及外部中断使用 中,我们分析过 CH585 中的 CH58x_LowPower 函数,我们需要知道的几个点有:

  1. CH585 TMOS 中使用的是 WFE 睡眠,通过事件唤醒;
  2. 进入睡眠后屏蔽了中断使能,唤醒后是不能立即进入中断函数的,要延时一定时间等到晶振稳定后才恢复中断,才能进入中断函数;

所以在 CH585 上,唤醒后的这个等待事件是应用层需要考虑到的,无法实现唤醒瞬间就执行中断代码。

我们分析过休眠后程序停止的位置在下面这条语句处:

c 复制代码
 LowPower_Sleep_WFE(RB_PWR_RAM32K | RB_PWR_RAM96K | RB_PWR_EXTEND);

我们可以跳转看一看这个函数,可以更加准确的说明程序休眠停下的位置,如下图:

因为 CH585 示例中屏蔽了中断,唤醒以后从 __nop(); 开始顺序执行,要等到打开中断才会进入中断函数。这个在上一篇文章也有验证过程。

大家可自行跳转查看详细说明:TMOS 自动管理休眠流程说明及外部中断使用

二、 CH592 休眠流程说明

对于 CH592 而言,TMOS 自动管理的休眠进入流程逻辑,代码框架和 CH585 是一致的,我们直接去看启动休眠的函数 CH59x_LowPower

我们继续进入 CH592 这个 LowPower_Sleep 函数里面查看:

我们也可以和测试 CH585 的顺序一样,做个简单的测试验证一下唤醒后是不是先进入中断,再执行 __WFI(); 下面的语句 ,如下图:

通过测试可以很明显的知道,与 CH585 处理方式不同导致的唤醒程序流程不同:

  1. CH592 TMOS 中使用的是 WFI 睡眠,通过中断唤醒;
  2. 唤醒后立即进入唤醒的中断函数执行;

三、 对实际应用的影响

经过分析,我们知道了 CH585 上 WFE 休眠 和 CH592 上额 WFI 休眠唤醒后的程序执行顺序有略微的区别。 对于一般应用来说,基本没有影响,使用 GPIO 唤醒的思路依旧和上一篇文章推荐的方法一致, 特别情况如下说明。

比如串口唤醒这种情况,第一个数据来了,唤醒后的的处理要考虑到 CH585 休眠唤醒进入中断函数会有一定的延时。所以想要唤醒后,正常的接收串口数据,需要应用上做一定的处理,比如自己增加一个标志位,在有第一次中断发生后,就不让程序启动休眠流程 。

结语

本文简单复习了一下 CH585 TMOS 下的休眠流程,然后对比了一下 CH592 TMOS 下的休眠流程,本文的分析只是让大家对休眠唤醒的流程有一个清楚的认知,让大家在处理某些特殊情况的时候能够合理的代码设计。

好了,本文就到这里。谢谢大家!

相关推荐
K成长日志1 天前
BLE不可连接状态--广播态
物联网·网络协议·蓝牙·低功耗·iot·ble
AFinalStone1 个月前
Android 7系统休眠唤醒(六)唤醒全链路
android·电源管理·休眠唤醒
AFinalStone1 个月前
Android 7系统休眠唤醒(七)内核层—wakelock与autosleep机制
android·休眠唤醒
AFinalStone1 个月前
Android 7系统休眠唤醒(八)内核层—Alarm定时唤醒与硬件唤醒源
android·电源管理·休眠唤醒
AFinalStone1 个月前
Android 7系统休眠唤醒(五)休眠全链路
android·电源管理·休眠唤醒
AFinalStone1 个月前
Android 7系统休眠唤醒(二)开机全链路—BootROM到Launcher
android·电源管理·休眠唤醒
齊家治國平天下1 个月前
AAOS 电源管理深度解析:休眠/唤醒/功耗优化
android·车载系统·aaos·aosp·电源管理·休眠唤醒·carpowermanager
无人装备硬件开发爱好者2 个月前
毫瓦级非晶硅光伏板MPPT升压充电方案全解析:从芯片选型到嵌入式软硬件实战
低功耗·mppt·太阳能充电·能量捕获
矜辰所致2 个月前
CH585 ADPCM 音频文件解码播放
音频播放·adpcm·ch585·音频解码·嵌入式语音
故渊at3 个月前
第五板块:Android 系统服务与电源管理 | 第十七篇:Power Manager Service 与 WakeLock 机制
android·pms·系统服务·电源管理·休眠唤醒