热度 6
2021-1-18 20:20
3125 次阅读|
1 个评论
从事嵌入式相关的工作也好几年,陆陆续续做过几个项目的。在这里借此机会,也回顾一下这些年的低功耗探索之路。感谢以下文章给我的提醒 一. 关于低功耗的要点 首先是选型,这个选型包括mcu的选型,包括外设的选型,其中,比如STM328L,或者stm32L 这种就是有着明显区别于同系列其他产品的特质,在于“L” 也就是低功耗,如果他本身达不到这个要求,那你再怎么折腾也无济于事。特别的,选外设的时候,要注意看datasheet,一般都会告诉你他们的功耗可以做到多低。 实现低功耗绝不只是单独的程序或者硬件,需要两者协同。硬件这方面我懂些皮毛,不足以指导各位,软件部分接下来说道说道。 程序的角度来说,低功耗对于设备而言,大家可能都会想到 比如关闭外设时钟,设能外设的低功耗使他进入低功耗模式等等,还有就是降频,这也是行之有效的一种手段。这个就总结为模块本身需要达到低功耗所需要做的准备。 硬件电路部分本人涉及不算多,但从程序角度而言,有些IO需要明确状态。尽量避免设置为悬浮输入,这样会有漏电流。还有就是走线也要注意,这方面大神很多,我就不献丑了。 如果只是以上几点,只能说是进入低功耗的一种手段,但是程序之间各个功能的区分,各个状态之间的转换也是很重要,不能单独把低功耗作为一种"炫技",什么时候可以进入低功耗,什么时候不可以,时序图怎么走,开放人员要很清楚,也要让mcu很清楚。 实现思路,一般来说,有以下2种主要的做法 周期唤醒模式,比如说1s钟唤醒100ms(根据具体的应用场景而定),RTC唤醒。你想想,你一天大半时间都在睡觉,自然功耗就低了。 一直处于睡眠状态,有中断了才去唤醒,比如按键中断等 这个就好像你一直在睡觉 闹钟叫你才起来,你安心睡觉就行,这样功耗也是很低。而且响应及时,是常见的做法。针对这个问题,大多数是通过外设去唤醒的。 二. 关于低功耗的误区 低功耗是用电池供电才需要做的,这显然是错误的,程序一直在高速运行,一直在高温的情况下运行,对于模块本身的寿命也是有很大的损耗。 三. 关于低功耗的注意事项 在设计初期,应该先用最小系统进行测试,保证能达到datashee上面的低功耗要求。然后再逐个添加外设。 有些mcu的低功耗是会丢数据,这样需要做好数据的保存,比如写道flash 四. 关于低功耗的测试方法 据之前做过的一个例子,你需要用到一下两款设备,万用表和直流电源,具体的做法是将 设备串联起来,将万用表打至合适量程的电流档,然后正极接万用表黑色版,万用表红色接模块正极,模块负极接到直流电源负极。注意不要短路!! 打开电源,将电源调整至设备正常工作电压,一般是3.3v或者5v 观察电流表上的度数,可以做些简单计算(正常运行时的电流 * 电压 * 运行时间 + 休眠电流 * 电压 * 休眠时间 ) /(休眠时间 + 运行时间),得到一个单位时间内消耗的功率有多少 感谢大家,有问题望不吝赐教,期待您的回复