-
很多时候,都是需要软件和硬件的协同工作才能解决问题。
-
我们在做NTC测温电路的时候,如果直接如下图所示连接,那么实际上,计时在未进行AD采集的时候,改电路也一直在消耗电流,按照常温状态下来算,NTC的阻值为10K,那么这部分的电流消耗为:I=3.3V/(10K+10K)=165uA。似乎看起来很小,但是,这只是电路中一部分的消耗,还有其他很多部分都有电流消耗,累加起来之后,就比这165uA大的多了。那么有没有办法让这一部分电路的功耗降低呢?答案肯定是有的。
-
比如,我们可以在3.3V电源部分或者GND部分加一个开关,并且通过一个IO口来直接控制这个开关,在需要进行AD采样的时候,把这个开关打开,采样完成后,再把这个开关关闭,这样一来,似乎就可以尽可能的减小这部分的开销了。
-
这样一来,我们就可以达到之前预期的目的了。当然,如果真如上这样设计电路的话,无形中似乎也增加了成本,一个SI2302也需要一两毛钱,一个电阻也是几分钱,如果是几K甚至几十K的量的话,那么成本就不是一点点了。那么上述电路是不是还可以简化一下呢?那是必须滴!实际上我们可以直接通过一个IO口来接到NTC的一端,毕竟按照之前计算的电流,也才微安级别的,就算忽略掉NTC的阻值,也有R1起到限流的作用,不用担心烧坏IO口。那么,当需要采集AD的时候,直接将IO口拉低,就能实现电阻分压了。
-
由此可见,降低功耗从硬件角度来说,就是需要找到所有可能的消耗电路的回路,一一确定哪些是可以通过软件控制的方式来优化功耗的,哪些是避免不了的,并给编程人员提供一个所有IO口状态对功耗影响的关系,通常用简单的表格说明一下高电平会怎样,低电平会怎样,悬浮会怎样。做到这一点,基本上硬件的工作就告完成,剩下的就是软件开发人员的发挥空间了。
-
说到软件功耗优化,简单来说就是:能少工作的就少工作,能休眠的就休眠!
-
项目中我遇到的问题就是ADC分压电阻损耗
-
公式来计算就是U/回路上所有电阻之和, 代入上图就是5/(R1+R2)=I(这个I就是损耗值),然后再同时放大两个电阻10倍或者以上,可以让损耗电流缩小10倍。