完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
0.前言
技术和经历经验都有限,以下内容仅供初学者参考和个人总结记录,不定期更新。 都是使能协议栈开启BLE广播的情况 协议栈:s132_nrf52_6.1.1 SDK:nRF5_SDK_15.3.0_59ac345 1.进入低功耗方式 nRF52832进入低功耗或保持低功耗方式比较简单,关闭所有能唤醒的定时器中断(包括但不限于:协议栈模拟定时器app_timer、各种软硬件定时器、RTC)。注:是关闭中断,而非定时器,例如RTC定时器功耗很低,可以不关闭,但是中断要关闭。 注意是唤醒进入定时服务函数的动作要关闭,有的定时器本身可以不关闭(例如RTC,PS:app_timer也是RTC实现的),具体的可以测试。 然后执行下面的函数,仿真打断点发现进入此函数后不再出来,进入低功耗成功。此时功耗最低点可以下降到<30uA。 /**@brief Function for handling the idle state (main loop). * * @details If there is no pending log operation, then sleep until next the next event occurs. */void idle_state_handle(void){ nrf_pwr_mgmt_run();} 硬件上IO口的拉高低问题,所有MCU都差不多,不赘述。 2.如果可能,打开DCDC功能 需要硬件支持,芯片的46、47脚接电感,具体参考手册。 3.有些用到DMA的外设进入低功耗前必须关闭,否则会不断唤醒,功耗激增 比如UART,只要使能(NRF_UART0->ENABLE = 1),就会无法进入休眠,一定要关闭。否则将会导致第1条中的进入低功耗失败。 4.GPIO设置为输入可能并不是最省电的方式 某些情况下,直接输出高或低比设置为输入更省电。 5.硬件SPI可能会与协议栈冲突,导致功耗增加 硬件SPI简单的关闭失能后,还是会导致功耗增高,关闭协议栈后正常,原因未知,正确关闭方法暂时未知,只能暂时使用模拟SPI。 PS:查资料得知,可能是 GPIOTE与TWI(SPI)冲突造成,可以尝试如下方式解决 GPIOTE与TWI(SPI)冲突问题 6.看门狗的坑:可能偷偷复位系统 该芯片看门狗比较特别,开启后就无法软件关闭,此外,在休眠期间协议栈会唤醒CPU导致看门狗会偷偷计数而用户代码完全不知道,如果只是单纯一直休眠而不定期唤醒喂狗,可能会导致系统不久后自动复位。 7.FPU的问题 旧版本的SDK会有这个问题,用最新的就好 8.外部中断的选择 外部中断分为port event(GPIO Sense)和GPIOET,两者功耗可能不一样(前者是低功耗,实测2uA;或者是高功耗,实测9uA) 但是port event的使用局限性比较大,比如:一个IO口进入中断后,除非再解除,否则其他IO口无法检测、只能检测高电平或低电平,且速度不能太快,等 详见: nRF5芯片外设GPIO和GPIOTE介绍 9.待续。 |
|
|
|
只有小组成员才能发言,加入小组>>
2514 浏览 0 评论
1092浏览 2评论
703浏览 1评论
456浏览 0评论
200浏览 0评论
341浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 19:22 , Processed in 1.324577 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号