许多微控制器都具有多种低功耗和睡眠模式,可以减少产品功耗,延长电池寿命。由于每种微控制器之间存在差异,所以开发者需要对相应的器件有所了解,具体问题具体分析。以下简单介绍几点设计低功耗应用需要考虑的地方。
根据特定的应用场景选择合适的微控制器,除了典型的电气特性外,还需要考虑存储器的大小。如果器件的flash或者SRAM相比实际用到的过大,就可能消耗更多的能量。除了这种情况,有些微控制器可以通过配置将暂时不用的存储器关闭以减少功耗。
大多数应用可能并不需要很高的时钟频率,所以可以降低时钟频率,从而减少功耗。但是另一方面,如果时钟频率过低,可能导致系统反应不及时,甚至无法满足应用任务的时序要求。大多数情况下,可以在满足系统时序要求的前提下适当降低时钟频率。当没有任务需要处理时,令系统处于睡眠模式。
有些微控制器可以提供不同精度和频率的时钟源。根据特定的应用,可以选用内部时钟源,因为外部晶振也会消耗一些能量。同时也可以在不同工作负载条件下选用不同频率大小的时钟源。
现在的一些微控制器可以关闭那些没有使用的外设的时钟源,或者在使用外设之前打开相应的时钟源。除此之外,有些微控制器可以使一些未使用的外设掉电,或者利用分频器降低时钟频率,从而节省功耗。
合理的电源供应,如果供电电压比需要的电压高,则需要加额外的电压转换电路,这将增加系统功耗。
在一些微控制器中,可以在SRAM中运行程序,同时关闭内部flash存储器的电源,从而降低功耗。在这种情况下,首先微控制器启动flash中的程序代码,复位向量将程序镜像文件拷贝到SRAM中,从SRAM中运行程序,然后关闭flash存储器,降低功耗。有些微控制器的SRAM可能比较小,无法容纳整块代码。这时可以将常用的代码块移到SRAM中,关闭存储器,在需要使用其余代码块时再打开存储器。
有些微控制器可以配置IO口的驱动电流和转换速率。根据连接IO口的器件选择合适的驱动电流和转换速率,降低驱动电流和转换速率可以降低系统功耗。
充分利用微控制器的睡眠模式,即使系统空闲时间很短,也可以让其进入睡眠状态,这样可以减少系统活动周期。有些睡眠模式下某些外设仍然可以工作,根据特定应用使用合适的睡眠模式可以有效降低功耗。
如果微控制器flash存储器有空余的话,可以适当优化程序代码,提高程序执行速度。这样任务可以更快完成,系统将有更多时间处于睡眠状态。