实战经验,Nordic 52832 低功耗模式与唤醒机制

本文介绍了在产品功耗攻关中遇到的Nordic 52832芯片低功耗模式问题。问题一涉及超时后设备重启,解决方案是停止使用EasyDMA的外设。问题二是在睡眠模式下RTC定时器无法准确计时,通过使用外部32.768kHz晶振和sd_app_evt_wait()进入低功耗模式。文章还区分了system off mode和sd_app_evt_wait()的不同,并分享了如何从低功耗模式唤醒。
摘要由CSDN通过智能技术生成

写在前面:最近产品开始在功耗攻关环节,中间出现了很多问题搞得焦头烂额的,通过查阅手册和向大牛们请教才刚刚好理顺了思路,大家有问题可随时交流,QQ:993650814

 

正文:

1、问题一:由于前期方便调试,让产品一直处在持续广播模式,一直未发现问题。设置广播超时之后,理论上如果没有外设连接的话,超时时间timeout之后会切换进入低功耗模式,但是一进去就会重启,原先代码配置如下:

    结果产品进入睡眠之后,就会很快重启,百思不得其解,解决问题的本质还是得回归技术手册,看下面:

    进入睡眠之前一定要将使用EasyDMA的外设停掉,一开始以为只要各外设的时钟关掉就不会存在进睡眠失败的问题,但是手册这么说了就得这么干,把外设停掉之后,问题解决了,产品成功进睡眠。

2、问题二:进睡眠之后,定时器就不跑了,这样每次从睡眠中唤醒的时候(我是用外部中断唤醒的)时间不就不准了,我使用RTC定时器为时间基准来实现日历功能的,当然肯定还有别的更好的方式。

    为了解决这个问题,也只能放弃进入睡眠模式,而是进入另一种低功耗模式,在此模式下,必须使用外部32.768,这样定时器才可以正常跑,调用sd_app_evt_wait();这个接口可让产品进入这个模式。晶振必须选择32.768:配置如下:

 

3、 system off mode 和sd_app_evt_wait()区别: 前者不光core停掉,peripheral也停掉了,等同于关机。

    而d_app_evt_wait();等同于WFE__,core停掉了,但是peripheral可以单独运行。

如果有帮助到你,是否考虑给我一点鼓励呢,我会写出更有质量的文章。多谢。

  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 24
    评论
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KiranWang

一起努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值