CH579M 定时功能导致高电流

    在测试蓝牙电流时,用CH579EVT\EVT\EXAM\BLE\HeartRate 的例程,#define HAL_SLEEP TRUE。


    在编译后,电流3.5uA。 在设置了定时1秒唤醒后, RTC_TMRFunCfg(Period_1_S); 程序出现了高电流,应该是唤醒后的LowPower_Idle(); 导致高电流。 为何这是的RTC触发不起作用?

    如果改用 DelayUs((1200)/5) 替换RTC_SetTignTime( time )来延时,则睡眠电流有提高了。

    应该如果修改,保存更低的电流?


    

在设置了HAL_SLEEP之后,Toms任务空闲的时候,Toms会调用sleep函数,进入睡眠状态。此时电流为几微安。但是,你使用的是BLE下面的相关例程,蓝牙是在定时广播,此时TMOS任务会定时唤醒它,所以电流会提高,Tmos本身的时钟管理就是基于RTC的,所以RTC时间只能读,不能写,否则会造成之前的任务时间点紊乱,所以你要定时唤醒的话,可以自己设定一个Tmos的定时任务。
Toms的使用说明:WCH TMOS用法详解 - debugdabiaoge - 博客园 (cnblogs.com)

如果你只是想要测量相关的电流,你可以使用PM的例程,这是不包含蓝牙的任务,可以持续睡眠。

如果你是为了更低的功耗,可以调大广播间隔和连接间隔,这样设备在连接事件之间有较长时间的休眠。

这里提供调大广播和连接间隔的参考:http://www.wch.cn/bbs/thread-86487-1.html



   谢谢你的回复。

   我查看了timer的函数,这不是一个周期性重复的函数?我希望得到一个同步于RTC的second时间的事件,去驱动一个任务。

   从数据手册上看,RTC的定时功能,与触发功能应当是独立的?不应当会影响相互的中断。然而,从测试情况看,开启了定时功能后,RTC的触发似乎不起作用了。


RTC的定时和触发是不冲突的,我在PM的例程中进行了定时和触发同时使用,以下可以参考。


初始化:

1648697839155013.png


睡眠函数:

1648697839178018.png


服务函数:

1648697839121113.png


打印情况:

4.png


只有登录才能回复,可以选择微信账号登录